60 baris trik strategi hedging (Pendidikan)

Penulis:Mimpi kecil, Tanggal: 2019-04-16 12:55:22
Tag:StudiHedgesegitiga

Triangle Hedge Strategi Pengajaran

Prinsip

  • Misalnya: A: ETH_BTC B: ETH_USDT Bursa C (yang sebenarnya adalah bursa B) adalah pasangan transaksi lain, yang secara logis dianggap sebagai C.): BTC_USDT

  • B, C adalah pasangan perdagangan yang menggabungkan ETH_BTC dan A. Jadi BC sebenarnya adalah akun pertukaran.

Mengoptimalkan Ruang

  • Perimbangan mata uang.
  • Perbedaannya berdasarkan tingkat biaya prosedur, yaitu perbedaan hedging, perbedaan dinamis.
  • "Saya tidak tahu apa yang akan terjadi.
  • Perintah pemindaian kedalaman tipis, menghitung hedging optimal. "Sudah tidak ada lagi.

umpan balik bug

  • Jika ada kesalahan, silakan komentar.

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



Berkaitan

Lebih banyak

BNMBNMPro: TypeError: tidak dapat membaca properti 'Sell' dari null pada main (__FILE__:45) Pro: GetTicker: 429: {"msg":"Permintaan terlalu sering.","kode":"50011"}

BNMBNMHalo, ini hanya bisa berjalan jika Anda memiliki 3 koin atau jika Anda memiliki USDT.

BNMBNMBagaimana tidak?

FmzeroDi mana video pengajaran?

Mimpi kecilSaya tidak tahu apa yang akan terjadi.

Mimpi kecilPermintaan terlalu sering!

BNMBNMHalo, ini hanya bisa berjalan jika Anda memiliki 3 koin atau jika Anda memiliki USDT.

BNMBNMApakah volume transaksi bisa disetel ke 0.03? Apa yang 0.0007 dan 1/1.02 itu?

BNMBNMBaiklah, aku akan lari lagi.

Mimpi kecilJika Anda ingin melaporkan kesalahan di sini, atau di grup resmi FMZ @dreamback.

BNMBNMJika Anda tidak bisa berlari, apakah Anda bisa menambahkan pesan Anda?

Mimpi kecilTuliskan pertanyaan Anda, atau tambahkan akun resmi FMZ di grup Weibo @MomGo

BNMBNMApakah Anda bisa menambahkan WeChat ke akun Anda?

Mimpi kecilIni adalah strategi langsung, jika ada masalah, Anda harus mengirim pertanyaan khusus.