60 строк кода для реализации идеи — стратегия выбора худшего варианта

Создано: 2022-03-19 14:37:08, Обновлено: 2024-12-02 21:32:02
comments   14
hits   2888

60 строк кода для реализации идеи — стратегия выбора худшего варианта

Стратегии, которые предпочитают волатильным рынкам, такие как стратегия сетки и стратегия Мартингейла, имеют присущие им недостатки. Подобные стратегии были опробованы на рынке контрактов ETH в течение некоторого времени. Я также часто общаюсь и делюсь опытом с новыми и старыми игроками на FMZ.COM. Что касается такого рода стратегии, есть один момент, в котором я полностью согласен с тем, что сказал мой друг. То есть при заключении контрактов в криптовалютном цикле риск открытия длинной позиции немного ниже, чем риск открытия короткой позиции. Или, проще говоря, худшее возможное падение равно нулю, а потенциал роста неограничен.

Итак, будут ли такие стратегии, как Мартингейл и сетка, ориентированные только на длинные позиции и не ориентированные на короткие, а также распределяющие риски выбора дна на большом расстоянии, лучше, чем двусторонняя торговля? Эта идея звучит хорошо, но никто не знает, выдержит ли она практического воплощения. Но, по крайней мере, мы можем просто проверить эту идею. Итак, тема сегодняшней статьи — разработка стратегии выбора наиболее выгодных контрактов.

Быстрая разработка на базе 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)
    }
}

Конструкция параметров также очень проста:

60 строк кода для реализации идеи — стратегия выбора худшего варианта

Есть только эти несколько параметров.

Посмотрите на результаты бэктестинга этих десятков строк кода.

Просто установите временной диапазон бэктеста:

60 строк кода для реализации идеи — стратегия выбора худшего варианта

Тестирование на исторических данных:

60 строк кода для реализации идеи — стратегия выбора худшего варианта

60 строк кода для реализации идеи — стратегия выбора худшего варианта

Это очень похоже на стратегию типа сетки или Мартина~. Боятся ли новые студенты, которые только начинают учиться, длинных стратегий и легко ли они отчаиваются? Более подходящим будет краткое и лаконичное введение в стратегии, которое облегчит усвоение стратегических идей и изучение логического проектирования.

Код стратегии предназначен только для учебных и исследовательских целей.