60줄의 코드로 아이디어를 실현합니다. 계약 하단 낚시 전략

저자:리디아, 창작: 2022-11-08 15:30:01, 업데이트: 2023-09-20 09:05:08

img

그리드 전략, 마틴게일 전략, 시장 변동을 선호하는, 자신의 단점이 있습니다, 그들은 ETH 계약 시장에서 몇 시간 동안 테스트되었습니다.FMZ.COM경험들을 공유하기 위해서입니다. 이런 종류의 전략에 대한 한 가지 점은 친구와 매우 동의합니다. 즉, 계약에 있어서, 디지털 통화 시장에서 단위로 가는 것보다 긴 거리는 위험이 적습니다. 또는 간단하게 말하면, 최악의 경우 0으로 감소하지만 증가하는 것은 무한합니다.

그래서, 마틴게일, 그리드 및 다른 전략은 그냥 긴 갈 수 있습니다, 짧은 갈 수 없습니다, 그리고 긴 범위에서 바닥 낚시 위험을 퍼뜨리는 양자 위치보다 더 나은가? 이 아이디어는 매우 좋은 소리, 하지만 아무도 그것을 실행에 옮길 수 있는지 모릅니다. 하지만, 적어도, 우리는 간단하게 그것을 뒷 테스트 할 수 있습니다. 그래서 우리는 오늘의 기사를 주제 계약 바닥 낚시 전략을 설계합니다.

급속한 발전FMZ.COM

이 아이디어를 구현하는 코드는 플랫폼의 유연성, 인터페이스 캡슐화, 강력한 백테스팅 시스템 등으로 인해 매우 간단합니다. 전체 코드는 60 줄 만 있습니다. (코드 작성 사양을 위해 많은 줄임말이 없습니다.)

전략의 설계 아이디어는 매우 간단합니다. 논리의 시작에서 초기 가격에 따라 매수 주문을 간격으로 내려 놓습니다. 가격이 계속 하락하면 매수 주문을 계속하고 바닥 낚시를 계속합니다. 그런 다음 특정 이익 마진을 증가시키는 포지션 가격에 따라 폐쇄 포지션 주문을 배치하고 포지션 폐쇄를 기다립니다. 포지션이 닫히면 위의 논리는 현재 가격으로 초기 가격으로 반복됩니다. 전략은 포지션을 유지하기 위해 짧게 가지 않고 길게 갈 것입니다.

전략 소스 코드:

function cancelAll() {
    while (true) {
        var orders = _C(exchange.GetOrders)
        if (orders.length == 0) { 
            break 
        }
        for (var i = 0 ; i < orders.length ; i++) {
            exchange.CancelOrder(orders[i].Id, orders[i])
            Sleep(interval)
        }
    }
}

function getLong(arr, kind) {
    var ret = null 
    for (var i = 0 ; i < arr.length ; i++) {
        if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) {
            ret = arr[i]
        }
    }
    return ret
}

function pendingBidOrders(firstPrice) {
    var index = 0
    var amount = baseAmount
    while (true) {
        var pos = _C(exchange.GetPosition)
        var price = firstPrice - index * baseSpacing
        amount *= ratio
        index++
        exchange.SetDirection("buy")
        exchange.Buy(price, amount)        
        if (pos.length != 0) {
            var longPos = getLong(pos, "pos")
            if (longPos) {
                exchange.SetDirection("closebuy")
                exchange.Sell(longPos.Price + profitTarget, longPos.Amount)
            }
        }
        while (true) {
            Sleep(interval)
            if (!getLong(_C(exchange.GetOrders), "orders")) {
                cancelAll()
                break
            }
            if (!getLong(_C(exchange.GetPosition), "pos")) {
                cancelAll()
                return 
            }
        }
    }
}

function main() {
    exchange.SetContractType(symbol)
    while (true) {
        pendingBidOrders(_C(exchange.GetTicker).Last)
    }
}

매개 변수 설계도 매우 간단합니다.

img

이 6가지 매개 변수만 가지고

백테스팅 결과를 보세요.

백테스팅 시간 범위를 무작위로 설정합니다:

img

백테스트:

img

img

img

그것은 그리드 전략, 마틴게일 전략과 매우 비슷합니다~. 초보자는 일반적으로 긴 코드가있는 전략을 두려워합니다. 그것은 쉽게 설득 될 수 있습니다. 시작하기 위해 짧고 간결한 전략은 전략 아이디어를 이해하고 논리적 디자인을 배우기 위해 더 쉽고 적절합니다.

전략 코드는 연구 및 연구 목적으로만 사용됩니다.


관련

더 많은