एफएमजेड क्वांटिफाइड प्लेटफॉर्म रणनीति लेखन प्रारंभिक ट्यूटोरियल (एक देखना चाहिए)

लेखक:घास, बनाया गयाः 2019-08-13 17:47:27, अद्यतन किया गयाः 2021-08-06 10:29:46

इतिहास के लाइन जानकारी. इस तंत्र का नुकसान स्पष्ट हैः एक के लाइन पर, केवल एक बार खरीद और बिक्री उत्पन्न की जा सकती है, आमतौर पर मूल्य के लाइन के समापन मूल्य पर आधारित है। और एक के लाइन केवल चार कीमतों तक पहुंच सकती है, और एक के लाइन के भीतर कीमत कैसे बदलती है, सबसे अधिक कीमत पहले होती है या सबसे कम कीमत पहले होती है आदि के बारे में कोई जानकारी नहीं मिलती है। उदाहरण के लिए, 1 घंटे के लाइन में, वास्तविक समय में निश्चित रूप से हर कुछ सेकंड में एक बार चल रही जानकारी प्राप्त होती है, ट्रेडिंग निर्देशों को डिस्क में समाप्त होने के बजाय जारी किया जाता है। ऑनबार रीडायरेक्शन तंत्र को समझना आसान है, रीडायरेक्शन बहुत तेज़ है।

FMZ प्लेटफ़ॉर्म दो प्रकार के एनालॉग-स्तरीय और वास्तविक-डिस्क-स्तरीय रीसेट को रीसेट करता है। एनालॉग-स्तरीय रीसेट आधारभूत K-लाइन चक्र के आधार पर एक एनालॉग उत्पन्न करता है। प्रत्येक आधारभूत K-लाइन चक्र पर 14 रीसेट समय बिंदु उत्पन्न होंगे।जबकि वास्तविक डिस्क स्तर वास्तविक एकत्रित टिक है, जो लगभग हर कुछ सेकंड में एक बार होता है, वर्तमान में वास्तविक गहराई ((20 फ़ील्ड शामिल हैं) और वास्तविक एक-एक लेनदेन का समर्थन करता है।बड़ी मात्रा में डेटा, धीमी गति से पुनरावृत्ति, इसलिए विशेष रूप से लंबे समय तक पुनरावृत्ति संभव नहीं है। FMZ के पुनरावृत्ति तंत्र से रणनीति एक K लाइन पर कई बार लेनदेन कर सकती है, जिससे केवल बंद मूल्य लेनदेन की स्थिति से बचा जा सकता है, और अधिक सटीक और पुनरावृत्ति की गति को ध्यान में रखती है।https://www.fmz.com/digest-topic/4009

पुनरावृत्ति की नीति का ढांचा वास्तविक डिस्क के समान है, यह एक मृत चक्र है। चूंकि पुनरावृत्ति विभिन्न पुनरावृत्ति बिंदुओं पर कूदती है, इस समय नींद का उपयोग किए बिना किया जा सकता है, एक चक्र के अंत में स्वचालित रूप से अगले समय बिंदु पर कूद जाता है। लेकिन पायथन को प्रोग्रामिंग तंत्र के कारण एक अनिवार्य पुनरावृत्ति की आवश्यकता होती है।Sleep(10)इस तरह की घटनाओं में से एक है।

पुनः परीक्षण की तस्वीरें

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

पुनः परीक्षण पृष्ठ सेटिंग्स

img

  • 1.回测页面的选择,左侧是策略编辑页面。
  • 2.回测起始结束时间,由于数据不完整,回测可能直接从有数据的时间开始。
  • 3.回测GetRecords()फ़ंक्शन के डिफ़ॉल्ट चक्र को कोड में चक्र पैरामीटर के रूप में भी निर्दिष्ट किया जा सकता है.
  • 4.回测机制的选择。
  • 5.展示或隐藏跟多回测设置。
  • 6.最大日志数、收益数据数、图表数据数等,为了防止数据量过大导致浏览器卡死。
  • 6.底层tick生成依据K线周期。
  • 7.交易滑点。
  • 7.容错,会模拟API请求出错情况,检查策略容错能力。
  • 8.是否绘制行情图标,回测中如果使用了TA指标函数,会自展示在图标上,买卖也会标记。
  • 9.手续费设置
  • 10. एक्सचेंज जोड़ें - लेन-देन जोड़े और संपत्ति।
  • 11.回测参数设置,如果参数是数字还支持一键优化参数,自动按照一定范围遍历参数回测。

वास्तविक डिस्क से अलग

  • 1.回测时有效的行情只有GetTicker和GetRecords,其它如获深度、成交历史都不是真实的(因为数据量太大,实盘级回测目前已经支持这些数据,但只有最近数据)。
  • 2.回测添加的交易所都是独立账户,目前不支持切换交易对。因此无法在一个账户里操作两个交易对。
  • 3.回测中无法使用网络请求。
  • 4.回测无法使用IO扩展,只能操作最基础的API。
  • 5.回测只能获取标准的数据,像Info之类的牵扯到实盘的数据不存在。
  • 6.回测中也有可能不成交,注意冻结订单情况。
  • 7.商品期货回测不支持市价单。

रणनीतिक गलतियों और आम गलतियों को स्वीकार करना

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

अक्सर गलत तरीके से स्वीकार करना

आम गलत कारणः

  • एपीआई नेटवर्क एक्सेस त्रुटि, इंटरफ़ेस एक्सेस ओवरटाइम null लौटाएगा, इस समय उपयोग करने पर त्रुटि रिपोर्ट करेगा।
  • एक्सचेंजों द्वारा सीमित त्रुटियां, जैसे कि आईपी सीमा, ऑर्डर की सटीकता, पहुंच की आवृत्ति, पैरामीटर की त्रुटि, कम संपत्ति, बाजार में व्यापार करने में असमर्थता, लेनदेन किए गए आदेशों को रद्द करना आदि। एपीआई दस्तावेजों को विशेष रूप से त्रुटि कोड के आधार पर देखा जा सकता है।
  • एक्सचेंजों ने डेटा में त्रुटियां लौटाई हैं, जो कभी-कभी होती हैं, जैसे कि रिक्त लौटाई गई गहराई, विलंबित खाता जानकारी, विलंबित ऑर्डर की स्थिति आदि।
  • यह एक त्रुटि है।

एपीआई का उपयोग करके डेटा वापस करने से पहले, यह तय करना आवश्यक है कि यह शून्य है या नहीं।

//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker 获取出错');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2.判断不为null再进行引用
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3._C()函数重试
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4. try catch容错
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker 获取出错');
 } 

