उदाहरण के लिए A एक्सचेंजः ETH_BTC एक्सचेंज बीः ETH_USDT एक्सचेंज सी (वास्तव में एक्सचेंज बी के लिए एक और लेनदेन जोड़ी है, जो तर्कसंगत रूप से माना जाता है)
B, C एक्सचेंज ट्रेडिंग ETH_BTC और A एक्सचेंज हेजिंग के संयोजन के लिए होती है। इस प्रकार BC वास्तव में एक एक्सचेंज खाता है।
// 交易对以 ETH_BTC , ETH_USDT , BTC_USDT 为例 // 教学策略,还有很大优化空间,例如:币平衡模块,根据手续费率控制对冲差价,硬搬砖等等。 function main () { if (exchanges[0].GetQuoteCurrency() != exchanges[2].GetCurrency().split("_")[0] || exchanges[0].GetCurrency().split("_")[0] != exchanges[1].GetCurrency().split("_")[0]) { throw "交易所 交易对 配置错误。" } var marketSlideRate = 1 // 1.02 var hedgeDiff = 0.0007 var hedgeAmount = 0.1 var isFirst = true var concurrenter = function (funcName, isWait, tasks, amounts) { for (var i = 0 ; i < exchanges.length; i++) { if (isFirst) { exchanges[i].acc = _C(exchanges[i].GetAccount) exchanges[i].initAcc = exchanges[i].acc } if (isWait) { var a = funcName == "GetTicker" ? exchanges[i].ticker = exchanges[i].tiR.wait() : exchanges[i].id = exchanges[i].trR.wait() if (funcName == "trade") { exchanges[i].acc = _C(exchanges[i].GetAccount) } } else { var b = funcName == "GetTicker" ? exchanges[i].tiR = exchanges[i].Go(funcName) : exchanges[i].trR = exchanges[i].Go(tasks[i], -1, amounts[i], exchanges[i].GetCurrency()) } } if (funcName == "trade" && isWait) { Log("BTC:", exchange.BTC = exchanges[0].acc.Balance + exchanges[2].acc.Stocks, "ETH:", exchange.ETH = exchanges[0].acc.Stocks + exchanges[1].acc.Stocks, "USDT:", exchange.USDT = exchanges[1].acc.Balance + exchanges[2].acc.Balance, "#FF0000") LogProfit(exchange.USDT - (exchanges[1].initAcc.Balance + exchanges[2].initAcc.Balance) - (exchanges[0].initAcc.Balance + exchanges[2].initAcc.Stocks - exchange.BTC) * exchanges[2].ticker.Last - (exchanges[0].initAcc.Stocks + exchanges[1].initAcc.Stocks - exchange.ETH) * exchanges[1].ticker.Last) } isFirst = false } while (1) { concurrenter("GetTicker", false) concurrenter("GetTicker", true) var tickerA = exchanges[0].ticker var tickerB = exchanges[1].ticker var tickerC = exchanges[2].ticker var tickerBC = { Buy : tickerB.Buy / tickerC.Sell, Sell : tickerB.Sell / tickerC.Buy, } if (tickerA.Buy - tickerBC.Sell > hedgeDiff && exchanges[0].acc.Stocks > 0.2 && exchanges[1].acc.Balance > 500 && exchanges[2].acc.Stocks > 0.03) { // Sell A , Buy BC (Buy B Sell C) concurrenter("trade", false, ["Sell", "Buy", "Sell"], [hedgeAmount, marketSlideRate * tickerB.Sell * hedgeAmount, tickerB.Sell * hedgeAmount / tickerC.Buy]) concurrenter("trade", true) } if (tickerBC.Buy - tickerA.Sell > hedgeDiff && exchanges[0].acc.Balance > 0.03 && exchanges[1].acc.Stocks > 0.2 && exchanges[2].acc.Balance > 500) { // Buy A , Sell BC (...) concurrenter("trade", false, ["Buy", "Sell", "Buy"], [marketSlideRate * hedgeAmount * tickerA.Sell, hedgeAmount, marketSlideRate * hedgeAmount * tickerA.Sell * tickerC.Sell]) concurrenter("trade", true) } Sleep(500) } }
बीएनएमबीएनएमप्रोः TypeError: मुख्य पर null की संपत्ति 'Sell' नहीं पढ़ सकता (__FILE__:45) प्रोः GetTicker: 429: {"msg":"अति लगातार अनुरोध.","कोड":"50011"}
बीएनएमबीएनएमनमस्ते, यह चलाने के लिए तीन सिक्के है या USDT के साथ चल सकता है।
बीएनएमबीएनएमकैसे नहीं चल सकता?
fmzeroशिक्षा का वीडियो कहाँ है?
आविष्कारक मात्रा - छोटे सपनेतीन सिक्कों की जरूरत है।
आविष्कारक मात्रा - छोटे सपनेबहुत बार अनुरोध!
बीएनएमबीएनएमनमस्ते, यह चलाने के लिए तीन सिक्के है या USDT के साथ चल सकता है।
बीएनएमबीएनएमक्या आप 0.03 पर सेट कर सकते हैं? क्या यह 0.007 और 1/1.02 का मतलब है?
बीएनएमबीएनएमठीक है, मैं फिर से दौड़ता हूँ।
आविष्कारक मात्रा - छोटे सपनेइस तरह की गलतियों के बारे में जानकारी यहां भेजें या FMZ के आधिकारिक समूह @dreamback पर जाएं।
बीएनएमबीएनएमक्या आप अपने वीचेस को डाउनलोड कर सकते हैं?
आविष्कारक मात्रा - छोटे सपनेएक सवाल पूछें, या एफएमजेड के आधिकारिक वीचेक ग्रुप में शामिल हों @ dreamback
बीएनएमबीएनएमक्या आप अपना WeChat जोड़ सकते हैं?
आविष्कारक मात्रा - छोटे सपनेयह एक प्रत्यक्ष रणनीति है, यदि कोई समस्या है, तो विशिष्ट प्रश्न भेजने की आवश्यकता है।