Стратегия двойного выхода

Автор:Чао Чжан, Дата: 2024-02-01 14:43:07
Тэги:

img

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

Логика стратегии

Стратегия объединяет полосы Боллинджера и каналы Келтнера. полосы Боллинджера - адаптивные каналы, изображенные на скользящей средней линии плюс/минус стандартные отклонения. каналы Келтнера используют истинный диапазон для вычисления ширины канала.

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

Сильные стороны

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

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

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

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

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

Возможности для расширения

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

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

Заключение

Эта стратегия двойного канала объединяет сильные стороны полос Боллинджера и каналов Келтнера для эффективного выявления возможностей для реверсии, одновременно контролируя риски с помощью фильтров двойного канала и настройки стоп-прибыли.


/*backtest
start: 2023-01-31 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Estratégia de Compra/Venda BB e KC", overlay=true)

// Parâmetros das Bandas de Bollinger
bollinger_length = input(20, title="Comprimento das Bandas de Bollinger", minval=1)
bollinger_deviation = input(2.0, title="Desvio Padrão das Bandas de Bollinger", minval=0.1)

// Parâmetros dos Canais de Keltner
keltner_length = input(20, title="Comprimento dos Canais de Keltner", minval=1)
atr_multiplier = input(1.5, title="Multiplicador ATR dos Canais de Keltner", minval=0.1)

// Take Profit e Stop Loss em termos financeiros
take_profit = input(10.0, title="Take Profit (em $)", step=1)
stop_loss = input(20.0, title="Stop Loss (em $)", step=1)

// Cálculos das Bandas de Bollinger
basis_bb = sma(close, bollinger_length)
dev_bb = sma(stdev(close, bollinger_length), bollinger_length)
upper_bb = basis_bb + dev_bb * bollinger_deviation
lower_bb = basis_bb - dev_bb * bollinger_deviation

// Cálculos dos Canais de Keltner
basis_kc = sma(close, keltner_length)
atr_kc = sma(atr(keltner_length), keltner_length)
upper_kc = basis_kc + atr_multiplier * atr_kc
lower_kc = basis_kc - atr_multiplier * atr_kc

// Condição de Compra
buy_condition = close < lower_bb and close < lower_kc

// Condição de Venda
sell_condition = close > upper_bb and close > upper_kc

// Estratégia de Compra/Venda com TP e SL
if (buy_condition)
    strategy.entry("Compra", strategy.long)
    strategy.exit("Take Profit/Stop Loss", from_entry="Compra", profit=take_profit, loss=stop_loss)
if (sell_condition)
    strategy.entry("Venda", strategy.short)
    strategy.exit("Take Profit/Stop Loss", from_entry="Venda", profit=take_profit, loss=stop_loss)

// Plot das Bandas de Bollinger e dos Canais de Keltner
plot(upper_bb, color=color.rgb(47, 33, 243), title="Banda Superior de Bollinger")
plot(lower_bb, color=color.rgb(89, 33, 243), title="Banda Inferior de Bollinger")
plot(upper_kc, color=color.rgb(200, 255, 0), title="Canal Superior de Keltner")
plot(lower_kc, color=color.rgb(225, 255, 0), title="Canal Inferior de Keltner")


Больше