यदि आप गलत जानकारी प्राप्त करना चाहते हैं तो आप इसका उपयोग कर सकते हैं।GetLastError(), पिछले त्रुटि संदेश स्ट्रिंग को लौटाता है, और त्रुटियों के लिए अंतर प्रसंस्करण किया जा सकता है.

अक्सर पूछे जाने वाले प्रश्न

इस ब्लॉग के शीर्ष पोस्ट में कई सामान्य गलत सारांश दिए गए हैंःhttps://www.fmz.com/bbs-topic/1427यहाँ कुछ सारांश दिए गए हैं, यदि आपको कोई समस्या है तो आप Ctrl + F खोज कर सकते हैं।

ट्रस्ट को कैसे रखा जाए?

इसके बारे में अधिक जानकारी Add Administrator में दी गई है।

क्या आप किसी भी तरह की एनोटेशन रणनीति बना सकते हैं?

https://www.fmz.com/marketsकुछ लोगों को लिपि सेवाएं या समूह में परामर्श की आवश्यकता होती है, और वे अपने जोखिम पर संपर्क करना चाहते हैं।

सभी इंटरफेस तक पहुँचने पर टाइमआउट का संकेत मिलता है

एक्सचेंज इंटरफेस का उपयोग करने का मतलब है, यदि कभी-कभी कोई समस्या नहीं होती है, तो विदेशी सर्वर का उपयोग करने की आवश्यकता होती है, यदि लगातार संकेत दिया जाता है कि जिस नेटवर्क पर आप हैं, उसे एक्सेस नहीं किया जा सकता है।

ERR_INVALID_POSITION त्रुटि

पुनर्मूल्यांकन प्रणाली त्रुटि रिपोर्ट करता है, आमतौर पर रणनीति के लिए त्रुटि लिखता है, जब कोई होल्डिंग नहीं होती है या पर्याप्त संख्या में होल्डिंग नहीं होती है, तो एक ब्रीफिंग की कोशिश करने से यह त्रुटि उत्पन्न होती है।

