Стратегия торговли с разворотом скользящей средней комбинированного тренда

MA EMA TEMA DEMA WMA SMA
Дата создания: 2025-02-20 17:20:42 Последнее изменение: 2025-02-27 17:23:21
Копировать: 0 Количество просмотров: 394
2
Подписаться
319
Подписчики

Стратегия торговли с разворотом скользящей средней комбинированного тренда Стратегия торговли с разворотом скользящей средней комбинированного тренда

Обзор

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

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

Стратегия использует комбинацию нескольких типов движущихся средних (EMA, TEMA, DEMA, WMA, SMA) для построения сложной средней с помощью двух различных циклов (дифолт 20 и 30), которые рассматриваются как взвешенные или арифметические средние. Стратегия ожидает, что цена вернется к среднему уровню, когда цена находится выше средней, и будет восприниматься как понижающаяся, когда она находится ниже средней.

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

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

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

  1. В условиях нестабильных рынков часто могут возникать ложные сигналы, что приводит к увеличению стоимости торгов.
  2. Задержка в комплексной средней линии может привести к задержкам входа и выхода.
  3. Фиксированный процент отклика может нуждаться в корректировке в различных рыночных условиях.
  4. На рынках с быстрым переходом тенденций может быть более сильное отступление.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-10-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ultrajante MA Reaction Strategy", overlay=true, initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ===== Custom Functions for DEMA and TEMA =====
dema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    2 * ema1 - ema2

tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * ema1 - 3 * ema2 + ema3

// ===== Configuration Parameters =====

// MA Type Selection
maType = input.string(title="MA Type", defval="EMA", options=["SMA", "EMA", "WMA", "DEMA", "TEMA"])

// Parameters for composite periods
periodA = input.int(title="Period A", defval=20, minval=1)
periodB = input.int(title="Period B", defval=30, minval=1)
compMethod = input.string(title="Composite Method", defval="Average", options=["Average", "Weighted"])

// Reaction percentage (e.g., 0.5 means 0.5%)
reactionPerc = input.float(title="Reaction %", defval=0.5, step=0.1)

// ===== Composite Period Calculation =====
compPeriod = compMethod == "Average" ? math.round((periodA + periodB) / 2) : math.round((periodA * 0.6 + periodB * 0.4))

// ===== Moving Average Calculation based on selected type =====
ma = switch maType
    "SMA"  => ta.sma(close, compPeriod)
    "EMA"  => ta.ema(close, compPeriod)
    "WMA"  => ta.wma(close, compPeriod)
    "DEMA" => dema(close, compPeriod)
    "TEMA" => tema(close, compPeriod)
    => ta.ema(close, compPeriod)  // Default value

plot(ma, color=color.blue, title="MA")

// ===== Trend Definition =====
trendUp = close > ma
trendDown = close < ma

// ===== Reaction Threshold Calculation =====
// In uptrend: expect the price to retrace to or below a value close to the MA
upThreshold = ma * (1 - reactionPerc / 100)
// In downtrend: expect the price to retrace to or above a value close to the MA
downThreshold = ma * (1 + reactionPerc / 100)

// ===== Quick Reaction Detection =====
// For uptrend: reaction is detected if the low is less than or equal to the threshold and the close recovers and stays above the MA
upReaction = trendUp and (low <= upThreshold) and (close > ma)
// For downtrend: reaction is detected if the high is greater than or equal to the threshold and the close stays below the MA
downReaction = trendDown and (high >= downThreshold) and (close < ma)

// ===== Trade Execution =====
if upReaction
    // Close short position if exists and open long position
    strategy.close("Short", comment="Close Short due to Bullish Reaction")
    strategy.entry("Long", strategy.long, comment="Long Entry due to Bullish Reaction in Uptrend")

if downReaction
    // Close long position if exists and open short position
    strategy.close("Long", comment="Close Long due to Bearish Reaction")
    strategy.entry("Short", strategy.short, comment="Short Entry due to Bearish Reaction in Downtrend")

// ===== Visualization of Reactions on the Chart =====
plotshape(upReaction, title="Bullish Reaction", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small, text="Long")
plotshape(downReaction, title="Bearish Reaction", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small, text="Short")