60 줄의 삼각형 헤지킹 전략 (교양)

저자:작은 꿈, 날짜: 2019-04-16 12:55:22
태그:연구울타리삼각형

삼각형 헤딩 교육 전략

원리

  • 예를 들어 A: ETH_BTC B 거래소: ETH_USDT C 거래소 (실제로 B 거래소입니다. 다른 거래 쌍이 논리적으로 C로 간주됩니다.): BTC_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)
    }
}



관련

더 많은

BNMBNM프로: TypeError: 주요에서 null의 속성 'Sell'을 읽을 수 없습니다 (__FILE__:45) 프로: GetTicker: 429: {"msg":"더 자주 요청.","코드":"50011"}

BNMBNM안녕하세요, 이 코인은 3개의 동전을 가지고 달릴 수 있습니다.

BNMBNM어떻게 도망칠 수 있을까요?

fmzero교육용 비디오는 어디 있어요?

작은 꿈세 개의 동전이 필요합니다.

작은 꿈너무 자주 요청해요!

BNMBNM안녕하세요, 이 코인은 3개의 동전을 가지고 달릴 수 있습니다.

BNMBNM거래량은 0.03로 설정할 수 있나요? 0.07과 1/1.02는 무엇을 의미할까요?

BNMBNM좋아요, 다시 한 번 뛰겠습니다.

작은 꿈에피소드 보고는 여기에 보내거나 FMZ 공식 그룹 @ dreamback에 보내십시오.

BNMBNM이 글은 제가 한 일 중 하나인 "나도 뛰지 못해".

작은 꿈이 글은 이글에 대한 질문이나 FMZ 공식 위크시그룹에 추가하는 글입니다.

BNMBNM이 글은 제가 이 블로그에 올린 글입니다.

작은 꿈이 전략은 현장 전략이며, 문제가 발생하면 구체적인 질문을 보내야 합니다.