[TOC]
FMZ क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म क्या कर सकता है?
एफएमजेड (निर्मात्री) क्वांटिफाइड ट्रेडिंग प्लेटफॉर्मयह क्वांटिफाइड ट्रेडिंग के क्षेत्र में सबसे अधिक विशेषज्ञता वाला क्वांटिफाइड समुदाय है, जहां आप क्वांटिफाइड ट्रेडिंग रणनीतियों को सीख सकते हैं, लिख सकते हैं, साझा कर सकते हैं, खरीद सकते हैं और बेच सकते हैं; ऑनलाइन रीट्रीट कर सकते हैं और एनालॉग ट्रेडिंग के लिए एनालॉग डिस्क का उपयोग कर सकते हैं; चलाने, सार्वजनिक, ऑब्जेक्टिव वास्तविक डिस्क; लगभग सभी मुख्यधारा के डिजिटल मुद्रा एक्सचेंजों का समर्थन करता है।
पूरी श्रृंखला
फोटो ट्यूटोरियलः
वीडियो ट्यूटोरियलः
JavaScript
ट्यूटोरियल, प्लेटफ़ॉर्म का उपयोग और रणनीति लेखन जैसे पूर्ण सामग्री। यदि आपके पास प्रोग्रामिंग और लेनदेन के बुनियादी ज्ञान हैं, तो आप लगभग दो दिनों में एक सरल रणनीति लिख सकते हैं। यदि आपके पास कोई प्रोग्रामिंग बुनियादी ज्ञान नहीं है, तो आपको केवल एक या दो सप्ताह में बुनियादी प्रोग्रामिंग सीखने की आवश्यकता है।bilibili
वीडियो ट्यूटोरियल भी उपलब्ध हैंःआविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म - प्रदाता अवधारणा
आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म - वेबसाइट का अवलोकन
आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म - प्रदाता तैनाती विवरण
आविष्कारकों ने क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म बनाया - वास्तविक डिस्क
आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म - रणनीति पंजीकरण, कॉपी कोड व्याख्या
आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म - पूर्ण रणनीति, पैरामीटर विन्यास आयात निर्यात विवरण
आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म - डिबगिंग टूल और दूरस्थ संपादनअगर आपको कोई समस्या है तो आप किसी भी समय मंच पर जा सकते हैं और सवाल पूछ सकते हैं, चर्चा कर सकते हैं, प्लेटफॉर्म पर वर्कआउट कर सकते हैं, टेलीग्राम पर जा सकते हैं।तार@group@administrator, सामान्य तौर पर प्रश्नों का उत्तर जल्दी दिया जाता है।
चैट जीपीटी सहायता विकास का समर्थन करें
FMZ क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म ChatGPT को एक सहायक विकास उपकरण के रूप में शामिल करता है, जिसे "कंट्रोल सेंटर" के शॉर्टकट बटन में क्लिक करके "ChatGPT" पर जा सकता है।चैट जीपीटी सहायक उपकरण पृष्ठ。
क्या मैं अपनी रणनीति को लागू करने के लिए कौन सी प्रोग्रामिंग भाषाओं का उपयोग कर सकता हूं?
एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का समर्थनJavaScript
、TypeScript
、Python
、C++
、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
。
समर्थित समझौते
एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर रणनीति विकसित करें, जो केवल एफएमजेड क्वांटिफाइड खाताधारकों के लिए दिखाई देती है। और एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर रणनीति कोड का पूर्ण स्थानीयकरण संभव है, जैसे कि रणनीति को एक में पैक करना।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_week 、next_week 、quarter 、swap 。 |
HuobiDM | फ्यूचर्स एक्सचेंज का उद्देश्य | HuobiDM टोकन वायदा (टोकन अनुबंध) है, जो सीमित लेनदेन जोड़े का समर्थन करता है, जैसेःBTC_USD ,ETH_USD उदाहरण के लिए, मुद्राओं के लिए लेन-देनUSD , विशिष्ट अनुबंध कोड सेट करें ((देखेंexchange.SetContractType इस प्रकार, एक अनुबंध के लिए एक अनुबंध कोड है।this_week 、next_week 、quarter 、swap 。 |
बिटमेक्स | फ्यूचर्स एक्सचेंज का उद्देश्य | लेन-देन के लिएः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 एमबी है, डेटा सीमा के भीतर स्क्रिप्ट समय सीमा को सीमित नहीं करता है, यदि आवश्यक हो तो स्क्रिप्ट समय सीमा को यथासंभव बड़ा करें, गहराई फ़ील्ड संख्यात्मक सेटिंग को कम कर सकते हैं, स्क्रिप्ट डेटा का उपयोग करके स्क्रिप्ट समय सीमा को बढ़ाने के लिए स्क्रिप्ट डेटा का उपयोग नहीं करते हैं।GetDepth
、GetTrades
फ़ंक्शन लेन-देन डेटा प्राप्त करता है। समयरेखा पर किसी लेन-देन डेटा समय पर कॉल करता हैGetTicker
,GetTrades
,GetDepth
,GetRecords
, समय को पुनः परीक्षण समयरेखा पर कई बार आगे नहीं बढ़ाता है ((अगले बाजार डेटा क्षण में कूदने के लिए ट्रिगर नहीं करता है) । उपरोक्त में से किसी एक फ़ंक्शन के लिए दोहराए जाने वाले कॉल, समय को पुनः परीक्षण समयरेखा पर आगे बढ़ाएंगे ((अगले बाजार डेटा क्षण में कूदने के लिए) । पुनः परीक्षण के लिए वास्तविक डिस्क स्तर पर पुनः परीक्षण का उपयोग करना उचित नहीं है।
वास्तविक डिस्क स्तर पर पुनः परीक्षण वर्तमान समर्थन:
एफएमजेड क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म रिट्रीट सिस्टम पैरामीटर समायोजन की सुविधा को रिट्रीट के समय प्रत्येक पैरामीटर के अनुकूलन विकल्पों के आधार पर समायोजित किया जाता है, जैसेः
पैरामीटर संयोजन उत्पन्न करें और इन पैरामीटर संयोजनों के माध्यम से पुनरावृत्ति करें (यानी, प्रत्येक पैरामीटर संयोजन को एक बार दोहराएं) । नीति पैरामीटर केवल ** संख्यात्मक ** पैरामीटर के प्रकार के लिए पुनरावृत्ति प्रणाली में पैरामीटर को समायोजित कर सकते हैं।
उदाहरण के लिए, रीसेट पृष्ठ पर पैरामीटर अनुकूलन विकल्प सेट करेंः
पैरामीटर अनुकूलन मोड पुनः परीक्षणः
नीति संपादन पृष्ठ पर, "एलोकेशन रीट्रीट" अनुभाग में, रीट्रीट कॉन्फ़िगरेशन, नीति पैरामीटर जैसे विकल्पों को रीट्रीट करने के लिए सेट किया जा सकता है। रीट्रीट कॉन्फ़िगरेशन रीट्रीट समय सीमा, रीट्रीट किए गए ट्रेडों, रीट्रीट स्लाइडिंग समय बिंदुओं, प्रसंस्करण शुल्क और अन्य शर्तों को सेट करने के लिए उपयोग किया जाता है; नीति पैरामीटर नीति के लिए पैरामीटर विकल्पों को सेट करते हैं। जब ये पैरामीटर सेट किए जाते हैं, तो इन सेटिंग्स को रीट्रीट की नीति के अनुसार सेट किया जा सकता है, तो इन सेटिंग्स को कैसे सहेजा जाए?
JavaScript
उदाहरण के लिए, "स्रोत फ़ाइल पर सहेजें पुनर्लेखन सेटिंग्स" पर क्लिक करेंः
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()
, एक उपयोगकर्ता द्वारा किए गए 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()
फ़ंक्शन निष्पादित, फ़ंक्शन समर्थित नहीं हैPython
、C++
भाषा की रणनीति ।
function main() {
var arr = []
Log(arr[6].Close)
}
function onerror() {
Log("错误")
}
# python不支持
// C++不支持
मेंJavaScript
、Python
、C++
भाषा में लिखी गई नीतियों को नीतियों के मुख्य लूप में बुलाया जाना चाहिए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
भाषाओं के लिए टेम्पलेट्स का संग्रहः
Python
भाषाओं के लिए टेम्पलेट्स का संग्रहः
C++
भाषाओं के लिए टेम्पलेट्स का संग्रहः
टेम्पलेट वर्गों के लिए निर्यात फ़ंक्शन निर्यात फ़ंक्शन एक टेम्पलेट लाइब्रेरी के लिए एक इंटरफ़ेस फ़ंक्शन है जिसे उस टेम्पलेट लाइब्रेरी के लिए एक नीतिगत कॉल के रूप में संदर्भित किया जा सकता है। निर्यात फ़ंक्शन टेम्पलेट लाइब्रेरी में घोषित किया गया है और उदाहरण कोड का कार्यान्वयन निम्नानुसार हैः
/*
-- 策略引用该模板以后直接用 $.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");
}
टेम्पलेट श्रेणी सूची के पैरामीटर टेम्पलेट लाइब्रेरी के पैरामीटर का उपयोग टेम्पलेट लाइब्रेरी कोड में वैश्विक चर के रूप में किया जाता है।
टेम्पलेट श्रेणी सूची के लिए पैरामीटर सेट करेंः
टेम्पलेट लाइब्रेरी कोडः
$.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());
}
टेम्पलेट लाइब्रेरी का संदर्भ लें
नीति संपादित पृष्ठ टेम्पलेट बार में संदर्भ को चुनने के बाद, नीति को सहेजें।
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
कीवर्ड ‖
पैरामीटर प्रकारः
चर | वर्णन | नोट्स | प्रकार | डिफ़ॉल्ट | स्पष्टीकरण |
---|---|---|---|---|---|
संख्या | संख्यात्मक प्रकार | नोट्स | अंक (number) | 1 | C++ की नीति फ्लोटिंग पॉइंट है। |
स्ट्रिंग | स्ट्रिंग | नोट्स | स्ट्रिंग (string) | हैलो एफएमजेड | डिफ़ॉल्ट मानों को इनपुट करते समय कोई उद्धरण की आवश्यकता नहीं होती है, इनपुट स्ट्रिंग के रूप में संसाधित होते हैं। |
कंबोक्स | ड्रॉप बॉक्स | नोट्स | ड्रॉप-डाउन बॉक्स ((selected) | 1|2|3 | combox चर स्वयं एक संख्यात्मक मान है, जो ड्रॉपबॉक्स नियंत्रण के चयन के लिए लक्षित सूचकांक का प्रतिनिधित्व करता है, जिसमें पहला ड्रॉपबॉक्स हेडर 1 है, जिसका सूचकांक मान 0 है, क्रमशः अनुशंसित है। |
बोल | विकल्पों का चयन करें | नोट्स | बुल प्रकार ((true/false) | सच | यदि यह चयनित है, तो चर bool true है, यदि यह चयनित नहीं है, तो चर bool false है. |
गुप्तString | एन्क्रिप्शन स्ट्रिंग | नोट्स | एन्क्रिप्टेड स्ट्रिंग | पासवर्ड | स्ट्रिंग के समान, एन्क्रिप्टेड स्ट्रिंग को एन्क्रिप्टेड भेजा जाता है, बिना स्पष्ट पाठ के। |
number
、string
、combox
、bool
、secretString
。पैरामीटर सेटिंग पर निर्भर करता हैः
एक पैरामीटर सेट किया जा सकता है ताकि दूसरे पैरामीटर को उस पैरामीटर के आधार पर चयनित किया जा सके। उदाहरण के लिए हम पैरामीटर सेट करते हैं।numberA
, एक संख्यात्मक प्रकार है.numberA
यह एक पैरामीटर पर आधारित हैःisShowA
(बुल प्रकार) का सही निर्णयnumberA
दिखाएँ और छिपाएँ.numberA
चर को इंटरफ़ेस पैरामीटर पर सेट किया गया हैःnumberA@isShowA
。
इस तरह से चयन नहीं किया गयाisShowA
पैरामीटर,numberA
पैरामीटर छिपा हुआ है. ड्रॉपडाउन नियंत्रण प्रकार के लिए पैरामीटर, पैरामीटर निर्भर करता है कि क्या ड्रॉपडाउन किसी विकल्प के बराबर है या नहीं.सूचकांक मान..isShowA
उदाहरण के लिए, यदि आप एक चर सेट करते हैं तो यह लिखा जाता हैःnumberA@combox==2
。numberA
पैरामीटर के आधार परcombox
क्या पैरामीटर को तीसरे विकल्प के लिए दिखाया या छिपाया जाना है ((इंडेक्स 0 पहले विकल्प के लिए, इंडेक्स 1 दूसरे विकल्प के लिए, इंडेक्स 2 तीसरे विकल्प के लिए) ।)
नीति इंटरफ़ेस पैरामीटर, इंटरैक्टिव कंट्रोल, टेम्पलेट पर पैरामीटर समूह कार्यक्षमताः
केवल पैरामीटर के विवरण के साथ शुरू करने के लिए जोड़ा(?第一组)
इस तरह के लोगों के लिए, यह बहुत अच्छा है।
नीति का उपयोग करते समय पैरामीटर प्रदर्शित करने के लिए समूहबद्ध किया जाता हैः
पैरामीटर का डिफ़ॉल्ट मान सहेजेंः
नीति पैरामीटर चित्रित है, यदि आप नीति पैरामीटर के डिफ़ॉल्ट मान को सहेजना चाहते हैं, तो नीति पैरामीटर को संशोधित करने के बाद क्लिक करें।保存回测设置
बटन ।
नीति में सेट किए गए नीति पैरामीटर को कोड के रूप में सहेजा जा सकता हैः
/*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 लाइनBAR
。Record
इनमें से एक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
संरचनात्मक सरणी.FrozenAmount
、Profit
、Margin
गुण, क्योंकि एक्सचेंजों द्वारा दिए गए डेटा एक समान नहीं हैं, विभिन्न एक्सचेंजों के ऑब्जेक्ट कॉलexchange.GetPosition()
इंटरफेस पर लौटाए जाने वाले डेटा की परिभाषा अलग-अलग हो सकती है। उदाहरण के लिए, कुछ एक्सचेंजों के पास स्टॉक डेटा में कोई स्थिति फ्रीज नहीं है।FrozenAmount
0 के लिए प्रयोग किया जा सकता है यदि कुछ डेटा को गणना की आवश्यकता है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)
, मेल भेजें फ़ंक्शन↑ पैरामीटर मानः सभी पैरामीटर स्ट्रिंग प्रकार के हैं↑ रिटर्न मानः बुल प्रकार, भेजने के लिए सफलतापूर्वक वापसtrue
。
smtpServer
मेल भेजने के लिए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 ((
पेशेवर पालन-पोषणएक कनेक्शन प्रयास विफल रहा क्योंकि कनेक्टेड पार्टी ने समय की अवधि के बाद ठीक से प्रतिक्रिया नहीं दी,
पेशेवर पालन-पोषणक्या बीट युग समर्थन नहीं करता है?
छोटे सपने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 के लिए विशेष है।
शून्यजावास्क्रिप्ट के बारे में जानकारी इंटरनेट पर है।
बेचनाक्या आपकी समस्या हल हो गई है?
शून्यज्यादातर, इनपुट डेटा सीधे रिकॉर्ड या शुद्ध मूल्य के रूप में हो सकता है।