Стратегия прорыва MA Trendline

Автор:Чао Чжан, Дата: 2023-10-30 11:39:31
Тэги:

img

Эта стратегия обеспечивает непрерывную прибыльность на волатильных рынках путем отслеживания прорывов движущихся средних линий.

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

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

В частности, стратегия использует 60-периодную двойную скользящую среднюю WMA как основную скользящую среднюю линию. В то же время она вычисляет истинный диапазон цены и рисует верхние и нижние полосы.

В дополнение к сигналам прорыва, стратегия также включает RSI и EMA в качестве вспомогательных индикаторов. Она требует, чтобы RSI> 50 и цена выше EMA шли в длинный, а RSI<50 и цена ниже EMA шли в короткий, чтобы избежать ложных прорывов.

Кроме того, стратегия использует трёхмерные формирования скользящих средних для определения точек выхода.

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

  • Используя MA, чтобы сгладить изменения цен, он может эффективно определить направления тренда.
  • Торговля, основанная на прорывах канала, может приносить достойную прибыль на рынках с ограниченным диапазоном
  • Сочетание RSI и EMA позволяет избежать ложных сигналов прорыва
  • Использование трёх формаций MA для определения точек выхода позволяет избежать исчерпанных тенденций

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

  • Линии MA могут генерировать много ложных прорывов на сильно колеблющихся рынках
  • Время выхода из тройного MA может быть не очень точным
  • Неправильные параметры РСИ могут привести к чрезмерной торговле

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

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

  • Оптимизировать периоды MA для поиска лучших настроек для основной скользящей средней линии
  • Попробуйте заменить RSI другими дополнительными индикаторами, например, KDJ, MACD и т.д.
  • Настройка параметров тройного MA для более точного определения точек перехода
  • Добавление стоп-лосса к управляемому риску по сделке

Резюме

В целом, это отличная стратегия прорыва для рынков с ограниченным диапазоном. Основная идея заключается в том, чтобы открывать позиции на основе прорывов MA, отфильтрованных по индикаторам тренда, и получать устойчивую прибыль на рынках без тренда. Выходы определяются ранее с использованием тройных формирований MA. Есть достаточно места для оптимизации параметров, улучшения логики входа / выхода и т. Д. для максимизации производительности на рынках с ограниченным диапазоном.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-03-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/



//@version=5

//exapple bot
strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sl_inp = input(0.1, title='Stop Loss %') / 100
tp_inp = input(0.33, title='Take Profit %') / 100

length = input(defval=21)
upper = ta.highest(length)
lower = ta.lowest(length)

lengthChop = input.int(14, minval=1)
ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop)
offset = input.int(0, "Offset",  minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

rsi = ta.rsi(close, 14)

var float entry_price = na

output = 100 * (close - upper) / (upper - lower)
ema = ta.ema(output, input(defval=13, title='EMA'))

ma(src, len) =>
    ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
BBMC = ma(close, 60)
rangema = ta.ema(ta.tr, 60)
upperk = BBMC + rangema * 0.2
lowerk = BBMC - rangema * 0.2
color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray

ExitHigh = ma(high, 15)
ExitLow = ma(low, 15)
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = ta.crossover(close, sslExit)
base_cross_Short = ta.crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
entry_long = false

entry_short = false

    
if ta.crossover(close, BBMC) and output > ema
    entry_long := true
    
if ta.crossunder(close, BBMC) and output < ema
    entry_short := true

if entry_long and strategy.position_size == 0
    entry_price := close
    strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size > 0
    strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))


//if entry_short and strategy.position_size == 0
    //entry_price := close
    //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size < 0
    strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))
// plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0))

plot(rsi, color=color.yellow)

plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2)
plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2)

plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0)
plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')





Больше