Множественное пересечение скользящих средних в сочетании со стратегией торговли индикатором импульса

EMA RSI MACD SL TP
Дата создания: 2024-12-05 16:37:24 Последнее изменение: 2024-12-05 16:37:24
Копировать: 0 Количество просмотров: 511
1
Подписаться
1617
Подписчики

Множественное пересечение скользящих средних в сочетании со стратегией торговли индикатором импульса

Обзор

Стратегия представляет собой количественную торговую систему, которая сочетает в себе многочисленные индикаторы, такие как движущиеся средние ((EMA), относительно сильные индикаторы ((RSI) и движущиеся средние трендовые дисперсные индикаторы ((MACD)). Стратегия создает целостную рамку для принятия решений по торговле путем совместной работы с несколькими техническими показателями. Стратегия использует четыре линии EMA на 10, 20, 50 и 100 дней в качестве основных инструментов для определения тенденции, а также RSI и MACD в качестве вспомогательных подтверждающих показателей, в то же время устанавливая стоп-стоп для управления риском.

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

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

  1. Система средних линий: с использованием четырех ЭМА ((10/20/50/100) для построения системы определения тенденций, краткосрочная средняя линия включает 10-дневную и 20-дневную ЭМА, среднесрочная средняя линия - 50-дневную и 100-дневную ЭМА.
  2. Входный сигнал: для выполнения плюса необходимо удовлетворить краткосрочную ЭМА вверх, пересекая долгосрочную ЭМА, в то время как RSI находится выше 50, и MACD пересекает сигнальную линию; для дефолта требуется противоположное условие.
  3. Управление рисками: установлена стоп-лост в размере 1,5% и стоп-стоп в размере 3%, что создает полный механизм управления средствами.
  4. Система подтверждения: использование RSI и MACD в качестве инструментов подтверждения тенденций для повышения точности торгов.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("4 EMA Strategy with RSI & MACD", shorttitle="4 EMA + RSI + MACD", overlay=true)

// Input EMA periods
ema1 = input(10, title="EMA 1")
ema2 = input(20, title="EMA 2")
ema3 = input(50, title="EMA 3")
ema4 = input(100, title="EMA 4")

// Input RSI & MACD settings
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought")
rsiOversold = input(30, title="RSI Oversold")
macdFast = input(12, title="MACD Fast Length")
macdSlow = input(26, title="MACD Slow Length")
macdSignal = input(9, title="MACD Signal Length")

// Stop Loss and Take Profit Inputs
stopLossPct = input.float(1.5, title="Stop Loss %") / 100
takeProfitPct = input.float(3, title="Take Profit %") / 100

// Calculate EMAs
ema_1 = ta.ema(close, ema1)
ema_2 = ta.ema(close, ema2)
ema_3 = ta.ema(close, ema3)
ema_4 = ta.ema(close, ema4)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFast, macdSlow, macdSignal)

// Plot EMAs
plot(ema_1, color=color.blue, title="EMA 10")
plot(ema_2, color=color.green, title="EMA 20")
plot(ema_3, color=color.orange, title="EMA 50")
plot(ema_4, color=color.red, title="EMA 100")

// Entry Conditions
longCondition = ta.crossover(ema_1, ema_4) and ta.crossover(ema_2, ema_3) and rsi > 50 and macdLine > signalLine
shortCondition = ta.crossunder(ema_1, ema_4) and ta.crossunder(ema_2, ema_3) and rsi < 50 and macdLine < signalLine

// Declare Stop Loss and Take Profit Variables
var float stopLossPrice = na
var float takeProfitPrice = na
var line stopLossLine = na
var line takeProfitLine = na

// Long Trade
if (longCondition)
    strategy.entry("Buy", strategy.long)
    stopLossPrice := strategy.position_avg_price * (1 - stopLossPct)
    takeProfitPrice := strategy.position_avg_price * (1 + takeProfitPct)
    // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted)
    // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted)

// Short Trade
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    stopLossPrice := strategy.position_avg_price * (1 + stopLossPct)
    takeProfitPrice := strategy.position_avg_price * (1 - takeProfitPct)
    // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted)
    // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted)

// Clear Lines on Trade Exit
// if (strategy.position_size == 0)
//     line.delete(stopLossLine)
//     line.delete(takeProfitLine)

// Exit Trades
if (strategy.position_size > 0)
    strategy.exit("Sell", from_entry="Buy", stop=stopLossPrice, limit=takeProfitPrice)

if (strategy.position_size < 0)
    strategy.exit("Cover", from_entry="Sell", stop=stopLossPrice, limit=takeProfitPrice)