आप डेटाबेस में सीधे लिखने के लिए पायथन का उपयोग कर सकते हैं.
function onexit(){
_G('profit', profit)
}
function main(){
_G("num", 1); // Set a global variable num, with a value of 1 second
_G("num", "ok"); // Change a global variable num, whose value is the string "ok"
_G("num", null); // Delete the global variable num
_G("num"); // Return the value of the global variable num; if it does not exist, return null
var profit = 0
if(_G('profit')){
profit = _G('profit')
}
}
आदेश देते समय, मूल्य और मात्रा की सटीकता को सामान्य रूप से नियंत्रित करने की आवश्यकता होती है; FMZ ने _N फ़ंक्शन में निर्मित किया है ताकि सहेजे जाने वाले दशमलव स्थानों को निर्धारित किया जा सके; उदाहरण के लिए,_N(4.253,2)
4.25.
प्लेटफ़ॉर्म एपीआई को कॉल करने से हर बार एक्सेस सफल होने की गारंटी नहीं दी जा सकती है, और _C एक स्वचालित पुनः प्रयास फ़ंक्शन है। यह हमेशा निर्दिष्ट फ़ंक्शन को तब तक कॉल करेगा जब तक कि यह सफलतापूर्वक वापस न हो जाए (फंक्शन पुनः प्रयास करेगा यदि यह शून्य या गलत लौटाता है); उदाहरण के लिए,_C(exchange.GetTicker)
, 3 सेकंड के डिफ़ॉल्ट पुनः प्रयास अंतराल के साथ, और आप _CDelay फ़ंक्शन को पुनः प्रयास अंतराल को नियंत्रित करने के लिए कॉल कर सकते हैं, जैसे _CDelay(1000), जिसका अर्थ है कि _C फ़ंक्शन पुनः प्रयास अंतराल को 1 सेकंड में बदलना।GetTicker()
, exchange.GetDepth
, GetTrade
, GetRecords
, GetAccount
, GetOrders
औरGetOrder
पहुँच विफलता के कारण होने वाले कार्यक्रम के विराम को रोकने के लिए।
CancelOrder
_C फ़ंक्शन का उपयोग नहीं कर सकता है, क्योंकि ऑर्डर रद्द करने में विफलता के विभिन्न कारण हैं. यदि कोई ऑर्डर निष्पादित किया गया है, तो ऑर्डर रद्द करने से विफलता वापस आ जाएगी, और _C फ़ंक्शन का उपयोग करने से हर समय पुनः प्रयास होगा.
_C फ़ंक्शन पैरामीटर में भी पास कर सकता है और कस्टम फ़ंक्शन में भी उपयोग किया जाता है।
function main(){
var ticker = _C(exchange.GetTicker)
var depth = _C(exchange.GetDepth)
var records = _C(exchange.GetRecords, PERIOD_D1) // Pass in the parameters
}
कॉल करना_D()
सीधे वर्तमान समय स्ट्रिंग लौटाएगा, जैसेः2019-08-15 03:46:14
. यदि इसे बैकटेस्ट के दौरान बुलाया जाता है, तो बैकटेस्ट समय लौटाया जाएगा. आप समय का न्याय करने के लिए _D फ़ंक्शन का उपयोग कर सकते हैं, जैसेः_D().slice(11) > '09:00:00':
.
_D(timestamp, fmt)
, ms टाइमस्टैम्प को टाइम स्ट्रिंग में परिवर्तित करेगा, जैसे कि_D(1565855310002)
. fmt पैरामीटर समय प्रारूप है, और डिफ़ॉल्ट हैyyyy-MM-dd hh:mm:ss
.
कुछ आम तौर पर इस्तेमाल किए जाने वाले संकेतक कार्यों के लिए, जैसे कि MA\MACD\KDJ\BOLL और अन्य सामान्य संकेतक, जिन्हें सीधे FMZ प्लेटफॉर्म द्वारा निर्मित किया गया है, और विशिष्ट समर्थित संकेतक एपीआई दस्तावेज़ में पाए जा सकते हैं।
संकेतक कार्यों का उपयोग करने से पहले, K-लाइन की लंबाई का न्याय करना सबसे अच्छा है। जब पिछले K-लाइन की लंबाई गणना के लिए आवश्यक अवधि को पूरा नहीं कर सकती है, तो परिणाम हैnull
उदाहरण के लिए, यदि इनपुट के-लाइन लंबाई 100 है और एमए की गणना के लिए अवधि 10 है, तो पहले 9 मान सभी शून्य हैं, और फॉर्म 9 मानों के बाद गणना सामान्य रूप से की जाएगी।
जावास्क्रिप्ट भी पूर्ण तालिब का समर्थन करता है, एक तृतीय-पक्ष पुस्तकालय के रूप में, जैसे कि आह्वान विधि के साथtalib.CCI(records)
. कृपया देखेंhttp://ta-lib.org/function.html. पायथन के लिए, आप तालिब लाइब्रेरी को स्वयं स्थापित कर सकते हैं. संकलन की आवश्यकता के कारण, आप बस स्थापित करने के लिए पाइप का उपयोग नहीं कर सकते. आप स्थापना विधि के लिए स्वयं खोज कर सकते हैं.
संकेतक कार्य न केवल K-लाइन डेटा पारित कर सकते हैं, लेकिन यह भी किसी भी सरणी पारित कर सकते हैं
function main(){
var records = exchange.GetRecords(PERIOD_M30)
if (records && records.length > 9) {
var ma = TA.MA(records, 14)
Log(ma)
}
}
यहाँ हम बॉट्स में कुछ आम तौर पर इस्तेमाल जावास्क्रिप्ट कार्यों का परिचय.
Date.now()
वर्तमान टाइमस्टैम्प लौटाता है;parseFloat()
संख्याओं में स्ट्रिंग स्थानांतरित करता है, जैसे किparseFloat("123.21")
;parseInt()
पूर्णांक में स्ट्रिंग स्थानांतरित करता है;num.toString()
संख्याओं को संख्या चर num के साथ स्ट्रिंग में स्थानांतरित करता है;JSON.parse()
स्वरूप Json स्ट्रिंग, जैसे किJSON.parse(exchange.GetRawJSON())
;Math.max()
, Math.abs()
आदि; संदर्भ:https://www.w3school.com.cn/jsref/jsref_obj_math.asp ;बॉट रणनीति फ़ंक्शन लिखने के दौरान कई स्थितियों पर विचार करने की आवश्यकता होती है। उदाहरण के लिए, 5 सिक्के खरीदने जैसे एक सरल फ़ंक्शन पर विचार करने की आवश्यकता हैः क्या वर्तमान शेष राशि पर्याप्त है? ऑर्डर की कीमत कितनी है? सटीकता क्या है? क्या आपको बाजार को प्रभावित करने से बचने के लिए ऑर्डर विभाजित करने की आवश्यकता है? अधूरे ऑर्डर से कैसे निपटें? और कुछ विवरण जैसे। विभिन्न रणनीतियों में, ये कार्य समान हैं, इसलिए आप उन्हें एक टेम्पलेट में बना सकते हैं। आधिकारिक टेम्पलेट का पालन करके, उपयोगकर्ता अपनी टेम्पलेट रणनीतियों को भी लिख सकते हैं। यहां हम एफएमजेड द्वारा आधिकारिक तौर पर जारी कई बहुत ही उपयोग किए जाने वाले टेम्पलेट क्लास लाइब्रेरी पेश करेंगे, ताकि उपयोगकर्ता अपनी रणनीतियों को जल्दी से लिख सकें।
जावास्क्रिप्ट क्रिप्टोक्यूरेंसी ट्रेडिंग लाइब्रेरी और कमोडिटी फ्यूचर्स ट्रेडिंग लाइब्रेरी डिफ़ॉल्ट रूप से निर्मित हैं और कॉपी करने की आवश्यकता नहीं है। अन्य टेम्पलेट लाइब्रेरी रणनीति पर पाई जा सकती हैं
जावास्क्रिप्ट टेम्पलेट फ़ंक्शन सभी के साथ शुरू होता है$
, जबकि पायथन सभी के साथ शुरूext
.
स्रोत कोड पताःhttps://www.fmz.com/strategy/10989, जो पहले से ही अंतर्निहित है, इसलिए कॉपी करने की कोई आवश्यकता नहीं है। विशिष्ट फ़ंक्शन कार्यान्वयन सीधे स्रोत कोड को संदर्भित कर सकते हैं।
खाता प्राप्त करेंः
$.GetAccount(e)
Log($.GetAccount()); // Obtain the account information, with fault tolerance function
Log($.GetAcccount(exchanges[1]));
आदेश देना और रद्द करना:
$.Buy/Sell(e, amount)
$.Buy(0.3); // The main platform buys 0.3 coin
$.Sell(0.2); // The main platform sells 0.2 coin
$.Sell(exchanges[1], 0.1); // The secondary platform sells 0.1 coin
$.CancelPendingOrders(e, orderType)
$.CancelPendingOrders(); // Cancel all entrusted orders of the main platform
$.CancelPendingOrders(ORDER_TYPE_BUY); // Cancel all buy orders of the main platform
$.CancelPendingOrders(exchanges[1]); // Cancel all orders of the secondary platform
$.CancelPendingOrders(exchanges[1], ORDER_TYPE_SELL); // Cancel all sell orders of the secondary platforom
क्रॉस का न्याय करो:
$.Cross(periodA, periodB) / $.Cross(arr1, arr2);
var n = $.Cross(15, 30);
var m = $.Cross([1,2,3,2.8,3.5], [3,1.9,2,5,0.6])
If n = 0, it means that the current prices of exactly 15-period EMA and 30-period EMA are equal.
If n > 0, such as 5, it means that the 15-period EMA up-crosses the 30-period EMA by 5 periods (Bar)
If n < 0, such as -12, it means that the 15-period EMA down-crosses the 30-period EMA by 12 periods (Bar)
If it is not an array passed to the Cross, the function automatically obtains the K-line for moving average calculation.
If an array is passed to Cross, compare directly.
$.withdraw ((e, मुद्रा, पता, राशि, शुल्क, पासवर्ड) फ़ंक्शनः
$.withdraw(exchange, "btc", "0x.........", 1.0, 0.0001, "***")
उपयोग के लिए कमोडिटी वायदा व्यापार पुस्तकालय बहुत स्थिर है, यह सिफारिश की है। स्रोत कोड पताःhttps://www.fmz.com/strategy/12961, जो पहले से ही अंतर्निहित है, इसलिए कॉपी करने की कोई आवश्यकता नहीं है। विशिष्ट फ़ंक्शन कार्यान्वयन सीधे स्रोत कोड को संदर्भित कर सकते हैं।
सीटीए पुस्तकालय
function main() {
$.CTA("rb000,M000", function(r, mp) {
if (r.length < 20) {
return
}
var emaSlow = TA.EMA(r, 20)
var emaFast = TA.EMA(r, 5)
var cross = $.Cross(emaFast, emaSlow);
if (mp <= 0 && cross > 2) {
Log("Golden cross period", cross, "the moment position", mp);
return 1
} else if (mp >= 0 && cross < -2) {
Log("Death cross period", cross, "the moment position", mp);
return -1
}
});
}
लाइब्रेरी का उदाहरण
function main() {
var p = $.NewPositionManager();
p.OpenShort("MA609", 1);
p.OpenShort("MA701", 1);
Log(p.GetPosition("MA609", PD_SHORT));
Log(p.GetAccount());
Log(p.Account());
Sleep(60000 * 10);
p.CoverAll("MA609");
LogProfit(p.Profit());
Log($.IsTrading("MA609"));
// Multiple varieties use the trading queue to complete the non-blocking trading task
var q = $.NewTaskQueue();
q.pushTask(exchange, "MA701", "buy", 3, function(task, ret) {
Log(task.desc, ret)
})
while (true) {
// Call "poll" to execute the unfinished tasks in the spare time
q.poll()
Sleep(1000)
}
}
ड्राइंग के लिए कच्चे कार्यों के लिए बहुत जटिल हैं, जो अगले ट्यूटोरियल में पेश किया जाएगा, हम शुरुआती ड्राइंग पुस्तकालय का उपयोग करने की सलाह देते हैं, बहुत सरल रेखा चार्ट और के-लाइन चार्ट, आदि आकर्षित करने के लिए। सरल ड्राइंग पुस्तकालय एफएमजेड में बनाया गया है, जो रणनीति संपादन पृष्ठ पर देखा जा सकता है; यदि पुस्तकालय में अभी तक निर्मित नहीं है, तो उपयोगकर्ताओं को रणनीति में पुस्तकालय की जांच और उपयोग करने के लिए कॉपी और सहेजने की आवश्यकता है।
जावास्क्रिप्ट संस्करण ड्राइंग लाइब्रेरी का प्रतिलिपि पताःhttps://www.fmz.com/strategy/27293पायथन संस्करण ड्राइंग लाइब्रेरी का प्रतिलिपि पताःhttps://www.fmz.com/strategy/39066
विशिष्ट उदाहरण:
function main() {
while (true) {
var ticker = exchange.GetTicker()
if (ticker) {
$.PlotLine('Last', ticker.Last) // You can draw two lines at the samw time, "Last" is the name of the line
$.PlotLine('Buy', ticker.Buy)
}
Sleep(6000)
}
}
स्ट्रिंग प्रकार और संख्या प्रकार को समझना बहुत आसान है। जो बहुत आम तौर पर उपयोग किए जाने वाले प्रकार हैं। कॉम्बो बॉक्स पैरामीटर इंटरफ़ेस पर बॉक्स में विकल्प प्रदर्शित करेगा। उदाहरण के लिए, आप SYMBOL पैरामीटर को सेट कर सकते हैंBTC|USDT|ETH
कॉम्बो बॉक्स में; यदि आप पृष्ठ पर बॉक्स में USDT चुनते हैं, तो रणनीति में SYMBOL मान USDT इंडेक्स 1 है। चेक विकल्प एक वैकल्पिक चेक बॉक्स को संदर्भित करता है; चेक का अर्थ है सही, जबकि कोई चेक का अर्थ है गलत।
सेटिंग्स के लिए अधिक पैरामीटर हैं; संदर्भःhttps://www.fmz.com/api.
जब किसी रणनीति का क्वांटिज़ेशन समाप्त हो जाता है, तो आप इतिहास डेटा द्वारा इसका परीक्षण कर सकते हैं, ताकि इतिहास की तारीख में रणनीति की लाभ स्थिति की जांच की जा सके। बेशक, बैकटेस्ट परिणाम केवल संदर्भ के लिए है। एफएमजेड क्वांट प्लेटफॉर्म क्रिप्टोक्यूरेंसी स्पॉट और वायदा, बिटमेक्स स्थायी अनुबंध, कमोडिटी वायदा के बैकटेस्ट का समर्थन करता है, जिसमें केवल मुख्यधारा के क्रिप्टोक्यूरेंसी का समर्थन किया जाता है। जावास्क्रिप्ट बैकटेस्ट ब्राउज़र पर चलाया जाता है; पायथन बैकटेस्ट डॉकर पर है, और हमारा मंच उपयोगकर्ताओं के लिए सार्वजनिक डॉकर प्रदान करता है। माइलैंग्वेज के बैकटेस्ट में सेटिंग्स के लिए अधिक पैरामीटर हैं, और अधिक विवरण माइलैंग्वेज के दस्तावेज़ में संदर्भित किए जा सकते हैं।
ऑनबार बैकटेस्ट तंत्र के-लाइन पर आधारित है, यानी प्रत्येक के-लाइन बैकटेस्ट के लिए समय में एक बिंदु उत्पन्न करेगी। समय के बिंदु पर, आप वर्तमान के-लाइन की खुली, बंद, उच्चतम और सबसे कम कीमतों और ट्रेडिंग वॉल्यूम सहित जानकारी प्राप्त कर सकते हैं, साथ ही बिंदु से पहले इतिहास के-लाइन जानकारी भी प्राप्त कर सकते हैं। इस प्रकार के तंत्र की कमी बहुत स्पष्ट हैः एक के-लाइन पर केवल एक खरीद उत्पन्न की जा सकती है; आमतौर पर संदर्भित मूल्य थ्र के-लाइन की बंद कीमत है। इसके अलावा, एक के-लाइन केवल चार कीमतें प्राप्त कर सकती है, अर्थात् बंद, खुली, उच्चतम और सबसे कम कीमतें; एक के-लाइन में कीमतें कैसे बदलती हैं और क्या सबसे अधिक कीमत या सबसे कम कीमत पहले बदलती है, इस जानकारी को प्राप्त नहीं किया जा सकता है। एक घंटे के बाजार बॉट-लाइन परीक्षण को एक उदाहरण के रूप में लें। जानकारी निश्चित रूप से हर कई सेकंड में प्राप्त की जाती है, और आदेश के-लाइन पर वापस ट्रेडिंग समाप्त होने के बाद आयोजित किए जाएंगे।
एफएमजेड पर बैकटेस्ट में दो प्रकार होते हैं, अर्थात् सिमुलेशन लेवल बैकटेस्ट और रियल मार्केट लेवल बैकटेस्ट। सिमुलेशन लेवल बैकटेस्ट अंडरलेयर के-लाइन अवधि के अनुसार सिमुलेटेड टिक उत्पन्न कर सकता है, और प्रत्येक अंडरलेयर के-लाइन अवधि 14 बैकटेस्ट समय बिंदु उत्पन्न करेगी।हालांकि, वास्तविक बाजार स्तर बैकटेस्ट वास्तव में प्रत्येक कई सेकंड में टिक एकत्र करेगा, और अब यह वास्तविक गहराई (20 स्तरों सहित) का समर्थन करता है, और देर से वास्तविक निष्पादन व्यापार।तारीख की मात्रा काफी बड़ी है, और बैकटेस्ट की गति बहुत धीमी है, इसलिए बैकटेस्ट को लंबे समय में नहीं चलाया जा सकता है। एफएमजेड बैकटेस्ट तंत्र एक के-लाइन पर स्टार्टेजी के कई ट्रेडों को महसूस कर सकता है, ताकि ऐसी स्थिति को रोका जा सके कि व्यापार केवल बंद मूल्य द्वारा निष्पादित किया जा सके, और बैकटेस्ट की गति को भी तेजी से लक्षित और देखभाल करें। अधिक विस्तृत निर्देशों के लिएःhttps://www.fmz.com/bbs-topic/9126.
बैकटेस्ट और बॉट का ढांचा एक ही है, दोनों एक अनंत लूप हैं। क्योंकि बैकटेस्ट अलग-अलग बैकटेस्ट बिंदुओं पर कूदना है, बैकटेस्ट को Sleep(10)
, फंसने से बचने के लिए।
बैकटेस्ट इंजन उपयोगकर्ता द्वारा रखे गए ऑर्डर मूल्य और बैकटेस्ट समय बिंदु पर बाजार मूल्य से मेल खाएगा। यदि खरीद मूल्य एक से अधिक है, तो एक बेच दिया जाएगा। यदि ट्रेडिंग निष्पादित नहीं की जा सकती है, तो एक लंबित ऑर्डर उत्पन्न किया जाएगा। ट्रेडिंग सुनिश्चित करने के लिए स्लिपेज जोड़ने की आवश्यकता है। यदि बैकटेस्ट के दौरान स्थिति को खोला या बंद नहीं किया जा सकता है, तो जांचें कि क्या अधूरे आदेशों के कारण स्थिति जमे हुए है।
GetRecords()
function; आप कोड में एक अवधि पैरामीटर भी निर्दिष्ट कर सकते हैं;जैसा कि हम पहले उल्लेख किया है, बॉट में एक एपीआई इंटरफ़ेस का उपयोग कर पहुँच और वापसी करने में विफल हो सकता हैnull
; यदि आप अभी भी इसके डेटा का उपयोग करते हैं, तो एक त्रुटि की सूचना दी जाएगी और बॉट बंद हो जाएगा। इसलिए, रणनीतियों को त्रुटि सहिष्णुता में अच्छा प्रदर्शन करने की आवश्यकता है।
आम कारण:
एपीआई पहुँच नेटवर्क त्रुटि; इंटरफ़ेस तक पहुँचने का टाइमआउट null लौटाता है, और एक त्रुटि की सूचना दी जाएगी.
प्लेटफ़ॉर्म से सीमा त्रुटि, जैसे कि आईपी सीमा, आदेश सटीकता, पहुंच आवृत्ति, पैरामीटर त्रुटि, परिसंपत्ति की कमी, बाजार व्यापार विफलता, निष्पादित आदेशों का रद्द करना आदि; विवरण गलत कोड के अनुसार एपीआई दस्तावेज़ में क्वेरी किया जा सकता है।
प्लेटफ़ॉर्म डेटा रिटर्न त्रुटि; यह कभी-कभी होता है, जैसे कि शून्य गहराई, विलंबित खाता जानकारी और विलंबित आदेश स्थिति आदि को वापस करना।
प्रोग्राम तर्क त्रुटि।
इससे पहले कि आप एपीआई के लौटे डेटा का उपयोग करें, आपको यह न्याय करना चाहिए कि डेटा शून्य है या नहीं, और सामान्य विधियों को निम्नानुसार पेश किया जाता हैः
//1.judge the data is null and handle
var ticker = exchange.GetTicker();
while(ticker == null){
Log('ticker obtain error');
ticker = exchange.GetTicker();
}
Log(ticker.Last);
// 2. judge the data is not null, and use
var ticker = exchange.GetTicker();
if(!ticker){
Log(ticker.Last);
}
// 3.retry _C() function
var ticker = _C(exchange.GetTicker);
Log(ticker.Last);
// 4.try cache fault tolerance
try{
var ticker = exchange.GetTicker();
Log(ticker.Last);
}
catch(err){
Log('ticker obtain error');
}
यदि आप त्रुटियों की जानकारी प्राप्त करना चाहते हैं, तो आप उपयोग कर सकते हैंGetLastError()
, और पिछली बार की त्रुटि जानकारी की स्ट्रिंग लौटाई जाएगी, और त्रुटियों को मतभेदों द्वारा संसाधित किया जा सकता है।
मंचों के शीर्ष पदों में आम त्रुटि सारांशःhttps://www.fmz.com/bbs-topic/9158. यहाँ हम इसे संक्षेप में पेश करते हैं; आप ctrl + F का उपयोग खोज करने के लिए कर सकते हैं, जब आप समस्याओं है.
डॉकर को कैसे तैनात करें?
डॉकर जोड़ने के अनुभाग में इसके बारे में विस्तृत परिचय है।
क्या मैं किसी से कह सकता हूँ कि वह मेरे लिए रणनीति लिखें?
परhttps://www.fmz.com/markets, कुछ लोग हैं जो दूसरों के लिए रणनीति लिखने की सेवाएं प्रदान करते हैं, या आप चैट समूहों में पूछ सकते हैं; ध्यान दें कि इस तरह की सेवाओं से आप खुद संपर्क करेंगे, और आपको पता होना चाहिए कि जोखिम भी आप खुद को वहन करेंगे।
सभी इंटरफेस एक्सेस किए जाने पर टाइमआउट संकेत देते हैं
यह एक्सेस किए जाने वाले प्लेटफॉर्म इंटरफेस के टाइमआउट को संदर्भित करता है; यदि टाइमआउट कभी-कभी होता है, तो यह कोई समस्या नहीं है; यदि टाइमआउट को हर समय प्रेरित किया जाता है, तो इसका मतलब है कि सभी नेटवर्क तक पहुंच नहीं हो सकती है और एक विदेशी सर्वर की आवश्यकता होती है।
ERR_INVALID_POSITION
यदि बैकटेस्ट में कोई त्रुटि दर्ज की जाती है, तो यह आम तौर पर एक लेखन त्रुटि होती है; जब आप किसी स्थिति को बंद करने के लिए ऑर्डर देने का प्रयास करते हैं, जब कोई स्थिति नहीं होती है या स्थिति की मात्रा पर्याप्त नहीं होती है, तो एक त्रुटि दर्ज की जाएगी।
प्रतीक सेट नहीं
कोड में कोई अनुबंध सेट नहीं है, वायदा प्लेटफार्मों के बैकटेस्ट के दौरान।
BITMEX 429error,{
error :{ message : Rate limit exceeded re-try in 1 seconds...... }}
प्लेटफार्म इंटरफेस की पहुँच आवृत्ति बहुत अधिक है।
{
status :6004, msg : टाइमस्टैम्प सीमा से बाहर है }
सर्वर का टाइमस्टैम्प सर्वर को अपडेट करने के समय सीमा से अधिक है, और अधिक समय बहुत लंबा नहीं हो सकता है.
GetOrder ((455284455): त्रुटिः अमान्य आदेश आईडी या आदेश रद्द कर दिया गया.
यदि किसी प्लेटफ़ॉर्म का ऑर्डर रद्द कर दिया जाता है, तो प्लेटफ़ॉर्म अब ऑर्डर की जानकारी नहीं रखेगा, इसलिए जानकारी प्राप्त नहीं की जा सकती है।
GetOrders: 400: {
code :-1121, msg : अमान्य प्रतीक. }
अमान्य ट्रेडिंग जोड़ी; जांचें कि क्या ट्रेडिंग जोड़ी सेटिंग गलत है.
गुप्त कुंजी डिक्रिप्ट विफल रहा
APIKEY पार्सिंग विफल होती है. यदि APIKEY कॉन्फ़िगर होने के बाद FMZ पासवर्ड संशोधित किया गया है, तो FMZ पर एक प्लेटफ़ॉर्म पृष्ठ जोड़ने का प्रयास करें और प्लेटफ़ॉर्म APIKEY को पुनः कॉन्फ़िगर करें.
हस्ताक्षर अवैध: अवैध प्रस्तुत समय या गलत समय प्रारूप
सुझाव है कि आप लिनक्स सर्वर का उपयोग करें, या इन विंडोज सिस्टम पर समय सिंक्रनाइज़ेशन सॉफ्टवेयर स्थापित करें जहां यह समस्या होती है।
क्यों डॉकर अभी भी एक वैश्विक प्रॉक्सी सेट है जब मंच एपीआई का उपयोग नहीं कर सकते?
वैश्विक प्रॉक्सी में प्रॉक्सी डॉकर नेटवर्क पोर्ट नहीं है. देरी की समस्या के कारण, विदेशी सर्वर के डॉकर को तैनात करना सबसे अच्छा है.
कैसे स्थानीय रूप से एक रणनीति को बचाने के लिए, FMZ पर अपलोड करने के लिए नहीं?
पायथन का उपयोग करके, और आप स्थानीय फ़ाइलों को आयात कर सकते हैं, एक फ़ाइल के रूप में सामान्य रूप से एफएमजेड एपीआई द्वारा लिखी गई रणनीति को सहेजें और इसे अपने स्वयं के सर्वर पर निष्पादन पथ में रखें, और आप सीधे इसे पढ़ और निष्पादित कर सकते हैं।
#!python2.7
def run(runfile):
with open(runfile,"r") as f:
exec(f.read())
def main():
run('my.py')
कैसे एक मंच के परीक्षण नेटवर्क या कैसे एपीआई आधार पते को बदलने के लिए?
संबंधित एपीआई आधार पते पर सीधे स्विच करने के लिए exchange.SetBase( का उपयोग करें। उदाहरण के लिएः
exchange.SetBase("https://www.okex.me")