pyquotex is a Python library designed to easily integrate with the Quotex API, enabling automated trading operations. Fully open-source and licensed under MIT, the library provides features like order execution, balance checking, real-time market data collection, and more. Perfect for traders and developers looking to build efficient and customized solutions.
async def get_candles(asset, end_from_time, offset, period):
"""
Recupera velas históricas para un activo específico (hasta 200 velas).
Parámetros:
- asset: str - Nombre del activo (ej: "EURUSD_otc")
- end_from_time: int - Timestamp final
- offset: int - Desplazamiento en segundos (ej: 3600)
- period: int - Período en segundos (ej: 60)
"""
candles = await client.get_candles(asset, end_from_time, offset, period)
async def get_historical_candles(asset, amount_of_seconds, period, max_workers=5, progress_callback=None):
"""
Recupera datos históricos extensos usando workers paralelos.
Garantiza que no haya huecos usando un enfoque híbrido paralelo-secuencial.
Parámetros:
- asset: str - Nombre del activo
- amount_of_seconds: int - Tiempo total de historial en segundos
- period: int - Timeframe de la vela
- max_workers: int - Número de buscadores paralelos (por defecto: 5)
- progress_callback: callable - (completed, total, count, worker_id)
"""
candles = await client.get_historical_candles(
asset="EURUSD_otc",
amount_of_seconds=86400, # 24 horas
period=60,
max_workers=5 # Recomendado: 2 a 5
)
[!CAUTION] Aviso de Seguridad: El uso de demasiados workers simultáneos (ej: > 10) puede resultar en el baneo de su cuenta por parte de Quotex debido al alto volumen de solicitudes al WebSocket. Recomendamos mantener entre 2 a 5 workers para mayor seguridad.
async def get_realtime_candle():
asset = "EURUSD_otc"
period = 5 # segundos [60, 120, 180, 240, 300, 600, 900, 1800, 3600, 14400, 86400]
candles = await client.get_realtime_candles(asset_name, period)
def start_candles_stream(asset, period=0):
client.start_candles_stream(asset, period)
client.follow_candle(asset)
def stop_candles_stream(asset):
client.unsubscribe_realtime_candle(asset)
client.unfollow_candle(asset)
async def get_realtime_sentiment(asset):
"""
Obtiene el sentimiento del mercado para un activo.
Retorna un diccionario con porcentajes de compra/venta.
"""
sentiment = await client.get_realtime_sentiment(asset_name)
# Ejemplo de respuesta: {"sentiment": {"sell": 40, "buy": 60}}
async def get_realtime_price():
asset = "EURJPY_otc"
await client.start_realtime_price(asset, 60)
candle_price = await client.get_realtime_price(asset_name)
# Retorna último precio y timestamp
async def get_signal_data():
client.start_signals_data()
signals = client.get_signal_data()
# Retorna señales disponibles del mercado
def get_all_asset_name():
assets = client.get_all_asset_name()
# Retorna lista de todos los activos disponibles
def get_payment():
all_data = client.get_payment()
# Retorna información de payouts y estado de cada activo
async def check_asset_open(asset_name):
"""
Verifica si un activo está disponible para operar.
Retorna:
- Tupla con (ID, nombre, estado_apertura)
- estado_apertura es booleano (True si está abierto)
"""
asset_status = await client.check_asset_open(asset_name)
async def get_available_asset(asset_name, force_open=True):
"""
Obtiene un activo y verifica su disponibilidad.
Si force_open es True y el activo está cerrado, intenta con versión OTC.
"""
asset_name, asset_data = await client.get_available_asset(asset_name, force_open=True)
async def basic_market_data_flow():
# Conectar
check_connect, message = await client.connect()
if check_connect:
# Verificar activo
asset = "EURUSD_otc"
asset_name, asset_data = await client.get_available_asset(asset, force_open=True)
if asset_data[2]: # Si está abierto
# Iniciar stream
client.start_candles_stream(asset_name, 60)
# Obtener datos
candles = await client.get_realtime_candles(asset_name, 60)
sentiment = await client.get_realtime_sentiment(asset_name)
price = await client.get_realtime_price(asset_name)
# Procesar datos...
# Detener stream
client.stop_candles_stream(asset_name)
await cliente.close()