Стратегия следования за трендом канала прорыва


Дата создания: 2023-11-23 14:04:59 Последнее изменение: 2023-11-23 14:04:59
Копировать: 0 Количество просмотров: 603
1
Подписаться
1617
Подписчики

Стратегия следования за трендом канала прорыва

Обзор

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

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

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

Эта стратегия одновременно отображает длину как length*2 показатель EMA определяет направление тренда. Когда цена прорывается через канал, если EMA находится в восходящем тренде, это повышает эффективность принятия решений.

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

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

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

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

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

  • Можно сочетать с другими индикаторами, чтобы избежать ложных прорывов. Например, MACD, RSI и т. Д.
  • Параметры могут быть автоматически оптимизированы с помощью алгоритмов машинного обучения для повышения их надежности.
  • Стоп-лосс может быть настроен для контроля максимального отвода.

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

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

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

//@version=3


initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9


strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity) 

length = input(title="Length",  minval=1, maxval=1000, defval=length_val)

upBound = highest(high, length)
downBound = lowest(low, length)

//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
    strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
    strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
    
position = strategy.position_size
    
    
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)

message = ""

if (position > 0) 
    message = "BTCUSD L: " + tostring(strategy.position_size)
    na(position)
    
if (position < 0) 
    message = "BTCUSD S: " + tostring(strategy.position_size)
    na(position)

alertcondition(variance(strategy.position_size,2) > 0, "test", message )