Многовременная стохастическая стратегия следования за трендом

EMA ATR MTF ROI TP SL
Дата создания: 2025-02-18 17:53:04 Последнее изменение: 2025-02-18 17:53:04
Копировать: 1 Количество просмотров: 360
1
Подписаться
1617
Подписчики

Многовременная стохастическая стратегия следования за трендом

Обзор

Эта стратегия является системой отслеживания трендов, которая сочетает в себе многочасовой случайный индикатор (Stochastic) и индексную движущуюся среднюю (EMA). Она использует высокий случайный индикатор для определения условий перекупа и перепродажи, одновременно используя EMA в качестве фильтра тренда и интегрируя динамическое управление позициями и отслеживание стоп-лосс, как полную систему торговых стратегий.

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

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

  1. Использование случайных индикаторов высоких часовых поясов для идентификации зоны перекупа и перепродажи, для определения потенциальных торговых сигналов через пересечение K-линий с уровнем перекупа и перепродажи
  2. Используйте EMA в качестве фильтра тренда, делая больше только в том случае, если цена находится выше EMA, и делая пустоту в том случае, если цена находится ниже EMA
  3. Стоп-стоп и целевые прибыли, рассчитанные на основе динамического ATR, стоп-стоп в 1,5 раза ATR, целевые прибыли в 2 раза
  4. Использование метода динамического расчета позиций, основанного на процентах риска в счете, чтобы гарантировать, что риск каждой сделки контролируется на заданном уровне
  5. Опциональная функция остановки слежения с расстоянием слежения в 1,5 раза ATR

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

  1. Многосигнальное подтверждение: повышение надежности сигнала в сочетании с случайным индикатором высокого часового пояса и фильтром тренда EMA
  2. Правильное управление рисками: использование метода процентного управления рисками для обеспечения безопасности средств
  3. Гибкий механизм остановки: поддержка фиксированного и отслеживаемого остановки, адаптированный к различным рыночным условиям
  4. Ясные напоминания о сделках: система автоматически указывает точки входа, точки остановки и целевые точки для удобства выполнения сделки
  5. Динамическое управление позициями: автоматическая корректировка размеров сделок в зависимости от волатильности, оптимизация эффективности использования средств

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

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

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

  1. Добавление фильтров на рыночные условия: можно добавить индикатор волатильности или индикатор интенсивности тренда, чтобы скорректировать параметры стратегии в различных рыночных условиях
  2. Оптимизация механизма подтверждения сигнала: можно рассмотреть возможность добавления подтверждения количества поставок или других технических показателей в качестве вспомогательного суждения
  3. Усовершенствование управления позициями: доля риска может быть скорректирована на основе динамики волатильности рынка
  4. Улучшенный механизм остановки: можно отслеживать расстояние остановки в зависимости от динамики рыночных характеристик
  5. Фильтрация по времени: учет ограничений на транзакции в важные периоды времени, чтобы избежать риска во время важных новостей

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

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

Исходный код стратегии
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ultimate fairas Oil", overlay=true)

// === Input Parameter ===
k_period = input(14, "K Period")
d_period = input(3, "D Period")
smooth_k = input(3, "Smooth K")
overbought = input(80, "Overbought Level")
oversold = input(20, "Oversold Level")
atrMult = input(1.5, "ATR Multiplier")
use_trailing_stop = input(true, "Enable Trailing Stop")
ema_length = input(50, "EMA Length")
risk_percent = input(2, "Risk per Trade (%)") / 100
account_balance = input(50000, "Account Balance")
mtf_tf = input.timeframe("D", "Higher Timeframe for Stochastic")

// === Multi-Timeframe Stochastic ===
stoch_source = request.security(syminfo.tickerid, mtf_tf, ta.stoch(close, high, low, k_period))
k = ta.sma(stoch_source, smooth_k)

// === Trend Filter (EMA) ===
ema = ta.ema(close, ema_length)
trendUp = close > ema
trendDown = close < ema

// === Entry Conditions ===
longCondition = ta.crossover(k, oversold) and trendUp
shortCondition = ta.crossunder(k, overbought) and trendDown

// === ATR-Based Stop Loss & Take Profit ===
atrValue = ta.atr(14)
stopLoss = atrMult * atrValue
takeProfit = 2 * stopLoss

// === Dynamic Lot Sizing (Risk Management) ===
risk_amount = account_balance * risk_percent
position_size = risk_amount / stopLoss

// === Trailing Stop Calculation ===
trailOffset = atrValue * 1.5
trailStopLong = use_trailing_stop ? close - trailOffset : na
trailStopShort = use_trailing_stop ? close + trailOffset : na

// === Execute Trades ===
if longCondition
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Exit Long", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="BUY", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
    // label.new(x=bar_index, y=close + takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close - stopLoss, text="SL ❌", color=color.red, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close + takeProfit, x2=bar_index + 5, y2=close + takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close - stopLoss, x2=bar_index + 5, y2=close - stopLoss, width=2, color=color.red)

    // Alert
    alert("BUY Signal! TP: " + str.tostring(close + takeProfit) + ", SL: " + str.tostring(close - stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)

if shortCondition
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Exit Short", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="SELL", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
    // label.new(x=bar_index, y=close - takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close + stopLoss, text="SL ❌", color=color.green, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close - takeProfit, x2=bar_index + 5, y2=close - takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close + stopLoss, x2=bar_index + 5, y2=close + stopLoss, width=2, color=color.green)

    // Alert
    alert("SELL Signal! TP: " + str.tostring(close - takeProfit) + ", SL: " + str.tostring(close + stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)