4
ध्यान केंद्रित करना
1271
समर्थक

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

में बनाया: 2020-02-05 10:02:03, को अपडेट: 2023-10-12 21:20:47
comments   1
hits   2701

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

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

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

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

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

रणनीति विवरण

निर्देशों के जावास्क्रिप्ट संस्करण से उद्धरण:

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

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

रणनीति कोड

'''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

इस रणनीति के पैरामीटर जावास्क्रिप्ट संस्करण के समान ही हैं। रणनीति कोड को भी वाक्य दर वाक्य प्रत्यारोपित किया गया है, और कार्यक्रम संरचना में कोई बदलाव नहीं किया गया है। आप अलग-अलग तरीकों से लिखी गई रणनीतियों के बीच अंतर देखने के लिए वाक्य दर वाक्य उनकी तुलना कर सकते हैं। भाषाएँ.

बैकटेस्टिंग

पैरामीटर कॉन्फ़िगरेशन एकल मंच संतुलन रणनीति का पायथन संस्करण

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

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

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

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