चिह्न सेट नहीं

फ्यूचर्स एक्सचेंजों का पुनर्मूल्यांकन, कोड में कोई अनुबंध सेट नहीं किया गया है, देखें exchange.SetContractType फ़ंक्शन

BITMEX 429 त्रुटि, {error:{message:Rate limit exceeded retry in 1 seconds......}}

एक्सचेंज इंटरफेस पर जाने की आवृत्ति बहुत अधिक है।

{status:6004,msg:टाइमस्टैम्प सीमा से बाहर है}

सर्वर टाइमलाइन सीमा से बाहर है, सर्वर समय को अद्यतन करने की आवश्यकता है, बहुत अधिक विचलन नहीं हो सकता है

GetOrder ((455284455): त्रुटिः अमान्य आदेश आईडी या आदेश रद्द कर दिया गया.

कुछ एक्सचेंजों के ऑर्डर रद्द हो जाते हैं और एक्सचेंज इस ऑर्डर की जानकारी को बनाए नहीं रखता है और इसे प्राप्त नहीं कर सकता है।

GetOrders: 400: {code:-1121,msg:अमान्य प्रतीक.}

अमान्य लेन-देन जोड़ी, जांच कर रही है कि क्या लेन-देन जोड़ी सेटिंग त्रुटि है।

गुप्त कुंजी डिक्रिप्ट विफल रहा

API KEY हल करने में विफलता, यदि आप APIKEY को कॉन्फ़िगर करने के बाद FMZ पासवर्ड को संशोधित करते हैं, तो FMZ में एक्सचेंज पेज जोड़ने का प्रयास करें और एक्सचेंज APIKEY को फिर से कॉन्फ़िगर करें।

Signature not valid: अमान्य सबमिशन समय या गलत समय प्रारूप

Linux सर्वर का उपयोग करने की सलाह दी जाती है, या Windows सिस्टम पर इन समस्याओं के साथ समय-समन्वय सॉफ़्टवेयर स्थापित करें।

क्यों एक वैश्विक एजेंट स्थापित किया गया है, और trustee को एक्सचेंज एपीआई का उपयोग करने की अनुमति नहीं है?

वैश्विक एजेंटों के पास एजेंट होस्टिंग नेटवर्क पोर्ट नहीं है, इसलिए देरी के कारण विदेशी सर्वरों को तैनात करने के लिए होस्टिंग बेहतर है

कैसे एक रणनीति को स्थानीय रूप से बनाए रखा जा सकता है, अपलोड किए गए एफएमजेड पर नहीं?

पायथन का उपयोग करके स्थानीय फ़ाइलों को आयात किया जा सकता है, सामान्य रूप से एफएमजेड एपीआई के आधार पर लिखी गई नीतियों को अपने सर्वर पर निष्पादन पथ के नीचे फ़ाइलों में सहेजा जा सकता है, और सीधे निष्पादन को पढ़ा जा सकता है।

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

एक्सचेंजों के परीक्षण नेटवर्क का उपयोग कैसे करें या एपीआई आधार पते को बदलें

Exchange.SetBase () का उपयोग करके सीधे संबंधित एपीआई आधार पते पर स्विच करें, जैसेः

exchange.SetBase("https://www.okex.me")

अधिक

गॉन्चेरएपीआई

विज्ञानस्थानीय रूप से नीति को कैसे लागू करें? मैंने एक सरल लॉग आउटपुट कथन लिखा है, और वाक्य के अंत में संचालन का पालन किया है। पहला कदम, सर्वर के रूप में एक लैपटॉप का उपयोग करके होस्टिंग प्रोग्राम चलाना है। दूसरा चरण, एक सरल लॉग आउटपुट जानकारी के लिए एक test.py प्रोग्राम लिखना (एफएमजेड के लिए एपीआई इंटरफ़ेस फ़ंक्शन); तीसरा चरण, पाठ के अंत में, एक runfile लिखें, जिसे run.py पर कॉल करके test.py चलाएं. /upload/asset/1add39483ef82d45b3ce3.png

ग्लिप9मैं नेटीजी क्लाउड क्वांटिफाइंग ट्रेडिंग कोर्स खरीदता हूं, अब मैं कहां जा रहा हूं?

मोनुराजकअनेक

मोनुराजकहाय

भाईसीखना

wqyएक छोटा सा टेक्स्ट त्रुटि है, GetAccount खाता प्राप्त करता है, और FrozenStocks के बारे में जानकारी में, फ्रीज बैलेंस होना चाहिए, उपलब्ध बैलेंस नहीं।

मेजर जयाgetorder outtime ऑर्डर आउटटाइम प्राप्त करें, ओकेएक्स के एक्सचेंजों, कैसे करें

उड़ी के 12 उच्च युक्तियाँगारंटीकृत परिसंपत्ति की दर 0% के लिए बाध्य बेंचमार्क की गारंटीकृत परिसंपत्ति की दर नहीं मिल सकता है

शिफेंग2020मैं 1 मिनट के स्ट्रिंग ऑपरेशन को देख रहा हूं, इसलिए पायथन के मृत चक्र के लिए नींद का समय 0.1s पर सेट किया जा सकता है, यानी नींद ((100) क्या मैंने देखा कि आपने इसमें एक नींद ((10) लिखी है, यानी 0.1s हुओबी एचएम के एपीआई सीमा से अधिक नहीं होगा?

पूर्वी वेंटिलेशनexchange.SetDirection (("closebuy"); // यदि स्थायी अनुबंध है, तो सीधे exchange.SetDirection (("sell") सेट करें यहाँ मैंने ओकेएक्स के स्थायी अनुबंध का परीक्षण किया है, अगर इसे बेचने के लिए सेट किया गया है, तो यह सीधे खाली हो जाता है, और यह बहुत सस्ता नहीं है।

पूर्वी वेंटिलेशनexchange.SetDirection (("closebuy"); // यदि स्थायी अनुबंध है, तो सीधे exchange.SetDirection (("sell") सेट करें यहाँ मैंने ओकेएक्स के स्थायी अनुबंध का परीक्षण किया है, अगर इसे बेचने के लिए सेट किया गया है, तो यह सीधे खाली हो जाता है, और यह बहुत सस्ता नहीं है।

पूर्वी वेंटिलेशनGetOrders के कोड में दो वर्तनी त्रुटियां हैं. एक function को fuction में लिखा गया है और दूसरा for लूप की शर्तों में लिखा गया है.

पूर्वी वेंटिलेशनयह मेरी गलती है। exchange.Buy ((-1, 0.5), ट्रेडिंग जोड़ी ETH_BTC है, और बाजार सूची 0.5BTC के लिए ETH खरीदने का प्रतिनिधित्व करती है exchange.Buy ((price, 0.5), यदि यह सीमा सूची है, तो यह मूल्य के साथ 0.5ETH खरीदने का प्रतिनिधित्व करता है

पूर्वी वेंटिलेशनexchange.Buy ((-1, 0.5), ट्रेडिंग जोड़ी ETH_BTC है, जो बाजार मूल्य पर 0.5BTC के ETH को खरीदने का प्रतिनिधित्व करती है यहाँ यह 0.5ETH के लिए बाजार मूल्य पर खरीदा जाना चाहिए।

ग्लिप9धन्यवाद.

घासयह सब नेट पर उपलब्ध है https://study.163.com/course/courseMain.htm?share=2&shareId=400000000602076&courseId=1006074239&_trace_c_p_k2_=c3f5d238efc3457d93c8b92c0398d2b2

घासहोम पेज पर WeChat जोड़ें, आपको समूह में लाएं

wqyकभी-कभी समस्याएं आती हैं और मुझे नहीं पता कि मुझे कहां पूछना है।

घासबदल गया

घासपुनः प्राप्त करें

घासआप GetRawJSON का उपयोग कर सकते हैं या फ़ील्ड में जानकारी देख सकते हैं

पूर्वी वेंटिलेशनबहुत बढ़िया, और मैनेजमेंट का जवाब भी। मुझे कोड में कई वर्तनी त्रुटियां मिली हैं, हाहा।

घासओह, यह सही है, गलतियों को इंगित करने के लिए धन्यवाद।

घासकुछ स्थायी अनुबंध दो तरफा होल्डिंग की अनुमति देते हैं, जिन्हें एक समतल सेटअप की आवश्यकता होती है। मैंने अपडेट किया, पहले केवल बिटमेक्स था।