Стратегия коррекции прорыва канала Кельтнера


Дата создания: 2023-12-27 14:49:39 Последнее изменение: 2023-12-27 14:49:39
Копировать: 0 Количество просмотров: 761
1
Подписаться
1621
Подписчики

Стратегия коррекции прорыва канала Кельтнера

Обзор

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

Стратегический принцип

Эта стратегия использует показатель Keltner channel для определения ценовой тенденции. Keltner channel состоит из средней линии и средней реальной амплитуды (ATR). Верхняя линия канала равна N-кратному выражению ATR плюс средняя линия; Нижняя линия равна N-кратному выражению ATR минус средняя линия.

Кроме того, эта стратегия основывается на том, что цена снова касается или прорывает границу канала. Например, после того, как цена поднимается, она прорывается вниз, а затем снова падает, не касаясь рельсов. Это возможность сделать несколько выводов.

Анализ преимуществ

Это стратегия торговли, которая использует свойства ценовой обратной тяги. Ее преимущества заключаются в следующем:

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

Анализ рисков

Основные риски этой стратегии заключаются в следующем:

  1. Если рынок долгое время будет двигаться в одностороннем направлении, возможно, не будет много шансов на выигрыш.
  2. Неточные оценки сигналов отбора могут привести к убыткам.

Ответ:

  1. Оптимизация параметров, адаптация ширины канала к рыночной среде.
  2. Увеличение управления позициями и снижение убытков.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Фильтрация прорывов на основе объемов сделок, чтобы избежать ложных прорывов.
  2. Размер позиции корректируется в зависимости от волатильности.
  3. Обновление стоп-моделей, перемещение стоп-моделей, чтобы закрепить больше прибыли.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)

price = close

// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation

buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)

tradeSize = input(defval=1, minval=1, title="Trade size")

if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
    strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
    if( crossover(price, bottom) )
        strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")

if( 0 != SL )
    strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
    strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
   
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
    strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
    if ( crossunder(price, top) )
        strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
    
    
if( crossunder(price, EMA) and closeOnEMATouch )
    strategy.close("SELL")