Трехмерная скользящая средняя, ​​отслеживание тренда и количественная торговая стратегия Momentum Fusion

EMA TEMA MACD SMA
Дата создания: 2024-11-27 16:08:16 Последнее изменение: 2024-11-27 16:08:16
Копировать: 2 Количество просмотров: 439
1
Подписаться
1617
Подписчики

Трехмерная скользящая средняя, ​​отслеживание тренда и количественная торговая стратегия Momentum Fusion

Обзор

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

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

Стратегия определяет торговые сигналы в основном с помощью трех основных систем технических показателей:

  1. Тройная скользящая средняя ((TEMA) система используется для подтверждения направления общей тенденции. Сила тенденции определяется путем расчета трехслойной ЭМА и ее динамического изменения.
  2. Система быстрого и медленного среднелинейного скрещивания использует 9-циклические и 15-циклические ЭМА для захвата переломных точек среднесрочной тенденции.
  3. Скрещивание цены с 5-циклической EMA служит последним подтверждающим сигналом, используемым для точного определения времени входа в рынок.

Триггер торгового сигнала должен одновременно выполнять следующие условия:

  • Индекс MACD с его сигнальной линией образует золотое пересечение и TEMA тренд вверх
  • Долгосрочные ЭМА на краткосрочные ЭМА
  • Цены выросли на 5-циклическую ЭМА

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ITG Scalper Strategy", shorttitle="lokesh_ITG_Scalper_Strategy", overlay=true)

// General inputs
len = input(14, title="TEMA period")
FfastLength = input.int(13, title="Filter fast length")
FslowLength = input.int(18, title="Filter slow length")
FsignalLength = input.int(14, title="Filter signal length")
sl_points = 7 // 5 points stop loss
tp_points = 100 // 100 points target profit
trail_points = 15 // Trailing stop loss every 10 points

// Validate input
if FfastLength < 1
    FfastLength := 1
if FslowLength < 1
    FslowLength := 1
if FsignalLength < 1
    FsignalLength := 1

// Get real close price
realC = close

// Triple EMA definition
ema1 = ta.ema(realC, len)
ema2 = ta.ema(ema1, len)
ema3 = ta.ema(ema2, len)

// Triple EMA trend calculation
avg = 3 * (ema1 - ema2) + ema3

// Filter formula
Fsource = close
FfastMA = ta.ema(Fsource, FfastLength)
FslowMA = ta.ema(Fsource, FslowLength)
Fmacd = FfastMA - FslowMA
Fsignal = ta.sma(Fmacd, FsignalLength)

// Plot EMAs for visual reference
shortema = ta.ema(close, 9)
longema = ta.ema(close, 15)
yma = ta.ema(close, 5)
plot(shortema, color=color.green)
plot(longema, color=color.red)
plot(yma, color=#e9f72c)

// Entry conditions
firstCrossover = ta.crossover(Fmacd, Fsignal) and avg > avg[1]
secondCrossover = ta.crossover(shortema, longema)  // Assuming you meant to cross shortema with longema
thirdCrossover = ta.crossover(close, yma)

var bool entryConditionMet = false

if (firstCrossover)
    entryConditionMet := true

longSignal = entryConditionMet and secondCrossover and thirdCrossover

// Strategy execution
if (longSignal)
    strategy.entry("Long", strategy.long)
    entryConditionMet := false  // Reset the entry condition after taking a trade

// Calculate stop loss and take profit prices
var float long_sl = na
var float long_tp = na

if strategy.position_size > 0  // Long position
    long_sl := close - sl_points
    long_tp := close + tp_points
    
    // Adjust stop loss with trailing logic
    if (close - long_sl > trail_points)
        long_sl := close - trail_points
        
    strategy.exit("Exit Long", "Long", stop=long_sl, limit=long_tp)

// Plotting Buy signals
plotshape(series=longSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")

// Alerts
alertcondition(longSignal, title="Buy Signal", message="Buy Signal")