В процессе загрузки ресурсов... загрузка...

Многоуровневая многопериодная стратегия оптимизации динамического получения прибыли через EMA

Автор:Чао Чжан, Дата: 2025-01-06 10:50:38
Тэги:ЕМАТПSLРСИMACDCCIATRROCМФИOBV

img

Обзор

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

Принципы стратегии

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

  1. Использование перекресток EMA20 и EMA50 для определения направления тренда: генерация сигналов покупки, когда EMA20 пересекается выше EMA50, и сигналов продажи, когда он пересекается ниже
  2. Динамическое установление четырех целей получения прибыли на основе предыдущего диапазона свечей:
    • TP1 устанавливается в диапазоне 0,5x
    • TP2 установлен в диапазоне 1,0x
    • TP3 установлен на диапазоне 1,5x
    • TP4 установлен на диапазоне 2,0x
  3. Установление точки остановки потери в размере 3% для контроля рисков
  4. Отображение направления тренда через цвета фонаря свечи: зеленый для восходящего и красный для нисходящего тренда

Преимущества стратегии

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

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

  1. Задержка EMA: врожденная задержка сигналов EMA может привести к задержке пунктов входа
  2. Боковой рыночный риск: может порождать частые ложные сигналы на различных рынках
  3. Фиксированный стоп-лосс: стоп-лосты на основе процентов могут не соответствовать всем рыночным условиям
  4. Расстояние между получением прибыли: интервалы целевой прибыли могут быть слишком широкими или узкими на волатильных рынках

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

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

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy with Take Profit and Candle Highlighting", overlay=true)

// Define the EMAs
ema200 = ta.ema(close, 200)
ema50 = ta.ema(close, 50)
ema20 = ta.ema(close, 20)

// Plot the EMAs
plot(ema200, color=#c204898e, title="EMA 200", linewidth=2)
plot(ema50, color=color.blue, title="EMA 50", linewidth=2)
plot(ema20, color=color.orange, title="EMA 20", linewidth=2)

// Define Buy and Sell conditions based on EMA crossover
buySignal = ta.crossover(ema20, ema50)  // EMA 20 crosses above EMA 50 (Bullish)
sellSignal = ta.crossunder(ema20, ema50) // EMA 20 crosses below EMA 50 (Bearish)

// Define input values for Take Profit multipliers
tp1_multiplier = input.float(0.5, title="TP1 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp2_multiplier = input.float(1.0, title="TP2 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp3_multiplier = input.float(1.5, title="TP3 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp4_multiplier = input.float(2.0, title="TP4 Multiplier", minval=0.1, maxval=5.0, step=0.1)

// Define Take Profit Levels as float variables initialized with na
var float takeProfit1 = na
var float takeProfit2 = na
var float takeProfit3 = na
var float takeProfit4 = na

// Calculate take profit levels based on the multipliers
if buySignal
    takeProfit1 := high + (high - low) * tp1_multiplier  // TP1: Set TP at multiplier of previous range above the high
    takeProfit2 := high + (high - low) * tp2_multiplier  // TP2: Set TP at multiplier of previous range above the high
    takeProfit3 := high + (high - low) * tp3_multiplier  // TP3: Set TP at multiplier of previous range above the high
    takeProfit4 := high + (high - low) * tp4_multiplier  // TP4: Set TP at multiplier of previous range above the high

if sellSignal
    takeProfit1 := low - (high - low) * tp1_multiplier  // TP1: Set TP at multiplier of previous range below the low
    takeProfit2 := low - (high - low) * tp2_multiplier  // TP2: Set TP at multiplier of previous range below the low
    takeProfit3 := low - (high - low) * tp3_multiplier  // TP3: Set TP at multiplier of previous range below the low
    takeProfit4 := low - (high - low) * tp4_multiplier  // TP4: Set TP at multiplier of previous range below the low

// Plot Take Profit Levels on the chart
plot(takeProfit1, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 1")
plot(takeProfit2, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 2")
plot(takeProfit3, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 3")
plot(takeProfit4, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 4")

// Create buy and sell signals on the chart
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Highlight the candles based on trend direction
uptrend = ta.crossover(ema20, ema50)  // EMA 20 crosses above EMA 50 (Bullish)
downtrend = ta.crossunder(ema20, ema50)  // EMA 20 crosses below EMA 50 (Bearish)

// Highlighting candles based on trend
bgcolor(color = ema20 > ema50 ? color.new(color.green, 80) : ema20 < ema50 ? color.new(color.red, 80) : na)

// Execute buy and sell orders on the chart
strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)

// Exit conditions based on Take Profit levels
strategy.exit("Take Profit 1", "Buy", limit=takeProfit1)
strategy.exit("Take Profit 2", "Buy", limit=takeProfit2)
strategy.exit("Take Profit 3", "Buy", limit=takeProfit3)
strategy.exit("Take Profit 4", "Buy", limit=takeProfit4)

strategy.exit("Take Profit 1", "Sell", limit=takeProfit1)
strategy.exit("Take Profit 2", "Sell", limit=takeProfit2)
strategy.exit("Take Profit 3", "Sell", limit=takeProfit3)
strategy.exit("Take Profit 4", "Sell", limit=takeProfit4)

// Optionally, add a stop loss
stopLoss = 0.03  // Example: 3% stop loss
strategy.exit("Stop Loss", "Buy", stop=close * (1 - stopLoss))
strategy.exit("Stop Loss", "Sell", stop=close * (1 + stopLoss))


Связанные

Больше