
Обзор
Стратегия, основанная на Keltner channel indicator, использует индексные движущиеся средние ((EMA) и среднюю реальную колебательную величину ((ATR) для построения верхнего и нижнего каналов, открывая позиции, когда цена пробивает низкую траекторию, и закрывая позиции, когда цена пробивает верхнюю траекторию. Эта стратегия пытается захватить диапазон колебаний цены и получает прибыль, когда цена пробивает верхнюю траекторию каналов.
Стратегический принцип
- Вычислить указанный цикл ЭМА как среднюю орбиту канала Келтнера.
- Вычислить ATR на заданный период, а затем умножить его на кратное число как верхнюю и нижнюю орбиту прохода.
- Открыть позицию, когда цена закрытия падает, и записывать цену открытия.
- Когда цена открытия торгового дня выходит за пределы опциона.
- В открытом положении, если цена открытия выше, чем на верхней полосе, то устраняется многоодность.
Стратегические преимущества
- Способность самостоятельно адаптироваться к колебаниям цен. Поскольку канал Keltner использует ATR для построения взлетов и падений, ATR может измерять колебания цен, поэтому при больших колебаниях ширина канала соответствующим образом увеличивается, что эффективно снижает затраты на частоту торгов.
- Обладает логической ясностью и простотой, легкостью понимания и реализации. Показатели, используемые в этой стратегии, просты, а основная логика легче понять.
- Имеет определенную способность следить за тенденцией. В восходящих тенденциях эта стратегия позволяет держать многоочередные позиции, пока цена не выйдет из колеи.
Стратегический риск
- Отсутствие четкого механизма остановки убытков. Стратегия не устанавливает остановки убытков после открытия позиции, что может привести к большим отступлениям в случае обратного движения.
- Определение сигналов прорыва довольно грубое. Использование только закрытия, когда цена падает вниз, и открытия, когда цена выходит на трассу, может привести к некоторым ошибкам и привести к убыточным сделкам.
- Выбор параметров стратегии оказывает большое влияние на результаты. Выбор циклов EMA и ATR, а также настройка множителей ATR влияют на эффективность стратегии, но стратегия не дает четкого метода оптимизации параметров.
Направление оптимизации стратегии
- Введение четкого механизма остановки убытков. При открытии позиции можно рассмотреть возможность установки фиксированного пункта или процентного остановки убытков, чтобы контролировать максимальную потерю за одну сделку.
- Оптимизирующие сигналы критерии. Можно рассмотреть возможность использования большей информации о ценах для подтверждения прорыва, например, требуя, чтобы цена закрытия была на несколько последовательных K-линий ниже нижней линии, чтобы открыть позицию, чтобы избежать ложного прорыва одной K-линии.
- Оптимизация параметров. Можно использовать такие методы, как генетические алгоритмы, для оптимизации циклов EMA, ATR и ATR-множеств, чтобы найти комбинацию параметров, более подходящих для текущего рынка.
- Добавление условий фильтрации. Можно рассмотреть возможность добавления некоторых сигналов фильтрации, например, открывать позиции только тогда, когда ADX выше определенного порога, или использовать многоголовый ряд MA в качестве фильтрации тренда и т. д.
Подвести итог
Стратегия основана на Keltner channel indicator и использует логику, чтобы совершать сделки с ценовым прорывом вверх и вниз. Ее преимущества заключаются в простоте логики и ее адаптивности, а недостатки заключаются в отсутствии остановок и плохом качестве сигнала. В будущем стратегия может быть усовершенствована путем введения остановок, оптимизации сигнала, оптимизации параметров и увеличения условий фильтрации.
Исходный код стратегии
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © satrusskumar
//@version=5
// Input parameters
length = input.int(21, title="EMA Length")
mult = input.float(2, title="ATR Multiplier")
atrLength = input.int(13, title="ATR Length")
// Calculate Keltner Channels
ema = ta.ema(close, length)
atr = ta.atr(atrLength)
upper_band = ema + mult * atr
lower_band = ema - mult * atr
// Plot Keltner Channels
plot(upper_band, color=color.red, title="Keltner Upper Band")
plot(ema, color=color.blue, title="Keltner EMA")
plot(lower_band, color=color.green, title="Keltner Lower Band")
// Strategy logic
var float entry_price = na
var bool in_trade = false
if (not in_trade and close < lower_band)
strategy.entry("Long", strategy.long)
entry_price := close
in_trade := true
if (in_trade and open > upper_band)
strategy.close("Long")
in_trade := false
// Strategy settings
strategy("Keltner Channel Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)