Мини-стратегия сверхтенденции

Автор:Чао Чжан, Дата: 2023-10-13 15:49:29
Тэги:

Обзор

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

Принципы

Стратегия сначала рассчитывает EMA, MACD и RSI для определения текущего направления и силы тренда.

При использовании 3 EMA (короткие на 21 период, средние на 50 периодов и длинные на 200 периодов) когда короткие EMA пересекают средние и длинные EMA, это сигнализирует о восходящем тренде.

Когда линия MACD или гистограмма пересекает линию 0, она показывает усиление восходящего тренда.

Если показатель превышает 50, то спад может закончиться.

Затем индикатор SuperTrend определяет конкретную точку покупки.

Наконец, стоп-лосс и прибыль устанавливаются на основе ATR.

Преимущества

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

Риски

  • Продолжительный отход может привести к увеличению потерь.
  • Многочисленные показатели делают настройку параметров сложной.
  • Если стоп-лосс слишком свободный, это может увеличить убытки.

Управление рисками:

  • Оптимизировать параметры для выравнивания показателей.
  • Правильно настраивайте стоп-лосс против больших потерь.
  • Избегайте акций с длительным снижением.

Оптимизация

  • Испытать различные комбинации параметров для наилучших показателей.
  • Корректировать стоп-лосс/прибыль на основе ежедневных колебаний акций.
  • Добавьте индикатор объема, чтобы избежать случаев низкого объема.

Заключение

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


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

//@version=5
strategy(title="pullb", overlay = true, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

//variables

///emas var
ema_src = input.source(close, "EMA Source")
ema_1 = input.int(21, 'EMA 1 len')
ema_2 = input(50, 'EMA 2 len')
ema_3 = input(200, 'EMA 3 len')

///macd var
mac_src = input.source(close, "MACD Source")
mac_1 = input.int(12, 'MACD Fast')
mac_2 = input.int(26, 'MACD Signal')
mac_3 = input.int(9, 'MACD Histogram')

///rsi var
rsi_src = input.source(close, "RSI Source")
rsi_len = input.int(14, 'RSI Len')

///stoch var
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
stoch_src = input(close, title="RSI Source Stoch")

//usage variables
ema_b = input.bool(true, "Use EMA Filter")
rsi_b = input.bool(true, "Use RSI Filter")
macd_b = input.bool(true, "Use MACD Filter")
//stoch_b = input(title="Use STOCH Filter", type=bool, defval=true)

//emaas
ema1 = ta.ema(ema_src, ema_1)
ema2 = ta.ema(ema_src, ema_2)
ema3 = ta.ema(ema_src, ema_3)

//macd
[macdLine, signalLine, histLine] = ta.macd(mac_src, mac_1, mac_2, mac_3)

//rsi
rsi = ta.rsi(rsi_src, rsi_len)

//stoch
rsi1 = ta.rsi(stoch_src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//supertrend
Periods = input.int(14, "ATR Period")
src_st = input.source(close, "Supertrend Source")
Multiplier = input.float(2.0 , "ATR Multiplier")
changeATR= input.bool(true, "Change ATR Calculation Method ?")
showsignals = input.bool(true, "Show Buy/Sell Signals ?")
highlighting = input.bool(true, "Highlighter On/Off ?")
atr2 = ta.sma(ta.tr, Periods)
atr3= changeATR ? ta.atr(Periods) : atr2
up=src_st-(Multiplier*atr3)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src_st+(Multiplier*atr3)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

//conditions
///buy
rsi_cond_b = if rsi_b
    rsi >= 50
else 
    true

macd_cond_b = if macd_b
    (histLine >= 0 or histLine < histLine[1])
else
    true
ema_cond_b = if ema_b
    (ema1 > ema2 and ema2 > ema3)
else 
    true

look_for = input.int(5, "Bars from cross to signal")

stoch_signal_sum = 0
for i = 0 to (look_for)
    if k[i] > d[i] and k[i + 1] < d[i + 1] and (k[i + 1] < 20 and d[i + 1] < 20)
        stoch_signal_sum := stoch_signal_sum + 1
        
stoch_cond_b = if stoch_signal_sum > 0
    if k > 80 and d > 80
        false
    else
        true
else
    false


sup_cond_b = buySignal

buy_sig = (rsi_cond_b and macd_cond_b and ema_cond_b and stoch_cond_b and sup_cond_b)

tp_b = close + (ta.atr(14) * 3)
sl_b = close - (ta.atr(14) * 1.5)

if (buy_sig)
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop = sl_b, limit = tp_b)
plot(tp_b)
plot(sl_b)



Больше