Динамическая стратегия торговли по лимитным ценам с комбинацией нескольких индикаторов SMA-RSI-MACD

SMA RSI MACD EMA
Дата создания: 2024-12-11 15:15:49 Последнее изменение: 2024-12-11 15:15:49
Копировать: 2 Количество просмотров: 435
1
Подписаться
1617
Подписчики

Динамическая стратегия торговли по лимитным ценам с комбинацией нескольких индикаторов SMA-RSI-MACD

Обзор

Стратегия представляет собой торговую систему, объединяющую несколько технических индикаторов, основанную на подтверждении трёх сигналов EMA Average Crossover, RSI Oversell и MACD Gold Fork, для открытия позиций, для управления риском с помощью динамических ограничительных цены для одного входа и многократного выхода. Стратегия использует 9-циклический и 21-циклический индикаторный подвижной средний (EMA) в качестве основного индикатора тренда, в сочетании с относительно слабым индикатором (RSI) и подвижным средним трендом, отклоняющимся от индикатора (MACD), для фильтрации торговых сигналов, для контроля риска путем установления ограничительного одиночного расстояния и фиксированного количества остановочных потерь.

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

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

  1. Входный сигнал, основанный на 9-циклической EMA, срабатывает при прохождении 21-циклической EMA
  2. Цена входа устанавливается на лимитную цену с указанием количества очков ниже 9-циклической EMA
  3. Подтверждение сделки требует одновременного удовлетворения RSI ниже установленного порога и MACD Gold Forks
  4. Выходные сигналы включают в себя MACD dead fork, фиксированные стоп-стоп-потери и закрытие обязательного равновесия
  5. Время торговли ограничено после 9:30 утра и до 3:10 вечера.

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

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

  1. Механизм подтверждения множественных сигналов повышает надежность транзакций
  2. Вход по ограниченной цене позволяет получить лучшие цены
  3. Фиксированный стоп-стоп для контроля риска
  4. Обязательная ликвидация, чтобы избежать риска на ночь
  5. Ограничения на время торгов позволили избежать колебаний в открытии.
  6. Показатели EMA реагируют на тенденции быстрее
  7. Сочетание RSI и MACD может отфильтровывать ложные сигналы

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

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

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

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

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

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

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

//@version=5
strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true)

// Inputs for Simple Moving Averages
sma_short = ta.ema(close, 9)
sma_long = ta.ema(close, 21)

// Plotting SMA
plot(sma_short, color=color.green, title="SMA 9")
plot(sma_long, color=color.red, title="SMA 21")

// RSI Calculation
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(70, title="RSI Threshold")
rsi = ta.rsi(close, rsi_length)

// MACD Calculation
macd_fast = input.int(8, title="MACD Fast Length")
macd_slow = input.int(18, title="MACD Slow Length")
macd_signal = input.int(6, title="MACD Signal Length")
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)

// Inputs for Limit Order Offset
limit_offset = input.int(50, title="Limit Order Offset", minval=1)  // 50 points below 9 EMA

// User input for specific date
simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates")
simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates")

// Declare limit_price as float
var float limit_price = na

// Calculate Limit Order Price
if (sma_short[1] < sma_long[1] and sma_short > sma_long)  // 9 EMA crosses above 21 EMA
    limit_price := sma_short - limit_offset

// Buy Signal Condition (only on the specified date)
buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) 

// Sell Signal Condition (MACD crossover down)
sell_condition = ta.crossunder(macd_line, signal_line)

// Track Entry Price for Point-Based Exit
var float entry_price = na

if (buy_condition )
    strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price)
    label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
    entry_price := limit_price  // Set entry price

// Exit Conditions
exit_by_macd = sell_condition
exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12))  // Adjust as per exit points

// Exit all positions at the end of the day
if hour == 15 and minute > 10 and strategy.position_size > 0
    strategy.close_all()  // Close all positions at the end of the day
    strategy.cancel_all()  

// Exit based on sell signal or point movement
if (exit_by_macd or exit_by_points  and strategy.position_size > 0 )
    strategy.close("Buy")
    label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)