Die fmz-Plattform verfügt nicht über eine Stopp-Loss-Funktion. Die Stopp-Loss-Funktion muss auf die andere Funktionsoberfläche der Börse aufgerufen werden, und die Stopp-Loss-Einstellungen der verschiedenen Börsen sind unterschiedlich. Die Funktion des Stop-Loss ist besonders wichtig, da sie hohe Zahlungsgebühren und die Möglichkeit einer Explosion in extremen Fällen vermeidet, ohne dass der Marktpreis ausgelöst wird. Die Funktion berücksichtigt die Gesamtposition und berücksichtigt auch die U-Bits-Botschaft.
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
Mingxi1005Wie werden die Parameter eingestellt? Kann ich mich in meinen bestehenden Strategie-Roboter integrieren?
Diouf31Ich habe gelernt
xxs1xxs1Ich möchte die Kommentare löschen.
xxs1xxs1Wie benutzt man das? Das ist nicht wichtig, wenn man es nur lädt? Ist das Python?