La plataforma fmz no tiene una función de stop loss, por lo que se necesita llamar a otras funciones de la interfaz del intercambio cuando se necesita establecer un stop loss, y las configuraciones de stop loss de los diferentes intercambios son diferentes, por lo que se realiza el siguiente paquete. La función de contención de pérdidas es especialmente importante, ya que evita las altas tarifas de tramitación y evita la posibilidad de una explosión en casos extremos. La función tiene en cuenta el total de las posiciones de compra y compra, y también tiene en cuenta el valor de la moneda en U.
import json # 对合约进行止盈止损 cangType=0默认逐仓 =1全仓 def zhiyingzhisun(ex, amount, directionStr, zhiying, zhisun, cangType = 0): if ex.GetName().find('OK') >= 0 : # okex return okexSwap(ex, amount, directionStr, zhiying, zhisun) elif ex.GetName().find('Huobi') >= 0 : # huobi return huobiSwap(ex, amount, directionStr, zhiying, zhisun, cangType) elif ex.GetName().find('Binance') >= 0 : # bian return bianSwap(ex, amount, directionStr, zhiying, zhisun) else: return False # 发送请求 def AsynIo(ex, paramList): if (len(paramList) == 3): arrRoutine = ex.Go("IO", paramList[0], paramList[1], paramList[2]) elif (len(paramList) == 4): arrRoutine = ex.Go("IO", paramList[0], paramList[1], paramList[2], paramList[3]) elif (len(paramList) == 5): arrRoutine = ex.Go("IO", paramList[0], paramList[1], paramList[2], paramList[3], paramList[4]) data, ok = arrRoutine.wait() return data # 火币合约 def huobiSwap(ex, amount, directionStr, zhiying, zhisun, cangType): instrument_id = ex.GetCurrency().replace('_',"-") # 根据全仓或逐仓 与 U本位或币本位,设置请求url if instrument_id.find('USDT') >= 0 : if cangType == 0: url = "/linear-swap-api/v1/swap_tpsl_order" elif cangType == 1: url = '/linear-swap-api/v1/swap_cross_tpsl_order' else: return False elif instrument_id.find('USD') >= 0 : url = "/swap-api/v1/swap_tpsl_order" else: return False # 发送请求 data = AsynIo(ex, ['api', 'POST', url, '', json.dumps({ "contract_code": instrument_id, "direction": directionStr, "volume" : amount, "tp_order_price": zhiying, "tp_trigger_price": zhiying, "sl_trigger_price": zhisun, "sl_order_price": zhisun, })]) if data["status"] == 'ok': return True else: return False # 币安合约 def bianSwap(ex, amount, directionStr, zhiying, zhisun): instrument_id = ex.GetCurrency().replace('_',"") # U本位或币本位,设置请求url if instrument_id.find('USDT') >= 0 : url = "/fapi/v1/order" elif instrument_id.find('USD') >= 0 : url = '/dapi/v1/order' else: return False # 止损 zhisunData = AsynIo(ex, ['api', 'POST', url , '', json.dumps({ "symbol": instrument_id, "side": directionStr, "type": "STOP", "quantity": amount, "price": zhisun, "stopPrice": zhisun, "timestamp": str(int(round(time.time() * 1000))) })]) if int(zhisunData['stopPrice']) != int(zhisun): return False # 止盈 zhiyingData = AsynIo(ex, ['api', 'POST', url , '', json.dumps({ "symbol": instrument_id, "side": direction, "type": "TAKE_PROFIT", "quantity": amount, "price": zhiying, "stopPrice": zhiying, "timestamp": str(int(round(time.time() * 1000))) })]) if int(zhiyingData['stopPrice']) != int(zhiying): return False return True # 欧易合约 def okexSwap(ex, amount, directionStr, zhiying, zhisun): instrument_id = ex.GetCurrency().replace('_',"-") + '-SWAP' # 获取仓位方向 if directionStr == 'buy': direction = '4' elif directionStr == 'sell': direction = '3' else: return False data = AsynIo(ex, ['api', 'POST', '/v1/order/orders/place', '', json.dumps({ "instrument_id": instrument_id, "type": direction, "order_type": '5', "size": amount, "tp_trigger_price": zhiying, "tp_price": zhiying, "sl_trigger_price": zhisun, "sl_price": zhisun })]) if data["error_code"] == "0": return True else: return False ext.zhiyingzhisun = zhiyingzhisun
el mismo número de unidades.¿Cómo configurar los parámetros? ¿Se puede integrar en mi bot estratégico existente?
- ¿Qué quieres decir?Aprendió
Se trata de la siguiente información:Quiero borrar el comentario.
Se trata de la siguiente información:¿Cómo usarlo? ¿No importa sólo con la carga? ¿Es Python? Si no hay el concepto de stop loss no hay que pensar en usar esto, tiene este concepto simplemente escribir una sentencia por sí mismo