Tài nguyên đang được tải lên... tải...

Chiến lược đầu cơ tam giác 60 dòng (giảng dạy)

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Ngày: 2019-04-16 12:55:22
Tags:Nghiên cứuLòng chehình tam giác

Triangle Hedge là một chiến lược giáo dục.

Nguyên tắc

  • Ví dụ: A: Sàn giao dịch: ETH_BTC Sàn giao dịch B: ETH_USDT Sàn giao dịch C (thực ra là sàn giao dịch B, một cặp giao dịch khác, được cho là C;;): BTC_USDT

  • Các giao dịch trên sàn giao dịch B, C được tạo thành từ sự kết hợp của ETH_BTC và A.

Tối ưu hóa không gian

  • Sự cân bằng tiền tệ.
  • Giá chênh lệch rủi ro, chênh lệch động dựa trên tỷ lệ phí thủ tục.
  • Những người đàn ông ở Việt Nam đang phải đối mặt với tình trạng khó khăn.
  • Đặt hàng quét sâu, tính toán mức độ rủi ro tối ưu. ...

Phản hồi về BUG

  • Nếu có lỗi, hãy để ý nhé.

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



Có liên quan

Thêm nữa

BNMBNMƯu: TypeError: không thể đọc thuộc tính 'Sell' của null tại main (__FILE__:45) Ưu: GetTicker: 429: {"msg":"Yêu cầu quá thường xuyên."," mã":"50011"}

BNMBNMĐây là cách để chạy nếu bạn có 3 đồng tiền, hoặc nếu bạn có USDT, bạn có thể chạy.

BNMBNMKhông thể chạy được.

fmzeroỞ đâu có video dạy?

Những nhà phát minh định lượng - những giấc mơ nhỏCó 3 đồng tiền cần.

Những nhà phát minh định lượng - những giấc mơ nhỏCầu hỏi quá thường xuyên!

BNMBNMĐây là cách để chạy nếu bạn có 3 đồng tiền, hoặc nếu bạn có USDT, bạn có thể chạy.

BNMBNMBạn có thể đặt số lượng giao dịch là 0.03 không?

BNMBNMĐược rồi, tôi sẽ chạy lại.

Những nhà phát minh định lượng - những giấc mơ nhỏThông tin về lỗi này có thể được gửi tại đây, hoặc thêm vào nhóm chính thức của FMZ là @dreamgo back.

BNMBNMBạn có thể thêm vào thông điệp của mình không?

Những nhà phát minh định lượng - những giấc mơ nhỏHãy gửi câu hỏi cụ thể hoặc thêm vào nhóm tin nhắn chính thức của FMZ @mymay

BNMBNMBạn có thể thêm WeChat vào không?

Những nhà phát minh định lượng - những giấc mơ nhỏĐây là một chiến lược trực tiếp, nếu có vấn đề, bạn cần gửi câu hỏi cụ thể.