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

Стратегия торговли многоиндикаторными динамическими лимитовыми ордерами SMA-RSI-MACD

Автор:Чао Чжан, Дата: 2024-12-11 15:15:49
Тэги:SMAРСИMACDЕМА

img

Обзор

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

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

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

  1. Сигналы входа запускаются, когда 9-периодный EMA пересекает 21-периодный EMA
  2. Цена входа устанавливается в виде предельного ордера ниже 9-периодного EMA при определенном сокращении
  3. Подтверждение торговли требует RSI ниже порогового значения и золотого креста MACD
  4. Сигналы выхода включают MACD death cross, фиксированные точки прибыли/убытка и принудительное закрытие на конце рынка.
  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)

 

Связанные

Больше