es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cancelar una orden de take profit cuando se activa una orden de stop loss usando python binance.

Cómo cancelar una orden de take profit cuando se activa una orden de stop loss utilizando Python en Binance?

En el trading futuro, he abierto una posición larga y he colocado una orden de take profit y una orden de stop loss.

He utilizado el siguiente código para abrir la posición larga:

client.futures_create_order(symbol=BTCBUSD, side='BUY', type='MARKET', positionSide='LONG', quantity=0.002054)

El código anterior funcionó correctamente.

Mi problema es que cuando una de las órdenes ha sido activada y ejecutada, la posición se cierra, pero la otra orden permanece abierta en la lista de órdenes abiertas.

En mi caso, la orden de stop loss se activa y la posición ya ha sido cerrada en consecuencia. Pero la orden de take profit sigue abierta.

Mi pregunta es, ¿cómo cancelar la orden de take profit una vez que se llena la orden de stop loss, ya que no se está abriendo más posición?

He utilizado el siguiente código para colocar una orden de take profit y una orden de stop loss (TP/SL):

Es decir, en el momento de abrir la posición, el precio de BTCBUSD es igual a 48662.40

client.futures_create_order(symbol=ticker, side='SELL', type='TAKE_PROFIT_MARKET', positionSide='LONG', stopPrice=46700, closePosition='true')

client.futures_create_order(symbol=BTCBUSD, side='SELL', type='STOP_MARKET', positionSide='LONG', stopPrice=46660, closePosition='true')
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cancelar la orden de take profit una vez que se haya activado y completado la orden de stop loss, puede utilizar el método cancel_order en la API de Binance.

    Primero, necesitarás saber el ID de la orden de take profit. Puedes obtenerlo utilizando el método futures_get_open_orders en la API de Binance. Una vez que tengas el ID de la orden, puedes utilizarlo para cancelar la orden llamando al método cancel_order en la API de Binance.

    Aquí tienes un ejemplo de cómo podrías implementar esto en tu código:

    # Abrir posición
    client.futures_create_order(symbol=BTCBUSD, side='BUY', type='MARKET', positionSide='LONG', quantity=0.002054)
    
    # Colocar órdenes de take profit y stop loss
    tp_order = client.futures_create_order(symbol=ticker, side='SELL', type='TAKE_PROFIT_MARKET', positionSide='LONG', stopPrice=46700, closePosition='true')
    sl_order = client.futures_create_order(symbol=BTCBUSD, side='SELL', type='STOP_MARKET', positionSide='LONG',stopPrice=46660, closePosition='true')
    
    # Comprobar la activación de la orden de stop loss
    while True:
        open_orders = client.futures_get_open_orders(symbol=BTCBUSD)
        if len(open_orders) == 0:
            # Todas las órdenes han sido completadas
            break
        for order in open_orders:
            if order['orderId'] == sl_order['orderId'] and order['status'] == 'FILLED':
                # La orden de stop loss ha sido activada y completada
                # Cancelar la orden de take profit
                client.futures_cancel_order(symbol=ticker, orderId=tp_order['orderId'])
    

    Este código verificará continuamente la activación de la orden de stop loss hasta que se haya completado. Una vez que se haya completado, el código cancelará la orden de take profit utilizando el método cancel_order en la API de Binance.

Comments are closed.