
रणनीति पता: 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
यह रणनीति केवल संदर्भ, बैकटेस्टिंग और परीक्षण के लिए है। यदि आप रुचि रखते हैं, तो आप इसे अनुकूलित और अपग्रेड कर सकते हैं।