Platform fmz tidak mempunyai fungsi stop loss, apabila anda perlu menetapkan stop loss, anda perlu memanggil antara muka fungsi lain bursa, dan penyesuaian stop loss antara bursa yang berbeza, oleh itu dibuat sebagai berikut. Fungsi penangguhan kerugian sangat penting kerana ia mengelakkan caj pembayaran yang tinggi tanpa mencetuskan harga pasaran dan juga mengelakkan kemungkinan ledakan dalam keadaan yang melampau. Fungsi ini mengambil kira keseluruhan saham secara berturut-turut, dan juga mengambil kira kedudukan mata wang 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
Mingxi1005Bagaimana untuk menetapkan parameter? Adakah ia boleh disatukan ke dalam bot strategi saya yang sedia ada?
Diouf31Belajar
xxs1xxs1Saya ingin memadam komen tersebut.
xxs1xxs1Bagaimana untuk menggunakannya? Ia tidak penting hanya dengan memuat? Adakah ini Python? Jika tidak ada konsep penghentian, tidak perlu berfikir untuk menggunakan ini, mempunyai konsep ini hanya menulis sendiri kesimpulan