रणनीतिक पता: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
इस रणनीति के पैरामीटर जावास्क्रिप्ट संस्करण के साथ पूरी तरह से संगत हैं। रणनीति कोड भी वाक्य द्वारा वाक्य प्रत्यारोपित किया जाता है। कार्यक्रम संरचना नहीं बदली है। आप विभिन्न भाषाओं में लिखी गई रणनीतियों की तुलना वाक्य द्वारा वाक्य कर सकते हैं।
पैरामीटर विन्यास
सांख्यिकी
रणनीतिक पता:https://www.fmz.com/strategy/183374
यह रणनीति केवल संदर्भ, सीखने और बैक टेस्टिंग के लिए है. यदि आप रुचि रखते हैं, तो आप इसे अनुकूलित और अपग्रेड कर सकते हैं.