تین بڑی ایکسچینجوں کے لئے سٹاپ نقصان انٹیگریٹڈ لائبریری

مصنف:لائیٹ فلائی، تاریخ: 2021-03-11 22:37:54
ٹیگز:آلہ

ایف ایم زیڈ پلیٹ فارم میں اسٹاپ ٹاپ نقصان کی خصوصیت نہیں ہے ، اسٹاپ ٹاپ نقصان کو ترتیب دینے کے لئے ایکسچینج کے دوسرے فنکشنل انٹرفیس کو کال کرنے کی ضرورت ہوتی ہے ، اور مختلف ایکسچینجز میں اسٹاپ ٹاپ نقصان کی ترتیبات مختلف ہوتی ہیں ، لہذا مندرجہ ذیل پیکج کیا جاتا ہے۔ نقصان کی روک تھام کی خاص طور پر اہم خصوصیت یہ ہے کہ یہ مارکیٹ کی قیمتوں کے بغیر ٹرگر کی وجہ سے اعلی ٹرانزیکشن فیسوں سے بچنے اور انتہائی صورت حال میں دھماکے کے امکان سے بچنے کے لئے ہے. اس فنکشن میں اسٹاک کی پوری تعداد کو مدنظر رکھا گیا ہے اور اس میں یو بٹ کے بٹ کو بھی مدنظر رکھا گیا ہے۔


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

متعلقہ

مزید

مینگسی1005کیا میں اپنی موجودہ حکمت عملی روبوٹ میں ضم کر سکتا ہوں؟

ڈف31سیکھا

ایکس ایکس ایکس ایکس ایکسمیں اپنی رائے کو حذف کرنا چاہتا ہوں۔

ایکس ایکس ایکس ایکس ایکساگر آپ کے پاس کوئی سٹاپ نقصان کا تصور نہیں ہے تو ، آپ کو اس کا استعمال کرنے کی ضرورت نہیں ہے۔ آپ کو صرف لوڈ کرنے کی ضرورت نہیں ہے۔ کیا یہ پییٹون ہے؟