इस रणनीति का पताःhttps://www.fmz.com/strategy/345
इस लेख में, हम एक सरल जावास्क्रिप्ट नीति को स्थानांतरित करने के लिए अभ्यास करेंगे। पोर्ट नीति के माध्यम से, आविष्कारकों को व्यापार मंच इंटरफेस के लिए कॉल करने के बारे में अधिक जानकारी प्राप्त होगी, और प्लेटफॉर्म विकास नीति के दौरान विभिन्न भाषाओं के बीच मामूली अंतर को समझेंगे। वास्तव में जावास्क्रिप्ट संस्करण की नीति और पायथन संस्करण की नीति में बहुत कम अंतर है क्योंकि इंटरफ़ेस कॉल मूल रूप से समान हैं।
जावास्क्रिप्ट संस्करण से उद्धरणः
यह एक भंडारण की आवश्यकता है, उदाहरण के लिए, एक खाते में 5000 डॉलर हैं, और एक सिक्का, अगर सिक्का का मूल्य खाते में शेष राशि से अधिक है 5000 और मूल्य का अंतर है, तो यह $ 6000 है, तो इसे बेच दें, उदाहरण के लिए, 6000-5000 / 6000 / 2 सिक्का, यह बताता है कि सिक्का बढ़ गया है, इसे वापस ले लो, अगर सिक्का गिर गया है, उदाहरण के लिए, $ 4000 / 4000 / 4 / 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
यह रणनीति केवल संदर्भ सीखने, पुनः परीक्षण और उन्नयन को अनुकूलित करने में रुचि रखने वाले लोगों के लिए है।
स्वर्ग से धनअच्छी गाय