60 पंक्तियों का त्रिभुज (शिक्षण)

लेखक:छोटे सपने, दिनांकः 2019-04-16 12:55:22
टैगःअध्ययनहेजत्रिकोणीय

त्रिभुज हेजिंग शिक्षण रणनीति

सिद्धांत

  • उदाहरण के लिए 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 जोड़ सकते हैं?

छोटे सपनेयह एक प्रत्यक्ष रणनीति है, यदि कोई समस्या है, तो विशिष्ट प्रश्न भेजने की आवश्यकता है।