आविष्कारक एपीआई दस्तावेज को मात्रात्मक बनाते हैं

लेखक:छोटे सपने, बनाया गयाः 2017-11-27 09:05:08, अद्यतन किया गयाः 2023-07-12 16:47:31

[TOC]

मूल विवरण

प्रवेश

FMZ क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म क्या कर सकता है?

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

पूरी श्रृंखला

फोटो ट्यूटोरियलः

वीडियो ट्यूटोरियलः

अगर आपको कोई समस्या है तो आप किसी भी समय मंच पर जा सकते हैं और सवाल पूछ सकते हैं, चर्चा कर सकते हैं, प्लेटफॉर्म पर वर्कआउट कर सकते हैं, टेलीग्राम पर जा सकते हैं।तार@group@administrator, सामान्य तौर पर प्रश्नों का उत्तर जल्दी दिया जाता है।

चैट जीपीटी सहायता विकास का समर्थन करें

FMZ क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म ChatGPT को एक सहायक विकास उपकरण के रूप में शामिल करता है, जिसे "कंट्रोल सेंटर" के शॉर्टकट बटन में क्लिक करके "ChatGPT" पर जा सकता है।चैट जीपीटी सहायक उपकरण पृष्ठ

क्या मैं अपनी रणनीति को लागू करने के लिए कौन सी प्रोग्रामिंग भाषाओं का उपयोग कर सकता हूं?

एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का समर्थनJavaScriptTypeScriptPythonC++PINE麦语言Blockly可视化एक डिजाइन रणनीति लिखना।

समर्थनTypeScriptभाषा, जो रणनीति बनाने के समय अभी भी सेट हैJavaScriptरणनीति, और फिर रणनीति कोड के शुरू में लिखें// @ts-checkया नीति संपादित क्षेत्र के ऊपरी दाएं कोने में "TypeScript" बटन पर क्लिक करें।TypeScript⇒ प्लेटफॉर्म स्वचालित रूप से कोड को पहचानता हैTypeScriptऔर आप के लिए उपयुक्त संकलन और प्रकार जाँच समर्थन प्रदान करता हैः

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

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

Blocklyविज़ुअलाइज़ेशन ट्यूटोरियलः

सेटिंग्सPythonरणनीति कार्यक्रम का उपयोग कियाPythonव्याख्याकार

उपयोगPythonलिखित नीति, पुनः परीक्षण या वास्तविक डिस्क पर यदि होस्ट के सिस्टम वातावरण में एक साथ स्थापित किया गया हैपायथन2औरपायथन3, नीति शुरू करने के लिए पहली पंक्ति में शुरू किया जा सकता है जब नीति चल रही हैPythonउदाहरण के लिएः#!python3#!python2यदि आप एक स्पष्टीकरण के लिए एक पूर्ण पथ निर्दिष्ट करते हैं, तो यह स्वचालित रूप से व्याख्याकार को ढूंढता है।#!/usr/bin/python3

क्या है संरक्षक?

संरक्षकसमझ में आता है कि यह आपकी ट्रेडिंग रणनीति का निष्पादक है, जो जटिल डेटा अनुरोधों, डेटा प्राप्त करने, नेटवर्क लिंक, लॉग रिटर्न आदि के लिए जिम्मेदार है। प्रबंधक आपके सर्वर पर चल रहा है, भले ही एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म साइट में नेटवर्क की विफलता आपके प्रबंधक के संचालन को प्रभावित न करे। प्रबंधक आपके सर्वर पर चल सकता है।लिनक्सखिड़कियाँमैक ओएसएंड्रॉयडARM लिनक्सऔर इसी तरह के सिस्टम पर।संरक्षक पृष्ठलिनक्स व्यवस्थापक स्थापित करने और व्यवस्थापक अद्यतन करने के लिए कदम⇒ प्रबंधक द्वारा प्रबंधित वास्तविक डिस्क लॉग को प्रबंधक प्रक्रियाओं की सूची में रखा जाता है./logs/storageअंदर, दस्तावेज़ हैdb3काSqliteडेटाबेस फ़ाइलों में प्रयोग किया जा सकता है.Sqliteइस विस्तार के लिए नामित हैdb3फ़ाइल का नाम वास्तविक डिस्क पर हैID

समर्थित समझौते

  • ब्लॉकचेन संपत्तिः अब 50 से अधिक प्रमुख ब्लॉकचेन संपत्ति (डिजिटल मुद्रा) एक्सचेंजों का समर्थन किया गया है।
  • सामान्य प्रोटोकॉल का उपयोग करेंःसामान्य समझौता

रणनीतिक सुरक्षा

एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर रणनीति विकसित करें, जो केवल एफएमजेड क्वांटिफाइड खाताधारकों के लिए दिखाई देती है। और एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर रणनीति कोड का पूर्ण स्थानीयकरण संभव है, जैसे कि रणनीति को एक में पैक करना।Pythonपैकेज को नीति कोड में लोड किया जाता है, जिससे नीति स्थानीयकरण संभव हो जाता है।

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

Pythonइस तरह की एक रणनीति को कोड में एन्क्रिप्ट करेंः डिफ़ॉल्ट रूप से,Pythonनीति कोड लेखक स्वयं के उपयोग के लिए एन्क्रिप्ट नहीं करते हैं, दूसरों को उपयोग के लिए किराए पर देते हैं।Pythonनीति प्रारंभ करने के लिए संपादित करें निम्न कोड, आप निर्दिष्ट कर सकते हैं स्वयं का उपयोग या किराए परPythonक्या नीति कोड को चलाने के दौरान एन्क्रिप्ट किया जाता है?Pythonइस संस्करण का नाम हैःPython 2.7इस लेख में,Python 3.5इस लेख में,Python 3.6यह संस्करण है।

  • इस नीति के लेखकों ने खुद को चलाया है, और पंजीकरण कोड के माध्यम से दूसरों के लिए उपयोग करने के लिए सभी एन्क्रिप्टेड नीति कोडः#!pythonपायथन व्याख्याकार के संस्करण को निर्दिष्ट करने के लिए, एक अल्पविराम का उपयोग करें,अंतराल, इनपुट एन्क्रिप्शन निर्देशencrypt.. यदि निर्दिष्ट नहीं हैPythonसंस्करण सीधे जोड़ा गया#!encrypt

    #!python,encrypt
    

    या

    #!encrypt
    
  • इस नीति के लेखक खुद को चलाते हैं, पंजीकरण कोड के माध्यम से किसी और को उपयोग करने के लिए बिना एन्क्रिप्टेड नीति कोडः

    #!python,not encrypted
    

    या

    #!not encrypted
    

निर्णयPythonक्या रणनीति कोड एन्क्रिप्शन कोड का उपयोग करने के लिए प्रभावी हैos.getenv('__FMZ_ENV__')वापस स्ट्रिंग"encrypt"स्पष्टीकरण लागू हो गया है. केवल वास्तविक डिस्क वैध है, पुनः परीक्षण एन्क्रिप्टेड नहीं है।Pythonइस तरह की एक रणनीति को कोड किया जाता है।

#!encrypt
def main():
    ret = os.getenv('__FMZ_ENV__')
    # 打印变量ret为字符串encrypt或者ret == "encrypt"为真,即代表加密生效
    Log(ret, ret == "encrypt")

कुंजी सुरक्षा

एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर कॉन्फ़िगर की गई खाता जानकारी, नीति पैरामीटर में एन्क्रिप्शन स्ट्रिंग्स जैसे संवेदनशील डेटा ब्राउज़र के किनारे एन्क्रिप्टेड हैं। ये सभी जानकारी एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर संग्रहीत एन्क्रिप्टेड जानकारी ("गैर-प्रकाशित डेटा") हैं। केवल उपयोगकर्ता के निजी उपकरणों का उपयोग करके इसे डिक्रिप्ट किया जा सकता है, जिससे संवेदनशील डेटा की सुरक्षा में बहुत सुधार होता है। यदि नीति कोड, पैरामीटर सेटिंग्स, नीति विवरण आदि में अन्य संवेदनशील जानकारी शामिल है, तो कृपया इस नीति को सार्वजनिक या बेचें नहीं।

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

    मंच विनिमय जानकारी को कॉन्फ़िगर करने के पृष्ठ पर, सभी छिपे हुए एन्क्रिप्टेड टेक्स्ट बॉक्स नियंत्रणों का समर्थन किया जाता है, जो कि विनिमय के लिए स्थानीय फाइलों में लोड करने के लिए प्रोफाइल पथ के रूप में उपयोग किया जाता है।RSA KEYसत्यापन विधि एक उदाहरण है, जो होस्टिंग प्रोग्राम में स्थित डिवाइस के स्थानीय स्थान पर संवेदनशील जानकारी को कॉन्फ़िगर करने के तरीके का विवरण देती है।

    1, आरएसए सार्वजनिक कुंजी या निजी कुंजी बनाना; उदाहरण के लिए, प्रारूप बनानाPKCS#8एक सार्वजनिक कुंजी, एक निजी कुंजी, और कई उपकरण हैं जिन्हें आप बना सकते हैं, जैसेःopenssl.. 2. एक्सचेंजों में बनाया गयाRSA KEY, बनाने के समय अपलोड किया गयापहला कदमएक सार्वजनिक कुंजी है जिसे आपने बनाया है। 3, होगापहला कदमनिजी कुंजीtxtफ़ाइल प्रारूप होस्ट के साथ-साथ निर्देशिका में अन्य मार्गों को भी संग्रहीत कर सकता है। 4. एफएमजेड पर एक्सचेंजों को कॉन्फ़िगर करते समयAccess Keyएक्सचेंज में बनाए गए लेखों को संपादक बॉक्स में भरेंRSA KEY.. 5. एफएमजेड पर एक्सचेंजों को कॉन्फ़िगर करते समय कॉन्फ़िगर करेंSecret Keyसंपादक बॉक्स में, भरेंतीसरा कदमहोस्ट के साथ-साथ निर्देशिका में रखा गयाtxtफ़ाइलों के लिए पथ, उदाहरण के लिए, जहां फ़ाइलें रखी जाती हैं, का नाम हैःrsaKey.txtइस दस्तावेज़ और प्रबंधक के समान श्रेणी के निर्देशिका में भरेंःfile:///rsaKey.txt; यदि दस्तावेज़ प्रबंधक प्रक्रिया में स्थित निर्देशिका के अगले स्तर की निर्देशिका हैrsa_keyइसमें लिखा हैःfile:///rsa_key//rsaKey.txt❖ यदि यह रखा गया हैrsaKey.txtफ़ाइलों के अन्य मार्गों पर, विशेष रूप से इस तरह से सेट करने के लिए, यह ध्यान दिया जाना चाहिए कि यह फ़ाइल केवल होस्ट स्तर की निर्देशिका या उप निर्देशिका में रखने का समर्थन करती है।

    यह निजी कुंजी को स्थानीयकृत करने के लिए अधिक सुरक्षित बनाता है और विस्तृत प्रक्रियाओं को संदर्भित करता है।वीडियो व्याख्या

