60 Linien Dreiecks-Hedging-Strategien (unterrichtet)

Schriftsteller:Kleine Träume, Datum: 2019-04-16 12:55:22
Tags:StudiumHeckedreieckig

Die Lehrstrategie der Dreiecks-Hedge

Grundsätze

  • Zum Beispiel: A-Börse: ETH_BTC Börse B: ETH_USDT C-Börse (in Wirklichkeit ist B-Börse ein anderes Handelspärchen, das logischerweise als C angenommen wird): BTC_USDT

  • B, C ist eine Kombination von ETH_BTC und A ist eine Börsen-Hedge. BC ist also tatsächlich ein Börsenkonto.

Optimierung von Räumen

  • Die Währung ist ausgeglichen.
  • Die Hypothek ist die Hypothek, bei der die Hypothek die Hypothek ist, und die Hypothek die Hypothek ist.
  • Ich habe mich in den letzten Jahren sehr viel gefreut.
  • Die Bestellung wird mit einem dünnen Tiefen-Scan berechnet, um die optimale Absicherung zu berechnen. Ich bin nicht derjenige.

Bug Feedback

  • Bitte schreiben Sie mir einen Kommentar, wenn Sie irgendeinen Fehler haben.

// 交易对以 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)
    }
}



Verwandt

Mehr

BNMBNMPro: TypeError: Eigenschaft 'Sell' von null bei main (__FILE__:45) nicht lesen Pro: GetTicker: 429: {"msg":"Zu häufige Anfragen.","Code:"50011"}

BNMBNMHey, das hier ist für drei Münzen, oder für USDT.

BNMBNMWie kann man nicht laufen?

fmzeroWo ist das Unterrichtsvideo?

Kleine TräumeDie drei Münzen sind notwendig.

Kleine TräumeZu häufige Anfragen!

BNMBNMHey, das hier ist für drei Münzen, oder für USDT.

BNMBNMKann man die Transaktionsmenge auf 0.03 setzen? Was bedeutet das für 0.0007 und 1/1.02?

BNMBNMGut, ich laufe noch mal.

Kleine TräumeDie Fehlermeldung kann hier geschickt werden oder auf der offiziellen FMZ-Gruppe @dreamback.

BNMBNMWenn Sie nicht aufstehen können, können Sie Ihre WeChat-Nachrichten herunterladen?

Kleine TräumeSenden Sie Fragen oder fügen Sie die offizielle WeChat-Gruppe von FMZ bei @Dreamback.

BNMBNMIch habe eine Frage an Sie: Können Sie mir WeChat hinzufügen?

Kleine TräumeDas ist die Strategie der Hand, wenn es Probleme gibt, müssen wir konkrete Fragen stellen.