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

EMA RSI SL TP BOS
Дата создания: 2024-11-29 15:27:01 Последнее изменение: 2024-11-29 15:27:01
Копировать: 0 Количество просмотров: 415
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Для определения рыночной тенденции стратегия использует три скользящих средних индекса (EMA25, EMA50 и EMA200). Когда цена находится выше EMA200 и EMA200 наклонена вверх, считается, что она находится в восходящем тренде; наоборот, считается, что она находится в нисходящем тренде. После определения направления тенденции стратегия ищет возможности для обратного отклонения цены к EMA25 или EMA50.

Стратегические преимущества

  1. Система многократной проверки значительно повысила надежность транзакций
  2. Сочетание анализа тенденций и динамики снижает риск ложных прорывов
  3. Ясные цели по остановке убытков и прибыли помогают управлять эмоциями
  4. Логика стратегии проста, понятна и легко применяется.
  5. Подходит для различных рыночных условий и торговых сортов

Стратегический риск

  1. Многочисленные условия могут привести к упущенным возможностям
  2. Фиксированные цели по остановке убытков и прибыли могут не подходить для всех рыночных условий.
  3. Частые остановки могут быть вызваны в условиях резкой волатильности рынка
  4. Необходимость постоянного мониторинга рынка для обеспечения применимости параметров стратегии
  5. На форекс может быть больше ложных сигналов

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

  1. Внедрение адаптивных методов расчета стоп-лосса и прибыли
  2. Добавление анализа объема сделок в качестве вспомогательного индикатора подтверждения
  3. Рассмотрение возможности включения фильтрации рыночной волатильности
  4. Выбор временных циклов для оптимизации трендовых суждений
  5. Повышение адаптивности стратегий в различных рыночных условиях

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy/Sell Strategy", overlay=true)

// Input parameters
ema25 = ta.ema(close, 25)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
rsi = ta.rsi(close, 14)
sl_pips = 10
tp_pips = 15

// Convert pips to price units
sl_price_units = sl_pips * syminfo.pointvalue
tp_price_units = tp_pips * syminfo.pointvalue

// Define conditions for buy and sell signals
uptrend_condition = ema200 < close and ta.rising(ema200, 1)
downtrend_condition = ema200 > close and ta.falling(ema200, 1)

pullback_to_ema25 = low <= ema25
pullback_to_ema50 = low <= ema50
pullback_condition = pullback_to_ema25 or pullback_to_ema50

break_of_structure = high > ta.highest(high, 5)[1]
candle_imbalance = close > open

buy_condition = uptrend_condition and pullback_condition and rsi > 50 and break_of_structure and candle_imbalance

pullback_to_ema25_sell = high >= ema25
pullback_to_ema50_sell = high >= ema50
pullback_condition_sell = pullback_to_ema25_sell or pullback_to_ema50_sell

break_of_structure_sell = low < ta.lowest(low, 5)[1]
candle_imbalance_sell = close < open

sell_condition = downtrend_condition and pullback_condition_sell and rsi < 50 and break_of_structure_sell and candle_imbalance_sell

// Plot signals on the chart
plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.large)
plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.large)

// Calculate stop loss and take profit levels for buy signals
var float buy_sl = na
var float buy_tp = na

if buy_condition and strategy.position_size == 0
    buy_sl := close - sl_price_units
    buy_tp := close + tp_price_units
    strategy.entry("Buy", strategy.long)
    strategy.exit("TP/SL Buy", from_entry="Buy", limit=buy_tp, stop=buy_sl)
    label.new(bar_index, high, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(buy_sl) + "\nTP: " + str.tostring(buy_tp), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Calculate stop loss and take profit levels for sell signals
var float sell_sl = na
var float sell_tp = na

if sell_condition and strategy.position_size == 0
    sell_sl := close + sl_price_units
    sell_tp := close - tp_price_units
    strategy.entry("Sell", strategy.short)
    strategy.exit("TP/SL Sell", from_entry="Sell", limit=sell_tp, stop=sell_sl)
    label.new(bar_index, low, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(sell_sl) + "\nTP: " + str.tostring(sell_tp), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// // Plot stop loss and take profit levels for buy signals
// if not na(buy_sl)
//     line.new(x1=bar_index, y1=buy_sl, x2=bar_index + 1, y2=buy_sl, color=color.red, width=1)
// if not na(buy_tp)
//     line.new(x1=bar_index, y1=buy_tp, x2=bar_index + 1, y2=buy_tp, color=color.green, width=1)

// // Plot stop loss and take profit levels for sell signals
// if not na(sell_sl)
//     line.new(x1=bar_index, y1=sell_sl, x2=bar_index + 1, y2=sell_sl, color=color.red, width=1)
// if not na(sell_tp)
//     line.new(x1=bar_index, y1=sell_tp, x2=bar_index + 1, y2=sell_tp, color=color.green, width=1)