प्रतिक्रिया प्रणाली

क्या है रिकोटेशन सिस्टम और इसका क्या उपयोग है?

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

क्या रीटेस्टिंग सिस्टम के डेटा सटीक हैं और रीटेस्टिंग के परिणामों की सटीकता क्या है?

एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म ने रीमेटिंग मोड को विभाजित कियावास्तविक डिस्क स्तर पर पुनः परीक्षणऔरएनालॉग स्तर पर पुनः परीक्षण❖ वास्तविक डिस्क स्तर का पुनः परीक्षण पूर्ण ऐतिहासिक डेटा के आधार पर किया जाता है; एनालॉग स्तर का पुनः परीक्षण वास्तविक के-लाइन डेटा के आधार पर किया जाता हैtickडेटा का पुनर्मूल्यांकन किया जाता है; दोनों वास्तविक ऐतिहासिक डेटा पर आधारित हैं, लेकिन वास्तविक डिस्क स्तर पर पुनर्मूल्यांकन अधिक सटीक और अधिक विश्वसनीय है।एफएमजेड रीमेटिंग तंत्रलेकिन पुनरीक्षण केवल ऐतिहासिक डेटा के तहत रणनीति का प्रदर्शन है, और यह पूरी तरह से भविष्य के बाजार का प्रतिनिधित्व नहीं कर सकता है। ऐतिहासिक बाजार दोहराया जा सकता है या ब्लैक स्वान से उड़ान भर सकता है। इसलिए पुनरीक्षण के परिणामों के साथ तर्कसंगत और निष्पक्ष व्यवहार करना चाहिए।

विभिन्न भाषाओं की रणनीतियों का पुनर्मूल्यांकन करते समय ध्यान देने योग्य प्रश्नः

जावास्क्रिप्टऔरसी++नीति पुनरीक्षण ब्राउज़र के किनारे पर किया जाता है, डिस्क पर याWexAppएक नकली एक्सचेंज वास्तविक प्लेट (यानी एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म)WexAppयह बिना किसी अन्य सॉफ़्टवेयर, लाइब्रेरी या मॉड्यूल के चलाया जा सकता है।पायथनपुनः परीक्षण होस्ट पर किया जाता है, और FMZ में क्वांटिफाइड सार्वजनिक सर्वर पर पुनः परीक्षण किया जा सकता है, या उपयोगकर्ता के स्वयं के होस्ट पर पुनः परीक्षण किया जा सकता है। वास्तविक डिस्क और पुनः परीक्षण दोनों होस्ट के सिस्टम पर स्थापित होने पर निर्भर करते हैंपायथनयदि आपको कुछ पुस्तकालयों का उपयोग करने की आवश्यकता है, तो आपको उन्हें स्वयं स्थापित करना होगा (सिर्फ सार्वजनिक सर्वर पर सामान्य पुस्तकालयों का समर्थन करें) ।

पुनः परीक्षण प्रणाली में डेटा

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

पुनः परीक्षण प्रणाली में नीति DEBUG विधि

जावास्क्रिप्ट नीति को क्रोम ब्राउज़र में देवटूल में डिबग किया गया है

