이 전략은 트렌드 중의 작은 회전을 포착하고 회전이 끝날 때 더 많은 포지션을 열어 수익을 창출하는 것을 목표로합니다. 그것은 EMA 평균선, MACD 지표, RSI 지표와 같은 기술 지표를 사용하여 트렌드를 판단하고 회전이 끝날 때를 결정하며 ATR 지표를 사용하여 손실 중지 가격을 설정합니다.
이 전략은 우선 EMA, MACD, RSI를 계산하여 현재의 트렌드 방향과 강도를 판단합니다.
3개의 EMA 평균선을 사용한다 (단기 21주기, 중기 50주기, 장기 200주기), 단기 평균선 위에 중장기 2선을 횡단할 때 상승 추세로 판단한다.
MACD 지표는 트렌드 강도를 판단하며, MACD 라인 또는 histo 기둥에 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)