पायथन संस्करण का एकल मंच संतुलन रणनीति

लेखक:लिडिया, बनाया गयाः 2022-12-02 21:38:52, अद्यतन किया गयाः 2023-09-20 11:14:48

img

जावास्क्रिप्ट संस्करण

रणनीतिक पता:https://www.fmz.com/strategy/345

इस लेख में, आइए एक सरल जावास्क्रिप्ट रणनीति को पोर्ट करने का अभ्यास करें। रणनीति पोर्टिंग के माध्यम से, हम एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म इंटरफ़ेस की कॉल से अधिक परिचित हो सकते हैं, और प्लेटफ़ॉर्म विकास रणनीति में विभिन्न भाषाओं के बीच मामूली अंतर को समझ सकते हैं। वास्तव में, जावास्क्रिप्ट संस्करण और पायथन संस्करण के बीच अंतर बहुत कम है, क्योंकि इंटरफ़ेस कॉल मूल रूप से समान हैं।

रणनीति का वर्णन

जावास्क्रिप्ट संस्करण से उद्धृत विवरणः

उदाहरण के लिए, यदि खाते में 5000 युआन और एक मुद्रा है, तो मुद्रा का मूल्य खाता शेष 5000 युआन से अधिक है और मूल्य अंतर सीमा मूल्य से अधिक है, उदाहरण के लिए, यदि मुद्रा अब 6000 युआन के लायक है, तो (6000-5000) / 6000/2 मुद्राओं को बेचें, यह दर्शाता है कि मुद्रा मूल्यवान हो गई है और हम पैसे वापस परिवर्तित कर सकते हैं। यदि मुद्रा मूल्यह्रास हुई है, उदाहरण के लिए, 4000 युआन, तो हम (5000-4000) / 4000/2 मुद्राओं को खरीदते हैं। यदि मुद्रा कम हो जाती है, तो कुछ खरीदें। यदि यह फिर से बढ़ जाती है, फिर से बेचें, शेष राशि की तरह, दोनों पक्षों में अलग-अलग हेज हैं, इसलिए मैं इसे संतुलन रणनीति कहता हूं।

रणनीति का सिद्धांत बहुत सरल है। जावास्क्रिप्ट संस्करण का कोड लंबा नहीं है, केवल 70 से अधिक पंक्तियां हैं। अधिक संक्षिप्त व्याकरण के साथ पायथन भाषा रणनीति प्रत्यारोपित की जाती है, और कोड बहुत छोटा है, जो शुरुआती सीखने के लिए बहुत उपयुक्त है। एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर डेवलपर्स द्वारा साझा किया गया बहुत सारा कोड है, और भाषा का समर्थन करती हैJavaScript/C++/Pythonइसलिए, अधिक विकास भाषाओं में महारत हासिल करना न केवल सीखने, अनुसंधान और विकास रणनीतियों के लिए उपयोगी है, बल्कि मंच के विभिन्न एपीआई इंटरफेस से भी परिचित है।

रणनीति संहिता

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

InitAccount = None

def CancelPendingOrders():
    ret = False
    while True:
        orders = _C(exchange.GetOrders)
        if len(orders) == 0 :
            return ret

        for j in range(len(orders)):
            exchange.CancelOrder(orders[j].Id)
            ret = True
            if j < len(orders) - 1:
                Sleep(Interval)
    return ret 

def onTick():
    acc = _C(exchange.GetAccount)
    ticker = _C(exchange.GetTicker)
    spread = ticker.Sell - ticker.Buy
    diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
    ratio = diffAsset / acc.Balance
    LogStatus("ratio:", ratio, _D())
    if abs(ratio) < threshold:
        return False
    if ratio > 0 :
        buyPrice = _N(ticker.Sell + spread, ZPrecision)
        buyAmount = _N(diffAsset / buyPrice, XPrecision)
        if buyAmount < MinStock:
            return False
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
    else :
        sellPrice = _N(ticker.Buy - spread, ZPrecision)
        sellAmount = _N(-diffAsset / sellPrice, XPrecision)
        if sellAmount < MinStock:
            return False 
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
    return True

def main():
    global InitAccount, LoopInterval
    InitAccount = _C(exchange.GetAccount)
    LoopInterval = max(LoopInterval, 1)
    while True:
        if onTick():
            Sleep(1000)
            CancelPendingOrders()
            Log(_C(exchange.GetAccount))
        Sleep(LoopInterval * 1000)

कोड के साथ शुरू होता है

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

यह बैकटेस्टिंग कॉन्फ़िगरेशन को संदर्भित करता है, जिसका अर्थ है कि बैकटेस्टिंग कॉन्फ़िगरेशन (सेटिंग्स) को कोड के रूप में सहेजा जाता है और बैकटेस्टिंग के दौरान सेटिंग के अनुसार स्वचालित रूप से कॉन्फ़िगर किया जाता है। इस भाग को हटाया जा सकता है। यदि यह हटा दिया जाता है, तो हमें बैकटेस्टिंग पृष्ठ पर बैकटेस्टिंग कॉन्फ़िगरेशन जानकारी को मैन्युअल रूप से सेट करने की आवश्यकता है। संदर्भःhttps://www.fmz.com/bbs-topic/859

इस रणनीति के पैरामीटर जावास्क्रिप्ट संस्करण के साथ पूरी तरह से संगत हैं। रणनीति कोड भी वाक्य द्वारा वाक्य प्रत्यारोपित किया जाता है। कार्यक्रम संरचना नहीं बदली है। आप विभिन्न भाषाओं में लिखी गई रणनीतियों की तुलना वाक्य द्वारा वाक्य कर सकते हैं।

बैकटेस्टिंग

पैरामीटर विन्यास

img

सांख्यिकी

img img

रणनीतिक पता:https://www.fmz.com/strategy/183374

यह रणनीति केवल संदर्भ, सीखने और बैक टेस्टिंग के लिए है. यदि आप रुचि रखते हैं, तो आप इसे अनुकूलित और अपग्रेड कर सकते हैं.


संबंधित

अधिक