पुनरीक्षण प्रणाली में समर्थित एक्सचेंजों

  • क्रिप्टोकरेंसी (डिजिटल मुद्रा)

    नाम प्रकार स्पष्टीकरण
    बिटकॉइन वस्तुओं का विनिमय सीमित लेनदेन का समर्थन करता है, उदाहरण के लिएःBTC_USD,ETH_USD,LTC_USDतो, ध्यान दें कि लेनदेन की कीमत मुद्राओं के लिए हैUSDडॉलर में मूल्य
    बिआन वस्तुओं का विनिमय सीमित लेनदेन का समर्थन करता है, उदाहरण के लिएःBTC_USDT,ETH_USDT,ETH_BTC,LTC_BTCआदि।
    ओकेएक्स वस्तुओं का विनिमय सीमित लेनदेन का समर्थन करता है, उदाहरण के लिएःBTC_USDT,ETH_USDT,ETH_BTC,LTC_BTCआदि।
    सिक्का वस्तुओं का विनिमय सीमित लेनदेन का समर्थन करता है, उदाहरण के लिएःBTC_USDT,ETH_USDT,ETH_BTC,LTC_BTCआदि।
    ओकेएक्स वायदा फ्यूचर्स एक्सचेंज का उद्देश्य सीमित लेनदेन का समर्थन करता है, उदाहरण के लिएःBTC_USD,ETH_USDउदाहरण के लिए, मुद्राओं के लिए लेन-देनUSD, विशिष्ट अनुबंध कोड सेट करें ((देखेंexchange.SetContractTypeइस प्रकार, एक अनुबंध के लिए एक अनुबंध कोड है।this_weeknext_weekquarterswap
    HuobiDM फ्यूचर्स एक्सचेंज का उद्देश्य HuobiDM टोकन वायदा (टोकन अनुबंध) है, जो सीमित लेनदेन जोड़े का समर्थन करता है, जैसेःBTC_USD,ETH_USDउदाहरण के लिए, मुद्राओं के लिए लेन-देनUSD, विशिष्ट अनुबंध कोड सेट करें ((देखेंexchange.SetContractTypeइस प्रकार, एक अनुबंध के लिए एक अनुबंध कोड है।this_weeknext_weekquarterswap
    बिटमेक्स फ्यूचर्स एक्सचेंज का उद्देश्य लेन-देन के लिएःXBT_USD, विशिष्ट अनुबंध कोड सेट करें ((देखेंexchange.SetContractTypeइस प्रकार, एक अनुबंध के लिए एक अनुबंध कोड है।XBTUSD
    बिआन वायदा फ्यूचर्स एक्सचेंज का उद्देश्य सीमित लेनदेन का समर्थन करता है, उदाहरण के लिएःBTC_USDT,ETH_USDTउदाहरण के लिए, मुद्राओं के लिए लेन-देनUSDT, विशिष्ट अनुबंध कोड सेट करें ((देखेंexchange.SetContractTypeफ़ंक्शन) के बाद, कॉन्ट्रैक्टUSDTइस अनुबंध का समर्थन करने वाले अनुबंध कोड में शामिल हैंःswap
    डेरिबिट विकल्प विकल्प विनिमय का उद्देश्य लेन-देन के लिएःBTC_USD,ETH_USD, विशिष्ट अनुबंध कोड सेट करें ((देखेंexchange.SetContractTypeफ़ंक्शन) के बाद, कॉन्ट्रैक्ट को मुद्रा स्थान पर कॉन्ट्रैक्ट के रूप में सेट किया जाता है।

    पुनरीक्षण प्रणाली फ्यूचर्स एक्सचेंज ऑब्जेक्ट्स को अस्थायी रूप से रणनीति कोड में स्वैप लेनदेन जोड़े का समर्थन नहीं करता है।

एनालॉग स्तर

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

वास्तविक स्तर

वास्तविक डिस्क स्तर पर पुनः परीक्षण वास्तविक हैtickस्तर डेटा बार के समय क्रम में है।tickस्तरीय डेटा के लिए रणनीति, वास्तविक डिस्क स्तर पर पुनः परीक्षण का उपयोग करना अधिक यथार्थवादी है; वास्तविक डिस्क स्तर पर पुनः परीक्षणtickवास्तविक रिकॉर्ड किए गए डेटा हैं, न कि एनालॉग उत्पन्न किए गए; गहराई डेटा, बाजार लेनदेन रिकॉर्डिंग डेटा का समर्थन करते हैं, अनुकूलन गहराई का समर्थन करते हैं, स्क्रिप्ट डेटा का समर्थन करते हैं; वास्तविक डिस्क स्तर पर स्क्रिप्ट डेटा का समर्थन अधिकतम 50 एमबी है, डेटा सीमा के भीतर स्क्रिप्ट समय सीमा को सीमित नहीं करता है, यदि आवश्यक हो तो स्क्रिप्ट समय सीमा को यथासंभव बड़ा करें, गहराई फ़ील्ड संख्यात्मक सेटिंग को कम कर सकते हैं, स्क्रिप्ट डेटा का उपयोग करके स्क्रिप्ट समय सीमा को बढ़ाने के लिए स्क्रिप्ट डेटा का उपयोग नहीं करते हैं।GetDepthGetTradesफ़ंक्शन लेन-देन डेटा प्राप्त करता है। समयरेखा पर किसी लेन-देन डेटा समय पर कॉल करता हैGetTickerGetTradesGetDepthGetRecords, समय को पुनः परीक्षण समयरेखा पर कई बार आगे नहीं बढ़ाता है ((अगले बाजार डेटा क्षण में कूदने के लिए ट्रिगर नहीं करता है) । उपरोक्त में से किसी एक फ़ंक्शन के लिए दोहराए जाने वाले कॉल, समय को पुनः परीक्षण समयरेखा पर आगे बढ़ाएंगे ((अगले बाजार डेटा क्षण में कूदने के लिए) । पुनः परीक्षण के लिए वास्तविक डिस्क स्तर पर पुनः परीक्षण का उपयोग करना उचित नहीं है।

वास्तविक डिस्क स्तर पर पुनः परीक्षण वर्तमान समर्थन

  • बिआन
  • ओकेएक्स ((ओकेएक्स नकदी)
  • HuobiDM (टोकन वायदा)

पुनरीक्षण प्रणाली पैरामीटर समायोजन

एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म रिट्रीट सिस्टम पैरामीटर समायोजन की सुविधा को रिट्रीट के समय प्रत्येक पैरामीटर के अनुकूलन विकल्पों के आधार पर समायोजित किया जाता है, जैसेः

  • न्यूनतम मानः परिमित पैरामीटर का आरंभिक मान।
  • अधिकतम मानः सीमांत पैरामीटर के क्रमिक परिवर्तन के बाद अधिकतम मान।
  • पैदल दूरीः पैरामीटर में वृद्धिशील परिवर्तनशीलता।

पैरामीटर संयोजन उत्पन्न करें और इन पैरामीटर संयोजनों के माध्यम से पुनरावृत्ति करें (यानी, प्रत्येक पैरामीटर संयोजन को एक बार दोहराएं) । नीति पैरामीटर केवल ** संख्यात्मक ** पैरामीटर के प्रकार के लिए पुनरावृत्ति प्रणाली में पैरामीटर को समायोजित कर सकते हैं।

उदाहरण के लिए, रीसेट पृष्ठ पर पैरामीटर अनुकूलन विकल्प सेट करेंः

img

पैरामीटर अनुकूलन मोड पुनः परीक्षणः

img

रीसेट सेटिंग्स सहेजें

नीति संपादन पृष्ठ पर, "एलोकेशन रीट्रीट" अनुभाग में, रीट्रीट कॉन्फ़िगरेशन, नीति पैरामीटर जैसे विकल्पों को रीट्रीट करने के लिए सेट किया जा सकता है। रीट्रीट कॉन्फ़िगरेशन रीट्रीट समय सीमा, रीट्रीट किए गए ट्रेडों, रीट्रीट स्लाइडिंग समय बिंदुओं, प्रसंस्करण शुल्क और अन्य शर्तों को सेट करने के लिए उपयोग किया जाता है; नीति पैरामीटर नीति के लिए पैरामीटर विकल्पों को सेट करते हैं। जब ये पैरामीटर सेट किए जाते हैं, तो इन सेटिंग्स को रीट्रीट की नीति के अनुसार सेट किया जा सकता है, तो इन सेटिंग्स को कैसे सहेजा जाए?

img

JavaScriptउदाहरण के लिए, "स्रोत फ़ाइल पर सहेजें पुनर्लेखन सेटिंग्स" पर क्लिक करेंः

img

JavaScript/Python/C++/麦语言स्रोत फ़ाइल प्रारूप पर सहेजें और पुनर्प्राप्त करें को थोड़ा अलग सेट करेंः

/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
'''backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

मेई भाषाः

(*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
*)

कस्टम डेटा स्रोत

सिस्टम का उपयोगGETविधि बाहरी डेटा स्रोतों को पुनः प्राप्त करने के लिए एक कस्टम URL (एक सार्वजनिक रूप से सुलभ URL) का अनुरोध करती है, जिसमें निम्नलिखित अनुरोध पैरामीटर शामिल हैंः

पैरामीटर अर्थ स्पष्टीकरण
चिह्न प्रजाति का नाम उदाहरण के लिएः BTC_USD_OKCoin_EN
ईद एक्सचेंज उदाहरण के लिएः OKCoin_EN
गोल कीमतों की सटीकता और अगर हम 3 है, तो हम 1000 के लिए एक पूर्णांक से गुणा करने के लिए डेटा में कीमतों के लिए वापस आ जाएगा.
भ्राउन्ड संख्यात्मक सटीकता और अगर 2 है, तो यह 100 से गुणा करने के लिए एक पूर्णांक है।
अवधि बार चक्र (मिलीसेकंड) उदाहरण के लिए, 60000 बार प्रति मिनट अनुरोध के लिए
गहराई गहराई 1-20
व्यापार क्या आपको डेटा को विभाजित करने की आवश्यकता है सच/झूठ
से शुरू समय यूनिक्स टाइमलाइन
तक समाप्ति समय यूनिक्स टाइमलाइन

ध्यान देंः

round与vround是为了避免网络传输过程中浮点数的精度丢失设计的两个参数,价格数据和成交量、订单量数据都采用整型传输。

एक उदाहरण के रूप में, हम एक साथ जुड़े डेटा का उपयोग कर सकते हैंः

http://customserver:80/data?symbol=BTC_USD_OKCoin_EN&eid=OKCoin_EN&round=3&vround=3&period=900000&from=1564315200&to=1567267200

लौटाया गया प्रारूप निम्नलिखित दो प्रारूपों में से एक होना चाहिए (सिस्टम स्वचालित रूप से पहचानता है):

सामान्य बार स्तर पुनः परीक्षण

{
    "schema":["time","open","high","low","close","vol"],
    "data":[[1564315200000,9531300,9531300,9497060,9497060,787],[1564316100000,9495160,9495160,9474260,9489460,338]]
}

टिक-स्तरीय पुनर्मूल्यांकन डेटा ((खरीद की गहराई की जानकारी शामिल है, गहराई प्रारूप [मूल्य, मात्रा] के रूप में एक सरणी है, कई स्तरों की गहराई हो सकती है, कीमतों के लिए पूछता है, कीमतों के लिए बोली लगाता है)

{
    "schema":["time","asks", "bids","trades","close","vol"],
    "data":[[1564315200000,[[9531300,10]], [[9531300,10]],[[1564315200000,0,9531300,10]],9497060,787]]
}

स्पष्टीकरण

फ़ील्ड स्पष्टीकरण
स्कीमा डेटा सरणी में पंक्तियों के गुणों को निर्दिष्ट करें, बड़े और छोटे अक्षरों के बीच अंतर करें, केवल time, open, high, low, close, vol, asks, bids तक ही सीमित रहें
आंकड़ा एक सरणी जो डेटा को स्कीमा के अनुसार संग्रहीत करती है

डेटा प्रारूप

फ़ील्ड स्पष्टीकरण
पूछताछ/प्रस्ताव [मूल्य, मात्रा,...]
व्यापार [समय, दिशा (०ः खरीदना, १ः बेचना), मूल्य, मात्रा],...]

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

{
	"detail": {},
	"symbol": "futures_binance.eth_usdt.funding",
	"schema": ["time", "open", "high", "low", "close", "vol"],
	"data": [
		[1582876800000, 25289, 25289, 25289, 25289, 0],
		[1582905600000, 30522, 30522, 30522, 30522, 0],
		[1582934400000, 40998, 40998, 40998, 40998, 0],
        ...
		[1626652800000, 198, 198, 198, 198, 0],
		[1626681600000, 691, 691, 691, 691, 0],                  // 相邻的周期间隔8小时
		[1626710400000, 310, 310, 310, 310, 0],                  // 币安资金费率8小时更新一次,资金费率数据为什么为310?
		[1626739200000, 310, 310, 310, 310, 0],                  // 因为和K线数据一样,为了避免网络传输过程中浮点数的精度丢,数据采用整型,所以需要根据round参数处理数据,处理后用于返回给回测系统的数据就为310
		[1626768000000, -41610, -41610, -41610, -41610, 0],      // 资金费率数据也可能为负值
		[1626796800000, -5125, -5125, -5125, -5125, 0],
        ...		
		[1627977600000, 10000, 10000, 10000, 10000, 0]
	]
}

उदाहरण के लिए, एक डेटा अनुरोध जो एक पुनः परीक्षण प्रणाली द्वारा किया जाता हैः

http://customserver:80/data?symbol=futures_binance.eth_usdt.funding&eid=Futures_Binance&round=8&vround=5&depth=20&trades=1&custom=0&period=3600000&from=1360771200&to=1628006400

कस्टम डेटा स्रोत उदाहरणः

डेटा स्रोत, पता निर्दिष्ट करेंःhttp://xxx.xx.x.xx:9090/dataगोलांग का उपयोग करके डेटा सर्वर को अनुकूलित करने के लिएः

package main 
import (
    "fmt"
    "net/http"
    "encoding/json"
)

func Handle (w http.ResponseWriter, r *http.Request) {
    // e.g. set on backtest DataSourse: http://xxx.xx.x.xx:9090/data
    // r.URL: /data?depth=20&detail=true&eid=Binance&from=1566820800&period=900000&round=3&symbol=BTC_USDT_Binance&to=1569686400&trades=1&vround=5
    // response
    defer func() {
        // response data
        /* e.g. data
        {
            "schema":["time","open","high","low","close","vol"],
            "data":[
                [1564315200000,9531300,9531300,9497060,9497060,787],
                [1564316100000,9495160,9495160,9474260,9489460,338]
            ]
        }
        */
        ret := map[string]interface{}{
            "schema" : []string{"time","open","high","low","close","vol"},
            "data" : []interface{}{
                []int64{1564315200000,9531300,9531300,9497060,9497060,787},
                []int64{1564316100000,9495160,9495160,9474260,9489460,338},
            },
        }
        b, _ := json.Marshal(ret)
        w.Write(b)
    }()
}

func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

यह परीक्षण रणनीति है।JavaScriptउदाहरण:

/*backtest
start: 2019-07-28 00:00:00
end: 2019-07-29 00:00:00
period: 1m
exchanges: [{"eid":"OKX","currency":"BTC_USDT","feeder":"http://120.24.2.20:9090/data"}]
*/

function main() {
    var ticker = exchange.GetTicker()
    var records = exchange.GetRecords()
    Log(ticker)
    Log(records)
}

एक ग्राफ जो रीट्रेसिंग सिस्टम में अनुकूलित डेटा को चित्रित करता हैः

यह एक बहुत ही अच्छा तरीका है।

स्थानीय रीसेट इंजन

FMZ क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म ओपन सोर्स हैJavaScriptभाषा औरPythonभाषा के लिए देशी पुनर्लेखन इंजन, पुनर्लेखन के समय सेटिंग्स का समर्थन करता हैनिचला K-लाइन चक्र

पुनः परीक्षण पृष्ठ शॉर्टकट

  • नीति संपादित पृष्ठ और नीति पुनर्विचार पृष्ठ स्विच करने के लिए त्वरित बटन

    उपयोगCtrl + ,कुंजी, स्विच रीव्यू पेज और नीति संपादित पेज, दबाए रखेंCtrlबटन के बाद, बस दबाएं,बटन ।

  • नीति को सहेजने के लिए शॉर्टकट

    उपयोगCtrl + sकुंजी, सहेजें नीति ।

  • पुनः परीक्षण शुरू करने के लिए त्वरित कुंजी

    उपयोगCtrl + bबटन, पुनः परीक्षण शुरू करें.

कोड विवरण

इनपुट फ़ंक्शन

फ़ंक्शन का नाम स्पष्टीकरण
main() इनपुट फ़ंक्शन के लिए।
onexit() सामान्य बाहर निकलने पर स्वाइप करने के लिए सबसे लंबे समय तक 5 मिनट का समय होता है, बिना घोषित किया जा सकता है, यदि ओवरटाइम हो तो त्रुटि वापस आ जाएगीबाधित करनागलत है।
onerror() एक फ़ंक्शन के लिए निष्पादन का समय अधिकतम 5 मिनट है, जिसे बिना घोषित किया जा सकता है, जो असामान्य बाहर निकलने के लिए ट्रिगर किया जाता है।PythonभाषाएंC++भाषा में लिखी गई नीतियां इस फ़ंक्शन का समर्थन नहीं करती हैं।
init() इनक्यूबेशन फ़ंक्शन के लिए, नीति कार्यक्रम को प्रारंभ में पहले स्वचालित रूप से बुलाया जाता है, लेकिन इसे घोषित नहीं किया जा सकता है।
  • स्पष्टीकरणः
    • पुनः परीक्षण प्रणाली समर्थित नहीं हैonerror()फ़ंक्शन ।
    • वास्तविक समय में ट्रिगर किया गयाonerror()फ़ंक्शन, फिर से ट्रिगर नहीं होगाonexit()फ़ंक्शन ।

onexit ((()

onexit(), एक उपयोगकर्ता द्वारा किए गए 5 मिनट तक चलने वाले स्क्रैपिंग कार्य को संसाधित करता है।

function main(){
    Log("开始运行, 5秒后停止,并执行扫尾函数!")
    Sleep(1000 * 5)
}

// 扫尾函数实现
function onexit(){
    var beginTime = new Date().getTime()
    while(true){
        var nowTime = new Date().getTime()
        Log("程序停止倒计时..扫尾开始,已经过去:", (nowTime - beginTime) / 1000, "秒!")
        Sleep(1000)
    }
}
import time 
def main():
    Log("开始运行, 5秒后停止,并执行扫尾函数!")
    Sleep(1000 * 5)

def onexit():
    beginTime = time.time() * 1000
    while True:
        ts = time.time() * 1000
        Log("程序停止倒计时..扫尾开始,已经过去:", (ts - beginTime) / 1000, "秒!")
        Sleep(1000)
void main() {
    Log("开始运行, 5秒后停止,并执行扫尾函数!");
    Sleep(1000 * 5);
}

void onexit() {
    auto beginTime = Unix() * 1000;
    while(true) {
        auto ts = Unix() * 1000;
        Log("程序停止倒计时..扫尾开始,已经过去:", (ts - beginTime) / 1000, "秒!");
        Sleep(1000);
    }
}

आरंभ करना

init(), उपयोगकर्ता के लिए आरंभिकरण फ़ंक्शनinit()नीति शुरू होने पर पहले स्वचालित रूप से निष्पादित होती हैinit()फ़ंक्शन, नीति में डिज़ाइन किए गए आरंभिक कार्यों को पूरा करता है।

function main(){
    Log("程序第一行代码执行!", "#FF0000")
    Log("退出!")
}

// 初始化函数
function init(){     
    Log("初始化!")
}
def main():
    Log("程序第一行代码执行!", "#FF0000")
    Log("退出!")

def init():
    Log("初始化!")
void main() {
    Log("程序第一行代码执行!", "#FF0000");
    Log("退出!");
}

void init() {
    Log("初始化!");
}

त्रुटि()

onerror()यह एक बहुत ही अजीब बात है।onerror()फ़ंक्शन निष्पादित, फ़ंक्शन समर्थित नहीं हैPythonC++भाषा की रणनीति ।

function main() {
    var arr = []
    Log(arr[6].Close)
}

function onerror() {
    Log("错误")
}
# python不支持
// C++不支持

क्लासिक रणनीतिक ढांचा

मेंJavaScriptPythonC++भाषा में लिखी गई नीतियों को नीतियों के मुख्य लूप में बुलाया जाना चाहिएSleep()फ़ंक्शन ─ रिटर्न्स के समय रिटर्न्स की गति को नियंत्रित करने के लिए प्रयोग किया जाता है, और रियल-टाइम में रणनीति पूछताछ के समय अंतराल को नियंत्रित करने के लिए प्रयोग किया जाता है, जिससे एक्सचेंज एपीआई इंटरफेस तक पहुंचने के अनुरोधों की आवृत्ति को नियंत्रित किया जाता है─

  • डिजिटल मुद्रा रणनीति के लिए बुनियादी ढांचे के उदाहरणः

    function onTick(){
        //在这里写策略逻辑,将会不断调用,例如打印行情信息
        Log(exchange.GetTicker())
    }
    
    function main(){
        while(true){
            onTick()
            // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁
            Sleep(60000)
        }
    }
    
    def onTick():
        Log(exchange.GetTicker())
    
    def main():
        while True:
            onTick()
            Sleep(60000)
    
    void onTick() {
        Log(exchange.GetTicker());
    }
    
    void main() {
        while(true) {
            onTick();
            Sleep(60000);
        }
    }
    

    सबसे सरल उदाहरण के लिए, अगर मैं एक एक्सचेंज में हर 1 सेकंड में 100 की कीमत पर एक भुगतान लिखना चाहता हूं, तो यह इस तरह लिखा जा सकता हैः

    function onTick(){
        // 这个仅仅是例子,回测或者实盘会很快把资金全部用于下单,实盘请勿使用
        exchange.Buy(100, 1)
    }
    
    function main(){
        while(true){
            onTick()
            // 暂停多久可自定义,单位为毫秒,1秒等于1000毫秒
            Sleep(1000)
        }
    }
    
    def onTick():
        exchange.Buy(100, 1)
    
    def main():
        while True:
            onTick()
            Sleep(1000)
    
    void onTick() {
        exchange.Buy(100, 1);
    }
    
    void main() {
        while(true) {
            onTick();
            Sleep(1000);
        }
    }
    

टेम्पलेट लाइब्रेरी

टेम्पलेट लाइब्रेरीएफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म में पुनः प्रयोज्य कोड मॉड्यूल, नीति कोड का एक वर्ग है।टेम्पलेट लाइब्रेरीएक बार जब एक टेम्पलेट श्रेणी का निर्माण किया जाता है, तो एक सामान्य नीति के रूप में श्रेणी को संशोधित नहीं किया जा सकता है।

JavaScriptभाषाओं के लिए टेम्पलेट्स का संग्रहः

img

Pythonभाषाओं के लिए टेम्पलेट्स का संग्रहः

img

C++भाषाओं के लिए टेम्पलेट्स का संग्रहः

img

  • टेम्पलेट वर्गों के लिए निर्यात फ़ंक्शन निर्यात फ़ंक्शन एक टेम्पलेट लाइब्रेरी के लिए एक इंटरफ़ेस फ़ंक्शन है जिसे उस टेम्पलेट लाइब्रेरी के लिए एक नीतिगत कॉल के रूप में संदर्भित किया जा सकता है। निर्यात फ़ंक्शन टेम्पलेट लाइब्रेरी में घोषित किया गया है और उदाहरण कोड का कार्यान्वयन निम्नानुसार हैः

    /*
    -- 策略引用该模板以后直接用 $.Test() 调用此方法
    -- main 函数在策略中不会触发, 只做为模板调试的入口
    */
    $.Test = function() {
        Log('Test')
    }
    
    function main() {
        $.Test()
    }
    
    def Test():
        Log("template call")
    
    # 导出Test函数, 主策略可以通过ext.Test()调用
    ext.Test = Test 
    
    // 策略引用该模板以后直接用 ext::Test() 调用此方法
    void Test() {
        Log("template call");
    }
    
  • टेम्पलेट श्रेणी सूची के पैरामीटर टेम्पलेट लाइब्रेरी के पैरामीटर का उपयोग टेम्पलेट लाइब्रेरी कोड में वैश्विक चर के रूप में किया जाता है।

    टेम्पलेट श्रेणी सूची के लिए पैरामीटर सेट करेंः

    img

    टेम्पलेट लाइब्रेरी कोडः

    $.SetParam1 = function(p1) {
        param1 = p1
    }
    
    $.GetParam1 = function() {
        Log("param1:", param1)
        return param1
    }
    
    def SetParam1(p1):
        global param1
        param1 = p1
    
    def GetParam1():
        Log("param1:", param1)
        return param1
    
    ext.SetParam1 = SetParam1
    ext.GetParam1 = GetParam1
    
    void SetParam1(float p1) {
        param1 = p1;
    }
    
    float GetParam1() {
        Log("param1:", param1);
        return param1;
    }
    

    उद्धरणटेम्पलेट लाइब्रेरीउदाहरण के लिए रणनीति कोडः

    function main () {
        Log("调用$.GetParam1:", $.GetParam1())
        Log("调用$.SetParam1:", "#FF0000")
        $.SetParam1(20)
        Log("调用$.GetParam1:", $.GetParam1())
    }
    
    def main():
        Log("调用ext.GetParam1:", ext.GetParam1())
        Log("调用ext.SetParam1:", "#FF0000")
        ext.SetParam1(20)
        Log("调用ext.GetParam1:", ext.GetParam1())
    
    void main() {
        Log("调用ext::GetParam1:", ext::GetParam1());
        Log("调用ext::SetParam1:", "#FF0000");
        ext::SetParam1(20);
        Log("调用ext::GetParam1:", ext::GetParam1());
    }
    

    img

  • टेम्पलेट लाइब्रेरी का संदर्भ लें

    नीति संपादित पृष्ठ टेम्पलेट बार में संदर्भ को चुनने के बाद, नीति को सहेजें।

    img

अंतर्निहित संरचना

वैश्विक चर

विनिमय

exchangeएक एक्सचेंज ऑब्जेक्ट के रूप में देखा जा सकता है, जो कि डिफ़ॉल्ट रूप से नीति पैरामीटर में जोड़ा गया पहला एक्सचेंज ऑब्जेक्ट है। एक्सचेंज के साथ सभी बातचीत इस ऑब्जेक्ट के भीतर फ़ंक्शन के माध्यम से होती है।

  • एक्सचेंज ऑब्जेक्ट जोड़ने का पुनः परीक्षण करें

  • वर्चुअल पेज पर एक्सचेंज ऑब्जेक्ट जोड़ें

जोड़े गए एक्सचेंज ऑब्जेक्ट कोड में मेल खाते हैंexchangeऑब्जेक्टः

function main() {
    Log("实盘页面或者回测页面上,添加的第一个交易所对象名字:", exchange.GetName(), ",标签:", exchange.GetLabel())
}
def main():
    Log("实盘页面或者回测页面上,添加的第一个交易所对象名字:", exchange.GetName(), ",标签:", exchange.GetLabel())
void main() {
    Log("实盘页面或者回测页面上,添加的第一个交易所对象名字:", exchange.GetName(), ",标签:", exchange.GetLabel());
}
विनिमय

इसे एक ही तरह से समझ सकते हैंexchangeएक्सचेंज ऑब्जेक्ट्स के सभी एक्सचेंज ऑब्जेक्ट्स के लिए एक सरणी, जिसमें कई एक्सचेंज ऑब्जेक्ट हो सकते हैं।exchanges[0]यानीexchange

जोड़े गए एक्सचेंज ऑब्जेक्ट नीति कोड के अनुरूप हैंexchanges[0]exchanges[1]exchanges[2]इस तरह के अनुमानों के साथ।

function main() {
    for(var i = 0; i < exchanges.length; i++) {
        Log("添加的交易所对象索引(第一个为0以此类推):", i, "名称:", exchanges[i].GetName(), "标签:", exchanges[i].GetLabel())
    }
}
def main():
    for i in range(len(exchanges)):
        Log("添加的交易所对象索引(第一个为0以此类推):", i, "名称:", exchanges[i].GetName(), "标签:", exchanges[i].GetLabel())
void main() {
    for(int i = 0; i < exchanges.size(); i++) {
        Log("添加的交易所对象索引(第一个为0以此类推):", i, "名称:", exchanges[i].GetName(), "标签:", exchanges[i].GetLabel());
    }
}
आदेश की स्थिति

Orderसंरचना मेंStatusविशेषताएं ।

निरंतर नाम परिभाषा मूल्य
ORDER_STATE_PENDING अधूरा 0
ORDER_STATE_CLOSED पूरा हो गया 1
ORDER_STATE_CANCELED रद्द कर दिया गया 2
ORDER_STATE_UNKNOWN अज्ञात स्थिति (अन्य स्थिति) 3

ORDER_STATE_UNKNOWNस्थिति, कॉल किया जा सकता हैexchange.GetRawJSON()मूल ऑर्डर की स्थिति की जानकारी प्राप्त करें, एक्सचेंज दस्तावेजों की जांच करें और विवरण देखें। तालिका में निरंतर नाम सीधे नीति कोड में इस्तेमाल किया जा सकता है औरOrderसंरचनाStatusगुणों की तुलना, आदेश की स्थिति निर्धारित करने के लिए समानता का निर्धारण; इन स्थिरांकों के नाम को प्रिंट करने से ये दिखाई देंगेनिरंतर नामसमानांतरमूल्य, निम्नलिखित अन्य स्थिरांक नाम समानार्थी अब नहीं हैं।

खरीद-बिक्री के प्रकार

Orderसंरचना मेंTypeविशेषताएं ।

निरंतर नाम परिभाषा मूल्य
ORDER_TYPE_BUY भुगतान 0
ORDER_TYPE_SELL बिक्री के लिए 1
स्थिति का प्रकार

Positionसंरचना मेंTypeविशेषताएं ।

निरंतर नाम परिभाषा स्पष्टीकरण लागू मूल्य
PD_LONG बहु-मुख्य स्थिति दर्शाता है डिजिटल मुद्राओं के वायदा उपयोगexchange.SetDirection("closebuy")स्थिति की दिशा सेट करें, स्थिति के प्रकार को समतल करें डिजिटल मुद्रा वायदा 0
पीडी_शॉर्ट रिक्त स्थान को इंगित करें डिजिटल मुद्राओं के वायदा उपयोगexchange.SetDirection("closesell")स्थिति की दिशा सेट करें, स्थिति के प्रकार को समतल करें डिजिटल मुद्रा वायदा 1
फ्यूचर्स की पक्की दिशा

Orderसंरचना मेंOffsetविशेषताएं ।

निरंतर नाम परिभाषा मूल्य
ORDER_OFFSET_OPEN स्टॉक खोलने के लिए आदेश 0
ORDER_OFFSET_CLOSE प्लेसमेंट के लिए आदेश 1
रणनीति पैरामीटर

नीति कोड में नीति इंटरफ़ेस पर निर्धारित नीति पैरामीटर वैश्विक चर के रूप में प्रकट होते हैं।JavaScriptभाषा में, आप सीधे नीति इंटरफ़ेस पर सेट किए गए पैरामीटर मानों तक पहुंच सकते हैं या उन्हें संशोधित कर सकते हैं।Pythonनीति के फ़ंक्शन में वैश्विक चर को संशोधित करने के लिए उपयोग किया जाता हैglobalकीवर्ड ‖

पैरामीटर प्रकारः

img

चर वर्णन नोट्स प्रकार डिफ़ॉल्ट स्पष्टीकरण
संख्या संख्यात्मक प्रकार नोट्स अंक (number) 1 C++ की नीति फ्लोटिंग पॉइंट है।
स्ट्रिंग स्ट्रिंग नोट्स स्ट्रिंग (string) हैलो एफएमजेड डिफ़ॉल्ट मानों को इनपुट करते समय कोई उद्धरण की आवश्यकता नहीं होती है, इनपुट स्ट्रिंग के रूप में संसाधित होते हैं।
कंबोक्स ड्रॉप बॉक्स नोट्स ड्रॉप-डाउन बॉक्स ((selected) 1|2|3 combox चर स्वयं एक संख्यात्मक मान है, जो ड्रॉपबॉक्स नियंत्रण के चयन के लिए लक्षित सूचकांक का प्रतिनिधित्व करता है, जिसमें पहला ड्रॉपबॉक्स हेडर 1 है, जिसका सूचकांक मान 0 है, क्रमशः अनुशंसित है।
बोल विकल्पों का चयन करें नोट्स बुल प्रकार ((true/false) सच यदि यह चयनित है, तो चर bool true है, यदि यह चयनित नहीं है, तो चर bool false है.
गुप्तString एन्क्रिप्शन स्ट्रिंग नोट्स एन्क्रिप्टेड स्ट्रिंग पासवर्ड स्ट्रिंग के समान, एन्क्रिप्टेड स्ट्रिंग को एन्क्रिप्टेड भेजा जाता है, बिना स्पष्ट पाठ के।
  • इंटरफ़ेस पैरामीटर, नीति संपादित पृष्ठ के कोड संपादक क्षेत्र के नीचे नीति पैरामीटर क्षेत्र में सेट करें.
  • इंटरफ़ेस पैरामीटर नीति कोड में वैश्विक चर के रूप में मौजूद होते हैं, यानी कोड में इंटरफ़ेस पैरामीटर को संशोधित किया जा सकता है।
  • इंटरफ़ेस पैरामीटर नीति कोड में चर नामः यानी ऊपर दिए गए चित्र मेंnumberstringcomboxboolsecretString
  • विकल्प का वर्णन करेंः इंटरफ़ेस पैरामीटर का नाम नीति इंटरफ़ेस में है.
  • टिप्पणियाँ विकल्पः इंटरफ़ेस पैरामीटर का विस्तृत विवरण, जो कि इंटरफ़ेस पैरामीटर पर माउस के ठहराव पर दिखाई देता है।
  • प्रकार विकल्पः इस इंटरफ़ेस पैरामीटर का प्रकार.
  • डिफ़ॉल्ट मान विकल्पः इस इंटरफ़ेस पैरामीटर का डिफ़ॉल्ट मान।

पैरामीटर सेटिंग पर निर्भर करता हैः एक पैरामीटर सेट किया जा सकता है ताकि दूसरे पैरामीटर को उस पैरामीटर के आधार पर चयनित किया जा सके। उदाहरण के लिए हम पैरामीटर सेट करते हैं।numberA, एक संख्यात्मक प्रकार है.numberAयह एक पैरामीटर पर आधारित हैःisShowA(बुल प्रकार) का सही निर्णयnumberAदिखाएँ और छिपाएँ.numberAचर को इंटरफ़ेस पैरामीटर पर सेट किया गया हैःnumberA@isShowA

img

इस तरह से चयन नहीं किया गयाisShowAपैरामीटर,numberAपैरामीटर छिपा हुआ है. ड्रॉपडाउन नियंत्रण प्रकार के लिए पैरामीटर, पैरामीटर निर्भर करता है कि क्या ड्रॉपडाउन किसी विकल्प के बराबर है या नहीं.सूचकांक मान..isShowAउदाहरण के लिए, यदि आप एक चर सेट करते हैं तो यह लिखा जाता हैःnumberA@combox==2numberAपैरामीटर के आधार परcomboxक्या पैरामीटर को तीसरे विकल्प के लिए दिखाया या छिपाया जाना है ((इंडेक्स 0 पहले विकल्प के लिए, इंडेक्स 1 दूसरे विकल्प के लिए, इंडेक्स 2 तीसरे विकल्प के लिए) ।)

नीति इंटरफ़ेस पैरामीटर, इंटरैक्टिव कंट्रोल, टेम्पलेट पर पैरामीटर समूह कार्यक्षमताः केवल पैरामीटर के विवरण के साथ शुरू करने के लिए जोड़ा(?第一组)इस तरह के लोगों के लिए, यह बहुत अच्छा है।

img

नीति का उपयोग करते समय पैरामीटर प्रदर्शित करने के लिए समूहबद्ध किया जाता हैः

img

पैरामीटर का डिफ़ॉल्ट मान सहेजेंः नीति पैरामीटर चित्रित है, यदि आप नीति पैरामीटर के डिफ़ॉल्ट मान को सहेजना चाहते हैं, तो नीति पैरामीटर को संशोधित करने के बाद क्लिक करें।保存回测设置बटन ।

img

img

नीति में सेट किए गए नीति पैरामीटर को कोड के रूप में सहेजा जा सकता हैः

/*backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
*/
'''backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
'''
/*backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
*/

डेटा संरचना

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

व्यापार

सभी लेनदेन इतिहास (अपने अलावा) प्राप्त करेंexchange.GetTrades()फ़ंक्शन लौटता है.

{
    Id      : 9585306,          // 交易记录ID,如果交易所接口没有提供订单ID则使用时间戳填充
    Time    : 1567736576000,    // 时间(Unix timestamp 毫秒)
    Price   : 1000,             // 价格
    Amount  : 1,                // 数量
    Type    : 0                 // 订单类型,参考常量里的订单类型,0即为ORDER_TYPE_BUY,ORDER_TYPE_BUY的值为0
}
टिकर

बाजार बाजारexchange.GetTicker()फ़ंक्शन लौटता है.

{
    Info    : {...},             // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    High    : 1000,              // 最高价,如果交易所接口没有提供24小时最高价则使用卖一价格填充
    Low     : 500,               // 最低价,如果交易所接口没有提供24小时最低价则使用买一价格填充
    Sell    : 900,               // 卖一价
    Buy     : 899,               // 买一价
    Last    : 900,               // 最后成交价
    Volume  : 10000000,          // 最近成交量,原则上现货成交量单位为交易币种(baseCurrency),期货成交量单位为合约张数。如果交易所接口没有提供此类数据则使用交易所接口现有的数据填充,例如可能为计价币(quoteCurrency)为单位的成交量
    Time    : 1567736576000      // 毫秒级别时间戳
}
रिकॉर्ड

मानकOHLCसंरचना, के रेखाओं और सूचक गणना विश्लेषण के लिए इस्तेमाल किया जाता है; द्वाराexchange.GetRecords()फ़ंक्शन इस संरचना के लिए एक सरणी लौटता है.Recordसंरचना एक K लाइन स्तंभ का प्रतिनिधित्व करती है, एक K लाइनBARRecordइनमें से एकTimeइस के-लाइन स्तंभ चक्र के लिए आरंभ समय।

{
    Time    : 1567736576000,     // 一个时间戳,精确到毫秒,与Javascript的new Date().getTime()得到的结果格式一样
    Open    : 1000,              // 开盘价
    High    : 1500,              // 最高价
    Low     : 900,               // 最低价
    Close   : 1200,              // 收盘价
    Volume  : 1000000            // 交易量,原则上现货成交量单位为交易币(baseCurrency),期货成交量单位为合约张数,如果交易所接口没有提供此类数据则使用交易所接口现有的数据填充,例如可能为计价币(quoteCurrency)为单位的成交量
}
आदेश

ऑर्डर संरचनाexchange.GetOrder()exchange.GetOrders()फ़ंक्शन लौटता है.exchange.GetOrders()यह उस संरचना का एक सरणी या खाली सरणी (यदि कोई नहीं है) लौटाता है।अभी अधूरे आदेशवापस[], यानी खाली सरणी) ।

{
    Info        : {...},         // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    Id          : 123456,        // 交易单唯一标识
    Price       : 1000,          // 下单价格,注意市价单的该属性可能为0或者-1
    Amount      : 10,            // 下单数量,注意市价单的该属性可能为金额并非币数
    DealAmount  : 10,            // 成交数量,如果交易所接口不提供该数据则可能使用0填充
    AvgPrice    : 1000,          // 成交均价,注意有些交易所不提供该数据。不提供、也无法计算得出的情况该属性设置为0
    Status      : 1,             // 订单状态,参考常量里的订单状态,例如:ORDER_STATE_CLOSED
    Type        : 0,             // 订单类型,参考常量里的订单类型,例如:ORDER_TYPE_BUY
    Offset      : 0              // 数字货币期货的订单数据中订单的开平仓方向。ORDER_OFFSET_OPEN为开仓方向,ORDER_OFFSET_CLOSE为平仓方向
    ContractType : ""            // 现货订单中该属性为""即空字符串,期货订单该属性为具体的合约代码
}
बाज़ार आदेश

बाजार की गहराई, यानीexchange.GetDepth()फ़ंक्शन डेटा संरचना में लौटता हैबोलीपूछता हैसरणी में तत्वों के डेटा संरचनाएं।

{
    Price   : 1000,              // 价格
    Amount  : 1                  // 数量
}
गहराई

बाजार की गहराई,exchange.GetDepth()फ़ंक्शन लौटता है.

{
    Asks    : [...],             // 卖单数组,MarketOrder数组,按价格从低向高排序
    Bids    : [...],             // 买单数组,MarketOrder数组,按价格从高向低排序
    Time    : 1567736576000      // 毫秒级别时间戳
}
खाता

खाता जानकारीexchange.GetAccount()फ़ंक्शन लौटता है. लौटने वाली संरचना में डेटा वर्तमान में सेट किए गए लेन-देन जोड़े, सेट किए गए अनुबंध कोड से संबंधित है.

{
    Info            : {...},     // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    Balance         : 1000,      // 可用计价币数量,现货中如果交易对是BTC_USDT,Balance指的是当前可用USDT数量。U本位期货合约中Balance指的是可用保证金USDT的数量
    FrozenBalance   : 0,         // Balance表示的资产用于挂单的冻结数量
    Stocks          : 1,         // 可用交易币数量,现货中如果交易对是BTC_USDT,Stocks指的是当前可用BTC数量。币本位期货合约中Stocks指的是可用保证金的币(baseCurrency)的数量
    FrozenStocks    : 0          // Stocks表示的资产用于挂单的冻结数量
}
स्थिति

फ्यूचर्स ट्रेडिंग में रखे गए पदों की जानकारी,exchange.GetPosition()फ़ंक्शन यहाँ वापस आता है.Positionसंरचनागणितीय समूह

{
    Info            : {...},     // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    MarginLevel     : 10,        // 持仓杆杠大小,如果交易所接口没有提供该数据则通过计算填充,可能会有误差
    Amount          : 100,       // 持仓量,持仓合约张数,通常是正整数。注意每个交易所的合约乘数、价值等合约规格可能不一样,下单规则也可能不一样,例如币安合约可以0.1张下单
    FrozenAmount    : 0,         // 仓位冻结量,用于平仓挂单时的临时冻结仓位数量
    Price           : 10000,     // 持仓均价,原则上该属性为仓位总体的平均价格(不参与结算),如果交易所接口没有提供该数据则用交易所接口现有的持仓均价填充(参与结算)
    Profit          : 0,         // 持仓浮动盈亏,原则上为持仓的未实现盈亏,如果交易所接口没有提供该数据则用交易所接口其它盈亏数据填充,盈亏数值的单位和当前合约保证金的单位相同
    Type            : 0,         // PD_LONG为多头仓位,PD_SHORT为空头仓位
    ContractType    : "quarter", // 合约代码,具体可以参看SetContractType函数描述中传入的参数
    Margin          : 1          // 仓位占用的保证金,如果交易所接口没有提供该数据则使用0填充
}

डिजिटल मुद्रा वायदा के बारे में सावधान रहें।exchange.GetPosition()फ़ंक्शन लौटाता हैPositionसंरचनात्मक सरणी.FrozenAmountProfitMarginगुण, क्योंकि एक्सचेंजों द्वारा दिए गए डेटा एक समान नहीं हैं, विभिन्न एक्सचेंजों के ऑब्जेक्ट कॉलexchange.GetPosition()इंटरफेस पर लौटाए जाने वाले डेटा की परिभाषा अलग-अलग हो सकती है। उदाहरण के लिए, कुछ एक्सचेंजों के पास स्टॉक डेटा में कोई स्थिति फ्रीज नहीं है।FrozenAmount0 के लिए प्रयोग किया जा सकता है यदि कुछ डेटा को गणना की आवश्यकता हैInfoगुणों में मूल डेटा का गणना विश्लेषण।

बाजार

व्यापारिक किस्मों के लिए बाजार की जानकारी,exchange.GetMarkets()फ़ंक्शन में यह शामिल हैMarketसंरचनाशब्दकोश

{
    Symbol          : "btcusdt",       // 该交易品种在交易所的原始名称
    BaseAsset       : "BTC",           // baseCurrency 交易币,统一大写
    QuoteAsset      : "USDT",          // quoteCurrency 计价币,统一大写
    TickSize        : 0.01,            // 价格最小变动数值
    AmountSize      : 0.01,            // 下单量最小变动数值
    PricePrecision  : 2,               // 价格精度,表示价格精确到2位小数
    AmountPrecision : 3,               // 下单量精度,表示下单量精确到3位小数
    MinQty          : 0.001,           // 最小下单量
    MaxQty          : 1000,            // 最大下单量
    MinNotional     : 5,               // 最小下单金额
    MaxNotional     : 9999999,         // 最大下单金额
    CtVal           : 100,             // 合约价值
    Info            : {...}            // 交易所该品种的原始数据
}

चूंकि विभिन्न एक्सचेंजों में बाजार सूचना डेटा का समर्थन अलग-अलग होता है, इसलिए एक्सचेंजों द्वारा समर्थित नहीं किए गए क्षेत्रों को अनदेखा कर दिया जाता है। उपरोक्त सभी फ़ील्डों के डेटा का मूल्यांकन एक्सचेंज इंटरफेस के मूल डेटा से किया जाता है, और विशेष रूप से पूछ सकते हैं।Infoफ़ील्ड सामग्री।

वैश्विक फ़ंक्शन

संस्करण

Version(), सिस्टम के वर्तमान संस्करण का नंबर देता है.

नींद (मिलिसकंड)

Sleep(Millisecond), निष्क्रिय फ़ंक्शन, जो प्रोग्राम को कुछ समय के लिए रोकता है.Millisecondसंख्यात्मक प्रकार के लिए. पैरामीटर मिलीसेकंड के लिए है, उदाहरण के लिएःSleep(1000)एक सेकंड के लिए सो जाओ। 1 मिलीसेकंड से कम की नींद के समय के संचालन का समर्थन करता है, जैसे कि सेटिंगSleep(0.1)◎ समर्थन न्यूनतम पैरामीटर है0.000001, नैनो सेकंड स्केल नींद. 1 नैनो सेकंड बराबर है1e-6एक मिलीसेकंड।

ध्यान देंः उपयोग मेंPythonजब भाषा की नीति लिखी जाती है, तो पूछताछ अंतराल, समय प्रतीक्षा के लिए उपयोग किया जाना चाहिएSleep(Millisecond)फ़ंक्शन. अनुशंसित नहींPythonकाtimeकु काtime.sleep(second)फ़ंक्शन. क्योंकि यह नीति में उपयोग किया जाता हैtime.sleep(second)फ़ंक्शन को पुनः परीक्षण करते समय नीति कार्यक्रम को वास्तव में कुछ सेकंड का इंतजार करना पड़ता है।secondपैरामीटर सेकंड की संख्या के रूप में सेट किया गया था), जिसके कारण नीति बहुत धीमी गति से दोहराई जाती है।

आभासी है

IsVirtual(), यह निर्धारित करता है कि क्या वर्तमान नीति अनुकरण पुनः परीक्षण के लिए चल रही है. एनालॉग पुनः परीक्षण स्थिति लौटाता हैtrueवास्तविक डिस्क वापसfalse

मेल ((...)

Mail(smtpServer, smtpUsername, smtpPassword, mailTo, title, body), मेल भेजें फ़ंक्शन↑ पैरामीटर मानः सभी पैरामीटर स्ट्रिंग प्रकार के हैं↑ रिटर्न मानः बुल प्रकार, भेजने के लिए सफलतापूर्वक वापसtruesmtpServerमेल भेजने के लिएsmtpसेवाएंsmtpUsernameयह एक बहुत ही दिलचस्प लेख है।smtpPasswordई-मेल के लिए SMTP पासवर्ड (ई-मेल के लिए लॉगिन पासवर्ड नहीं)mailToएक ईमेल प्राप्त करने के लिए ईमेल खाते का उपयोग करें।titleयह एक बहुत ही दिलचस्प लेख है, लेकिन यह एक बहुत ही दिलचस्प लेख है।bodyईमेल भेजने के लिए सामग्री, उदाहरण के लिएः

function main(){
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
}
def main():
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")

अधिक

qq89520एक समस्या है कि क्या C फ़ंक्शन को बार-बार या केवल बार-बार दोहराया जाना चाहिए।

वाह वाह_C ((function, args...) क्या यह डिफ़ॉल्ट 3s है? क्या आप डिफ़ॉल्ट रूप से _CDelay ((1000) को _C ((function, args...) से पहले डाल सकते हैं? क्या आप इसे एक बार सेट कर सकते हैं?

भोजन करनाक्लस्टरः यदि आप एक साथ 1000 रोबोट बनाते हैं, और कोई तनाव नहीं है, तो आप कई प्रबंधक बना सकते हैं जो कार्य को विभाजित करते हैं। एक समूह बनाने के लिए कोड के उदाहरण हैं?

वांगजी1Log ((talib.help (('MACD')); केवल js के साथ उपयोग किया जा सकता है, पायथन में कोई talib.help विशेषता नहीं है...

cjz140_C ((function, args...) और Sleep के बीच क्या अंतर है, मुझे लगता है कि यह सब फिर से प्रयास करने के लिए प्रतीक्षा करने का मतलब है?

3263243ySetErrorFilter के बाद ErrorFilter को कैसे खाली करें?

qq47898077अगर आप तीसरे पक्ष की लाइब्रेरी का उपयोग करना चाहते हैं तो क्या कोई तरीका है?

qq47898077यदि आप एक्सचेंज ऑब्जेक्ट्स को परिभाषित करने वाले नए वर्गों का उत्तराधिकारी बनना चाहते हैं, तो पिता वर्ग को क्या भरना चाहिए?

इथानवुक्या कोई स्थानीय डीबगिंग उपकरण है?

पेंगलिहेंगक्या यह exange.IO (("status") है?

पेंगलिहेंगsell का फ़ंक्शन ग्रे क्यों है, क्या यह फ़ंक्शन का प्रतिनिधित्व करने के लिए अनुपयोगी है?

पेंगलिहेंगsell का फ़ंक्शन ग्रे क्यों है, क्या यह फ़ंक्शन का प्रतिनिधित्व करने के लिए अनुपयोगी है?

पेंगलिहेंगjs भाषा नहीं जानता है, हाहाहा, मैं पूछना चाहता हूँ कि क्या मैं es6 समर्थन करता हूँ?

पेंगलिहेंगjs भाषा नहीं जानता है, हाहाहा, मैं पूछना चाहता हूँ कि क्या मैं es6 समर्थन करता हूँ?

Don.Volume की औसत रेखा को कैसे लिखा जाता है?

ज्यूटर्टलएक्सचेंज.बुक (१०००) पर बाजार मूल्य पर खरीदें यदि यह सफल नहीं होता है तो क्या वापस आएगा?

नींबूयह नया फ़ॉन्ट अच्छा लग रहा है।

हिप्पोक्राफ्टबिटमेक्स का परीक्षण नेटवर्क ((testnet.bitmex.com) भी एपीआई इंटरफेस है, लेकिन वर्तमान में एक्सचेंज केवल बिटमेक्स मुख्य स्टेशन का चयन कर सकते हैं, एपीआई दस्तावेज़ का पता https://testnet.bitmex.com/app/apiOverview है। कृपया समर्थन कैसे करें?

चजीजिनvar ret1 = exchanges[0].IO (("api", "future_estimated_price", "symbol=btc_usd"); लॉग (('ओके फ्यूचर्स अनुमानित डिलिवरी मूल्य', ret1); https://dn-filebox.qbox.me/d1ed268c1e75753c5d289447d279aa9d81e41b5f.png एक बार जब आप किसी अन्य एक्सचेंज के फ़ंक्शन इंटरफेस को कॉल करते हैं, तो आप गलत रिपोर्ट लिखते हैं, क्यों?

एलेनफ्रॉस्टलाइनक्या आप जानना चाहते हैं कि realTicker और टिकर में क्या अंतर है? हाल ही में सूट की रणनीति को फिर से लिखना है, दोनों एक साथ दिखाई देते हैं लेकिन पहले एपीआई में कोई उल्लेख नहीं है।

दर्शनहैलो, एक पायथन डेवलपर के रूप में, क्या लगता है कि आपके एपीआई दस्तावेज़ लिख रहे हैं? कुछ फ़ील्ड फ़ंक्शन इंटरफ़ेस अजीब लग रहे हैं, क्या आप एक दस्तावेज़ लिख सकते हैं जैसे कि githubpage और readdocs?

एलेनफ्रॉस्टलाइनGetAccount: [EAPI:Rate limit exceeded] क्या आप जानना चाहते हैं कि यह कैसे हल होता है? इसके अलावा मेरे पास कोई q नहीं है या कोई वीचेन्ज समूह है? धन्यवाद

zhjx2314StochRSI का समर्थन नहीं करता है, क्या इसे जल्द ही जोड़ा जा सकता है?

यहफगpython नीति वास्तविक डिस्क पर जब स्क्रिप्ट अपने स्वयं के अली क्लाउड सर्वर या botvs क्लस्टर पर है?

यहफगpython का कौन सा संस्करण प्रयोग किया जाता है?

फकीलीGetFee की व्याख्या यह होनी चाहिए कि यह एक Fee स्ट्रक्चर लौटाता है।

झ्वपक्या आप तालिब को कॉल करने के लिए एक js विधि का उपयोग कर सकते हैं?

यहफगपायथन दस्तावेज़ीकरण प्राप्त करें

wmjbs123क्या रणनीति संपादक का कोड पृष्ठभूमि काले रंग का हो सकता है? सफेद आँखों के साथ, रात में कोड लिखना, निकट दृष्टि के लिए आसान है

Don.रोबोट के वीवीसी संदेश में सारांश कैसे सेट करें?

पागलक्या आप ऑर्डर स्ट्रक्चर में एक समान लेनदेन मूल्य क्षेत्र जोड़ सकते हैं?

छोटे बच्चेGetOrders: सभी अधूरे ऑर्डर प्राप्त करें, एक ऑर्डर सरणी संरचना लौटाता है, चीन में बिटकॉइन लेनदेन ETH में, केवल हाल के 10 आइटम लौटाता है, क्या यहां एक फ़ंक्शन है जो सभी अधूरे ऑर्डर वापस करता है?

यहफगएक गणितीय फ़ंक्शन जो कि सांख्यिकीय संभावना सिद्धांत के लिए आवश्यक है, यह कहाँ से आता है?

जिबंग.Cross ((x, y) फ़ंक्शन का क्या अर्थ है?

मेरी मामा ने कहाLogReset सभी लॉग को खाली कर देता है और एक संख्यात्मक पैरामीटर के साथ लॉग रिसेट कर सकता है, जो कि लॉग को सुरक्षित रखने के लिए निर्दिष्ट करता है यह हाल के लॉग्स को कैसे हटाता है?

एडवर्डग्यूतालिब में CORRE फ़ंक्शन ऐसा लगता है जैसे कि इसे नहीं लाया गया है या इसे याद किया गया है?

गरीब पहाड़ियाऐसा लगता है कि कोई सूचक संदर्भ सुविधा नहीं है!

छोटाk लाइन समय पढ़ने के लिए कैसे अनुवाद करता है अब समय ओह, समझ में नहीं आता, बहुत लंबा एक, हल, धन्यवाद

छोटामैं record.remove ((records[0]) का उपयोग कर रहा हूँ, लेकिन यह नहीं कर रहा है

सांपसामान्य रूप से प्राप्त किया जाता है घंटे के लाइन, कैसे दिन के लाइन के लिए एटीआर कॉल करने के लिए?

सांपसामान्य रूप से प्राप्त किया जाता है घंटे के लाइन, कैसे दिन के लाइन के लिए एटीआर कॉल करने के लिए?

57278863सीखें कि पारंपरिक वायदा कैसे प्राप्त करें मूल्य और आदेश, क्षमा करें, जड़ें पतली हैं

किरिनएक पारंपरिक फ्यूचर्स ट्रेडिंग उदाहरण!

छोटाशून्य, क्या आप पारंपरिक वायदा व्यापार के उदाहरण लिख सकते हैं?

छोटाजब एक ही समय में कई रिक्त ऑब्जेक्ट हो, तो कैसे प्रिंट करें, मेरा प्रिंट कैसे करें [object object], कैसे प्राप्त करें, और GetTicker))) कैसे प्राप्त करें, उस सप्ताह, अगले सप्ताह, और तिमाही कैसे प्राप्त करें, उस सप्ताह की कीमत, कोष्ठक में उस सप्ताह, अगले सप्ताह और तिमाही मैं लिखता हूं।

चजीजिनक्या फ्यूचर्स एक्सचेंज GetTicker के साथ ट्रेडों को प्राप्त कर सकते हैं? क्या वे उस प्रकार के अनुबंधों के लिए ट्रेडों को वापस करते हैं ((सप्ताह, अगले सप्ताह...)?

बेचनाStochRSI क्या है, क्या आप जोड़ सकते हैं?

मोमोक्सCancelOrder ((orderId) ऑर्डर नंबर के आधार पर एक ऑर्डर रद्द करें, true या false लौटाएं, true= कक्ष को सफलतापूर्वक रद्द किया गया है, है ना?

मोमोक्स_G(K, V) संग्रहीत वैश्विक शब्दकोश तालिका क्या इस पद्धति द्वारा संग्रहीत वैश्विक चर का उपयोग विभिन्न नीतियों के बीच डेटा साझा करने के लिए किया जा सकता है?

फ्लुफी3डीतेजी से लोकप्रिय

शून्यLogProfitReset का उपयोग करके आय लॉग को रीसेट किया जा सकता है।

क्सिक्या आप सीधे ईए को कॉपी कर सकते हैं?

शिरोनमानमुझे लगता है कि यह मंच बहुत अच्छा है, बहुत अच्छा है, अधिक समूह में बातचीत है।

छोटायह कौन सी भाषा है, क्या इसके लिए कोई अध्ययन सामग्री है?

jxhbtcData error एक हफ्ते से नहीं हो पा रहा है रोबोट को कनेक्ट

घिहुक्या सूचकांक तालिका केवल समापन मूल्य के लिए गणना करती है?

btcrobotहाय, दुनिया

छोटे सपने_C फ़ंक्शन तब तक पुनः प्रयास करता है जब तक कि परिणाम प्राप्त नहीं हो जाता है।

छोटे सपनेpython के लिए talib पुस्तकालय को स्थापित करने की आवश्यकता है.https://www.botvs.com/bbs-topic/669 इस पोस्ट पर जा सकते हैं.

छोटे सपनेस्लीप एक प्रोग्राम है जो कुछ नहीं करता है और प्रतीक्षा करता है। पैरामीटर सेट होने के लिए मिलीसेकंड की संख्या, _C एक बार फिर से कॉल करने के लिए एक पैरामीटर है।

छोटे सपनेबिना विरासत के, JS सीधे ऑब्जेक्ट में लिपटे {name: "नया ऑब्जेक्ट", old_exchange : exchange[0],...... }

छोटे सपनेस्थानीय संपादक रिमोट सिंक प्लगइन, मूल रूप से स्थानीय संपादक रिमोट डिबगिंग है।

छोटे सपनेQQ समूह में आ सकते हैं, और चर्चा करने में आसान हैं।

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

छोटे सपनेES6 अस्थायी रूप से असमर्थित है, ^^

छोटे सपनेQQ में जा सकते हैं, मुझे समस्या का वर्णन करें, मैं जवाब दूंगा ^^

छोटे सपनेयह एक त्रुटि वापस करता है और आदेश नहीं देता है (वास्तव में, यह खरीदने के लिए पर्याप्त नहीं है!

ज्यूटर्टलउदाहरण के लिए OKCoin, अगर खरीदे गए लोगों की संख्या से अधिक है, तो क्या वापस आ जाएगा?

छोटे सपनेमैं एक ऑर्डर नंबर लौटाता हूं, जो कि एक ऑर्डर नंबर है, जो कि एक ऑर्डर नंबर है, जो कि एक ऑर्डर नंबर है, जो कि एक ऑर्डर नंबर है।

शून्यचल रहे समय पर लेन-देन स्विच करने के लिए समर्थन है, नवीनतम होस्ट डाउनलोड करने की आवश्यकता है। समर्थन Bter/Poloniex विस्तृत एपीआई प्रलेखन लेन-देन फ़ंक्शन टैब नीचे वर्णित ((खाली ब्राउज़र कैश खाली करें यदि यह नहीं दिखता है तो ताज़ा करें)

छोटे सपनेQQ मैं हूँ, मैं आपकी मदद कर सकता हूँ।

पेशेवर पालन-पोषणमैं होस्ट का आईपी सेट करता हूं?

छोटे सपनेयह एक अंतर्निहित लिंक है जो स्थापित नहीं किया गया है सर्वर प्रतिक्रिया नहीं कर रहा है; क्या एपीआई कुंजी का अनुरोध करते समय एक आईपी पता सेट किया गया है?

पेशेवर पालन-पोषणयह शर्म की बात है................................................................................................ 2017-05-23 21:08:24 बिटकॉइन युग त्रुटि GetAccount: timeout 2017-05-23 21:08:02 बिटकॉइन युग त्रुटि GetAccount: timeout 2017-05-23 21:07:40 बिटकॉइन युग त्रुटि GetAccount: timeout 2017-05-23 21:07:20 पुनः आरंभ करें क्या यह आईपी श्वेतसूची की समस्या है?

छोटे सपनेएक्सचेंज के सर्वर ने कोई प्रतिक्रिया नहीं दी, तीन बार हाथ मिलाने के बाद भी टीसीपी प्रोटोकॉल स्थापित नहीं हुआ।

पेशेवर पालन-पोषणA connection attempt failed because the connected party did not properly respond after a period of time. एक कनेक्शन प्रयास विफल हो गया क्योंकि कनेक्टेड पार्टी ने समय की अवधि के बाद ठीक से प्रतिक्रिया नहीं दी।

छोटे सपनेनमस्ते! यह exchange.IO ((api, ApiName, Args) फ़ंक्शन का समर्थन नहीं करता है, https://www.botvs.com/bbs-topic/812 पर जाएँ

पेशेवर पालन-पोषणएक कनेक्शन प्रयास विफल रहा क्योंकि कनेक्टेड पार्टी ने समय की अवधि के बाद ठीक से प्रतिक्रिया नहीं दी,

पेशेवर पालन-पोषणक्या बीट युग समर्थन नहीं करता है?

छोटे सपनेhttps://dn-filebox.qbox.me/a709b30c6cc0a3565234b9e0c99b073f7ba8b454.png यह ठीक है।

नींबूउदाहरण के लिए, मैं एक पूर्ण-मुद्रा लेनदेन करना चाहता हूं, लेकिन BOTvs केवल कुछ ही मुद्राओं का समर्थन करता है, और exchange.IO पी नेटवर्क का समर्थन नहीं करता है।

छोटे सपनेआप exchange.IO को कॉल कर सकते हैं।

नींबूक्या एपीआई के लिए खाता सत्यापन की आवश्यकता है?

छोटे सपनेयदि एपीआई के लिए खाता सत्यापन की आवश्यकता नहीं है, तो httpQuery का उपयोग किया जा सकता है (BotVS प्रलेखन देखें), और वास्तविक लेनदेन एपीआई तक पहुंच की आवश्यकता है।

छोटे सपनेHttpQuery API पैरामीटर का उपयोग करके संदेश भेजेंः https://www.okcoin.com/api/v1/future_estimated_price.do?symbol=btc_usd, यह ठीक है. खाता सत्यापन की आवश्यकता नहीं है कि लेनदेन एपीआई के लिए सीधे मंच पर HttpQuery फ़ंक्शन का उपयोग करें, जो खाते से संबंधित हैं, IO एपीआई का उपयोग करें (IO इन गैर-प्रमाणित लेनदेन एपीआई का समर्थन नहीं करता है) । पोस्टः https://www.botvs.com/bbs-topic/850

दर्शनअच्छा धन्यवाद, और आशा है कि एक अच्छा एपीआई प्रलेखन है।

छोटे सपनेक्या आप जानते हैं कि realTicker एपीआई कहां दिखाई देता है?

छोटे सपनेhttps://dn-filebox.qbox.me/fe1a6f5563ed43a5357f858ecf8a50239619228e.png एपीआई दस्तावेज जावास्क्रिप्ट भाषा में वर्णित है, पायथन संस्करण में वर्णित है, जो कि कंकड़ संचार समुदाय कंकड़ पृष्ठ के शीर्ष पर पोस्ट किए गए हैं.

शून्यनमस्ते, सुझाव के लिए धन्यवाद, एपीआई दस्तावेज़ीकरण वर्तमान में फिर से तैयार किया जा रहा है।

छोटे सपनेआपका स्वागत है - यह दर्शाता है कि उपयोग की आवृत्ति सीमा से अधिक है। https://dn-filebox.qbox.me/a09498920d04cac62624b7438a058d2098d8fb00.png क्या रणनीति में Sleep (1000) फ़ंक्शन का उपयोग किया गया है?, यह 1000 प्रोग्राम को प्रति राउंड एक सेकंड के लिए रोक देता है, जिसे स्वयं सेट किया जा सकता है, जिसका उद्देश्य प्रोग्राम को नियंत्रित करना है एपीआई तक पहुंच की आवृत्ति, क्योंकि कुछ एक्सचेंजों ने अधिकतम पहुंच सीमा सेट की है, एक निश्चित समय से अधिक पहुंच से इनकार कर दिया जाएगा, आईपी पते को अवरुद्ध कर दिया जाएगा।

छोटे सपनेhttps://dn-filebox.qbox.me/c29ab7fc279e1b758355f137907cf52dc8257df6.png मैंने व्यक्तिगत रूप से लिखा है कि स्टोक्सआरएसआई सूचकांक जो पहले से ही OK के साथ तुलना की गई है, सहमत है कि गति थोड़ी धीमी है, अनुकूलित है, और अस्थायी रूप से उपलब्ध है।https://www.botvs.com/bbs-topic/392

शून्यआप अपने सर्वर पर botvs द्वारा प्रदान किए गए या अपने स्वयं के होस्ट के सर्वर पर पुनः परीक्षण का चयन कर सकते हैं, संस्करण 2.7.5 है।

छोटे सपनेअब इसे जोड़ा गया है।

छोटे सपनेअब आप अपनी पृष्ठभूमि शैली को स्वयं कॉन्फ़िगर कर सकते हैं।

छोटे सपनेपायथन दस्तावेज़ लिख रहा है।

छोटे सपनेतालिब की लाइब्रेरी समर्थित है।

hzzgood48 https://www.botvs.com/bbs-topic/276

छोटे सपनेऐसा लगता है कि रणनीति वर्ग में एक उदाहरण है, https://www.botvs.com/strategy/15098

शून्यऑर्डर के औसत मूल्य गुणों को एक्सेस करें, एक्सचेंजों का समर्थन कर सकते हैं, जो एक्सचेंजों का समर्थन नहीं करते हैं वे हमेशा 0 के लिए हैं

यहफगतीसरे पक्ष के स्रोतों का संदर्भ कैसे लें?

शून्ययदि mathjs संतुष्ट नहीं होता है, तो यह केवल तीसरे पक्ष की लाइब्रेरी को कॉपी और आयात करने की नीति का पता लगा सकता है।

छोटे सपनेमैं एक अजनबी हूँ, मुझे समूह में समस्या है, मैं ऑनलाइन हूँ।

जिबंगधन्यवाद.

छोटे सपनेक्या आप एक समूह में हैं? आप नोटरी संस्करण में देख सकते हैं डिजिटल मुद्रा लेनदेन वर्ग कोड विश्लेषण। इसमें $Cross फ़ंक्शन के लिए नोटरी है।

शून्यआप नवीनतम को नहीं हटा सकते, केवल कुछ नवीनतम को बचा सकते हैं... पहले के सभी पुराने को हटा दें।

किरिनस्थिति [i] का उपयोग करके प्रत्येक होल्डिंग प्राप्त करने के लिए, स्थिति एक सरणी है

नींबूexchange.GetRecords ((PERIOD_D1));

किरिनमेरा पारंपरिक वायदा हमेशा GetAccount: not login, "पासवर्ड गलत टाइप नहीं किया गया, लॉग इन नहीं किया गया"

शून्यडिफ़ॉल्ट रूप से सप्ताह है, जिसे प्राप्त करने के लिए सेट कॉन्ट्रैक्ट टाइप की आवश्यकता होती है।

शून्यजैसा कि आप देख सकते हैं, यह सच है, यह एक्सचेंज द्वारा लौटाए गए ऑर्डर को रद्द करने के कार्य का मूल्य है, लेकिन वास्तव में रद्द नहीं किया गया है, यह एक्सचेंज के भीतर कैसे किया जाता है।

मोमोक्स3q

शून्यकुछ समय के लिए नहीं, यह अलग है

सियानशुआनबेशक नहीं, यह MT4 के लिए विशेष है।

शून्यजावास्क्रिप्ट के बारे में जानकारी इंटरनेट पर है।

बेचनाक्या आपकी समस्या हल हो गई है?

शून्यज्यादातर, इनपुट डेटा सीधे रिकॉर्ड या शुद्ध मूल्य के रूप में हो सकता है।