이 전략은 트렌드에서 작은 인기를 잡는 것을 목표로 하고, 인기를 끌기 위해 인기를 끌기가 끝나면 긴 거리를 이동합니다. EMA, MACD, RSI와 같은 기술적 지표의 조합을 사용하여 트렌드와 인기를 끌기 끝을 식별합니다. 또한 ATR을 사용하여 스톱 로스를 설정하고 수익 가격을 취합니다.
이 전략은 먼저 EMA, MACD 및 RSI를 계산하여 현재 트렌드 방향과 강도를 결정합니다.
3개의 EMA를 사용한다. (단기 21주기, 중기 50주기 및 200주기). 단기 EMA가 중장기 EMA를 넘을 때 상승 추세를 나타낸다.
MACD는 트렌드 강도를 판단합니다. MACD 라인이나 히스토그램이 0 라인 이상으로 넘으면 상승 트렌드 강화를 나타냅니다.
RSI는 과잉 구매/ 과잉 판매를 나타냅니다. RSI가 50을 넘으면 인하가 끝날 수 있습니다.
그 다음 슈퍼 트렌드 지표는 특정 인수 지점을 식별합니다. 아래에서 위로 돌리는 것은 구매 신호를 제공합니다.
마지막으로, 스톱 로즈와 영업이익은 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)