Тенденция, основанная на MACD и RSI, после стратегии обратного движения

Автор:Чао Чжан, Дата: 2023-12-18 17:53:38
Тэги:

img

Обзор

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

Логика стратегии

  1. Вычислить дифференциации MACD и EMA.

    fastMA = ema(close, fast)
    slowMA = ema(close, slow) 
    macd = fastMA - slowMA
    signal = sma(macd, 9)
    ema = ema(close, input(200))
    
  2. Стройте сигнал покупки: MACD diff (macd - сигнал) выходит выше 0 и цена закрытия выше EMA.

    delta = macd - signal
    buy_entry= close>ema and delta > 0 
    
  3. Сгенерировать сигнал продажи: дифференциация MACD падает ниже 0, а цена закрытия ниже EMA.

    sell_entry = close<ema and delta<0
    
  4. Торговые реверсии, когда RSI достигает уровня перекупленности или перепроданности.

    if (rsi > 70 or rsi < 30)
        reversal := true
    

Анализ преимуществ

  1. Комбинируйте торговлю, следующую за трендом, и торговлю с обратным движением, чтобы извлечь выгоду как из трендов, так и из обратных движений.
  2. Используйте MACD для оценки направления тренда и избегайте ложных прорывов.
  3. Фильтруйте шум с помощью ЭМА.
  4. Повышение рентабельности с помощью RSI для реверсионных сделок.

Анализ рисков

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

Решения:

  1. Оптимизируйте параметры, чтобы найти лучшую комбинацию.
  2. Правильно настраивайте пороговые значения RSI.
  3. Подумайте о добавлении стоп-лосса к контрольным потерям.

Руководство по оптимизации

  1. Проверьте длины EMA.
  2. Оптимизируйте параметры MACD.
  3. Испытывайте различные пороги обратного показателя RSI.
  4. Подумайте о сочетании с другими показателями.

Резюме

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


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mbuthiacharles4

//Good with trending markets
//@version=4
strategy("CHARL MACD EMA RSI")

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)

ema = ema(close, input(200))

rsi = rsi(close, input(14))
//when delta > 0  and close above ema buy

delta = macd - signal

buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0 
var bought = false
var sold = false
var reversal = false
if (buy_entry and bought == false and rsi <= 70) 
    strategy.entry("Buy",true , when=buy_entry)
    bought := true
    
strategy.close("Buy",when= delta<0 or rsi > 70)
if (delta<0 and bought==true)
    bought := false

//handle sells

if (sell_entry and sold == false and rsi >= 30)
    strategy.entry("Sell",false , when=sell_entry)
    sold := true

strategy.close("Sell",when= delta>0 or rsi < 30)
if (delta>0 and sold==true)
    sold := false
    
if (rsi > 70 or rsi < 30)
    reversal := true
    placing = rsi > 70 ? high :low
    label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny)
if (reversal == true)
    if (rsi < 70 and sold == false and delta < 0)
        strategy.entry("Sell",false , when= delta < 0)
        sold := true
        reversal := false
    else if (rsi > 30 and bought == false and delta > 0)
        strategy.entry("Buy",true , when= delta > 0)
        bought := true
        reversal := false



Больше