Адаптивная многоиндикаторная торговая стратегия Vishal

MACD SAR ST EMA ATR TF
Дата создания: 2025-03-28 17:17:56 Последнее изменение: 2025-03-28 17:17:56
Копировать: 0 Количество просмотров: 407
2
Подписаться
319
Подписчики

Адаптивная многоиндикаторная торговая стратегия Vishal Адаптивная многоиндикаторная торговая стратегия Vishal

Обзор

Стратегия является комплексным количественным методом торговли, который позволяет идентифицировать рыночные тенденции и торговые сигналы путем объединения нескольких технических показателей (MACD, Supertrend и Parabolic SAR). Стратегия предназначена для предоставления гибкой и строгой рамки для принятия торговых решений, которая может адаптироваться к различным рыночным условиям.

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

Принцип стратегии основан на динамическом сочетании трех ключевых технических показателей:

  1. MACD: оценка динамики цен и направления тенденций
  2. Индикатор Supertrend: определение доминирующей тенденции на рынке ((больше или меньше)
  3. Parabolic SAR: предоставляет точные сигналы входа и выхода

Стратегия принимает решение о сделке с помощью следующей логики:

  • Условия для входа в лонг:
    • MACD линия выше, чем линия сигнала
    • Supertrend представлен в зеленом цвете
    • Закрытие торговой сети выше, чем у Parabolic SAR
  • Условия для входа в пустые склады:
    • MACD ниже линии сигнала
    • Supertrend показывает красный цвет.
    • Закрытие по цене ниже Parabolic SAR

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

  1. Комплексная многомерная проверка: снижение риска ложных сигналов
  2. Гибкий сигнальный триггер: нет строгих требований к последовательности триггеров
  3. Стратегия “полной позиции”: максимизация потенциальной прибыли от каждой сделки
  4. Симметричная логика торговли: единообразное поведение на многооборотном и свободном рынках
  5. Динамичный механизм выхода из игры: подтверждение двух последовательных K-линий, чтобы избежать преждевременного выхода

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

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

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

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

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

Vishal Adaptive Multi Indicator Trading Strategy - это инновационный метод количественного трейдинга, который обеспечивает всестороннюю и гибкую рамку для принятия решений о сделках с помощью синхронного действия MACD, Supertrend и Parabolic SAR. Несмотря на определенные риски, его многоиндикаторная проверка и симметричная логика торговли предоставляют инвесторам торговую модель, которая заслуживает глубокого изучения.

Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-27 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Vishal Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// **MACD Inputs & Calculation**
fast_length  = input.int(13, title="MACD Fast Length")
slow_length  = input.int(27, title="MACD Slow Length")
signal_length = input.int(9, title="MACD Signal Smoothing")

fast_ma  = ta.ema(close, fast_length)
slow_ma  = ta.ema(close, slow_length)
macd     = fast_ma - slow_ma
signal   = ta.ema(macd, signal_length)
hist     = macd - signal

// **Supertrend Inputs & Calculation**
atrPeriod = input.int(11,    "ATR Length", minval = 1)
factor    = input.float(3.0, "Factor",     minval = 0.01, step = 0.01)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
bullTrend  = direction < 0   // Uptrend Condition
bearTrend  = direction > 0   // Downtrend Condition

// **Parabolic SAR Inputs & Calculation**
sarStep = input.float(0.02, "Parabolic SAR Step")
sarMax  = input.float(0.2, "Parabolic SAR Max")
sar = ta.sar(sarStep, sarStep, sarMax)

// **Trade Entry Conditions**
macdBullish = macd > signal // MACD in Bullish Mode
macdBearish = macd < signal // MACD in Bearish Mode
priceAboveSAR = close > sar // Price above SAR (Bullish)
priceBelowSAR = close < sar // Price below SAR (Bearish)

// **Boolean Flags to Track Conditions Being Met**
var bool macdConditionMet = false
var bool sarConditionMet = false
var bool trendConditionMet = false

// **Track if Each Condition is Met in Any Order**
if (macdBullish)
    macdConditionMet := true
if (macdBearish)
    macdConditionMet := false

if (priceAboveSAR)
    sarConditionMet := true
if (priceBelowSAR)
    sarConditionMet := false

if (bullTrend)
    trendConditionMet := true
if (bearTrend)
    trendConditionMet := false

// **Final Long Entry Signal (Triggers When All Three Flags Are True)**
longSignal = macdConditionMet and sarConditionMet and trendConditionMet

// **Final Short Entry Signal (Triggers When All Three Flags Are False)**
shortSignal = not macdConditionMet and not sarConditionMet and not trendConditionMet

// **Execute Full Equity Trades**
if (longSignal)
    strategy.entry("Long", strategy.long)

if (shortSignal)
    strategy.entry("Short", strategy.short)

// **Exit Logic - Requires 2 Consecutive Candle Closes Below/Above SAR**
var int belowSARCount = 0
var int aboveSARCount = 0

if (strategy.position_size > 0)  // Long position is active
    belowSARCount := close < sar ? belowSARCount + 1 : 0
    if (belowSARCount >= 1)
        strategy.close("Long")

if (strategy.position_size < 0)  // Short position is active
    aboveSARCount := close > sar ? aboveSARCount + 1 : 0
    if (aboveSARCount >= 1)
        strategy.close("Short")

// **Plot Indicators**
plot(supertrend, title="Supertrend", color=bullTrend ? color.green : color.red, linewidth=2, style=plot.style_linebr)
plot(sar, title="Parabolic SAR", color=color.blue, style=plot.style_cross, linewidth=2)
plot(macd, title="MACD Line", color=color.blue, linewidth=2)
plot(signal, title="MACD Signal", color=color.orange, linewidth=2)
plot(hist, title="MACD Histogram", style=plot.style_columns, color=hist >= 0 ? color.green : color.red)