Стратегия следования за трендом, основанная на коэффициенте коррекции


Дата создания: 2023-09-14 19:49:14 Последнее изменение: 2023-09-14 19:49:14
Копировать: 1 Количество просмотров: 643
1
Подписаться
1617
Подписчики

В данной статье подробно рассматривается стратегия количественного трейдинга, основанная на соотношении отклонений цены для отслеживания тенденций. Эта стратегия используется для определения местных максимумов и запуска в определенном соотношении отклонений.

Принципы стратегии

Основная логика этой стратегии заключается в том, чтобы определить наивысшую цену в течение определенного периода, а затем отслеживать торговлю в определенном пропорциональном положении. Конкретные шаги:

  1. Сначала вычислите максимальные значения последних 90 K-линий в качестве локальных максимумов.

  2. Следить за покупкой после того, как цена отклоняется от этого пика на определенную долю (например, 3%);

  3. Стоп-стоп устанавливается на то, чтобы повысить цену входа в определенной пропорции (например, на 6%), и закрывать позицию, когда цена достигает точки стоп-стопа;

  4. Не устанавливайте стоп-лосс, чтобы следить за трендом.

Таким образом, для определения времени входа с помощью соотношения локальных высоких точек отклонения, можно эффективно отфильтровывать колебания, входя только после подтверждения тенденции.

Второе: стратегические преимущества

Самым большим преимуществом этой стратегии является то, что она использует коэффициент обратной связи для определения тенденции, отфильтровывая большое количество шума. По сравнению с входом непосредственно в поворотную точку, она может уменьшить вероятность входа в систему.

Другим преимуществом является установка логики стоп-стоп. Это позволяет контролировать прибыль и убыток от каждой сделки, в соответствии с принципами позитивного управления деньгами.

В конце концов, отслеживание стоп-паров больше, чем отзывный коэффициент также дает стратегии определенный механизм возврата риска.

Третье, потенциальные риски

Несмотря на определенные преимущества данной стратегии, следует учитывать следующие риски при ее практическом применении:

Во-первых, нужно тщательно подбирать коэффициенты отклонения. Слишком глубокое или слишком мелкое отклонение может повлиять на прибыль.

Во-вторых, отсутствие стоп-стратегии подвергает стратегию более высокому риску в одиночку. Сильное изменение тренда может привести к большим потерям.

В конце концов, неправильная оптимизация параметров может привести к проблемам с пересоединением, что приведет к снижению качества сигнала.

Четвертое содержание.

В этой статье подробно описывается количественная стратегия для отслеживания тренда на основе соотношения ценовых отклонений. Она позволяет эффективно определять направление тренда и использовать отклонения для входа. В то же время, установка стоп-менеджмента также позволяет стратегии иметь определенный механизм контроля риска. В целом, эта стратегия может быть одним из вариантов стратегии отслеживания тренда, основанной на строительстве правил торговли на основе локальных высоких отклонений.

Исходный код стратегии
/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © luboremenar

//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
     default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)

// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)

// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)

if (longCondition1)
    strategy.entry("Long1", strategy.long, qty = strategy.equity/close)

strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
     when= crossover(strategy.position_size, 0))


// plot
plot(strategy.equity)

// for testing, debugging
//test=0.0  
//if(crossover(strategy.position_size, 0))
//    test := (close*1.06-close)*basis_points
//plot(test)