이 전략은 시장 트렌드를 결정하기 위해 서로 다른 기간을 가진 세 개의 기하급수적인 이동 평균 (EMA) 을 사용하며, 상대 강도 지수 (RSI) 와 평균 진정한 범위 (ATR) 를 결합하여 엔트리 포인트, 스톱 손실 및 영리 수준을 식별합니다. 가격이 세 개의 EMA가 형성 한 채널을 뚫고 RSI도 이동 평균을 뚫고 갈 때 전략은 엔트리 신호를 유발합니다. ATR은 포지션 크기를 제어하고 스톱 손실 수준을 설정하는 데 사용되며 리스크-어워드 비율 (RR) 은 영리 수준을 결정하는 데 사용됩니다. 이 전략의 주요 장점은 시장 추세를 따라 엄격한 리스크 관리 조치를 통해 잠재적 인 손실을 제한 할 수 있기 때문에 단순성과 효과에 있습니다.
이 전략은 EMA, RSI 및 ATR와 같은 여러 일반적인 기술적 지표를 결합하여 간단하고 효과적인 트렌드 추적 거래 시스템을 구축합니다. 시장 트렌드를 결정하기 위해 EMA 채널, 트렌드 강도를 확인하기 위해 RSI 및 위험을 제어하기 위해 ATR을 사용합니다. 전략의 장점은 트렌드와 거래를 다른 시장 조건 하에서 따라갈 수 있기 때문에 단순성과 적응력입니다. 그러나 전략의 성능은 크게 매개 변수 선택에 달려 있으며 부적절한 매개 변수 설정은 전략 실패 또는 열악한 성과를 초래할 수 있습니다. 또한 전략은 예상치 못한 사건 또는 극단적인 시장 조건에서 상당한 위험에 직면 할 수 있습니다. 전략을 더 이상 최적화하기 위해 동적 매개 변수 조정, 다른 지표를 결합, 시장 정서 분석을 통합하고 멀티 타임프레임 거래를 수행하는 것을 고려할 수 있습니다. 이 전략은 실제 트렌드 추적을위한 좋은 기초를 제공하지만 전체적인 시장 조건에 따라 최적화되어야합니다.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 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/ // © hatnxkld //@version=4 strategy("Win ha", overlay=true) ss2 = input("0300-1700", title = "Khung thời gian") t2 = time(timeframe.period,ss2) c2 = #cacae6 bgcolor(t2 ? c2 : na, transp = 70) //3ema emangan=input(title="Ema ngắn", defval = 12) ngan=ema(close, emangan) a= plot(ngan, title="EMA ngắn", color=color.yellow) ematb=input(title="Ema trung bình", defval = 100) tb=ema(close, ematb) b= plot(tb, title="EMA trung bình", color=color.blue) //emadai=input(title="Ema dai", defval = 288) //dai=ema(close,emadai) //c= plot(dai, title="EMA dai", color=color.red) // nhập hệ số nhân ATR i=input(title="Hệ số nhân với ATR", defval=1.25) // RSI rsi=rsi(close, emangan) marsi=sma(rsi, emangan) // Kênh keltler //heso=input(defval=1, title="Hệ số Kênh Keltler") //atr=atr(emangan) //tren=ngan+atr*heso //d=plot(tren, title="Kênh trên", color=color.white) //duoi=ngan-atr*heso //e=plot(duoi, title="Kênh dưới", color=color.white) //fill(d,e, color=color.rgb(48, 58, 53)) ban = ( close[1]>open[1] and (high[1]-close[1])>(close[1]-low[1]) and open>close and close<low[1] ) //or ( open[1] > close[1] and (high[1]-open[1])>(open[1]-low[1]) and (open[1]-close[1])>(close[1]-low[1]) and open>close and close <low[1] ) ) //and time(timeframe.period,"2200-1300") //and (close[1]-open[1])>(open[1]-low[1]) //high > ngan and close < ngan and ngan<tb and // and time(timeframe.period,"1000-2300") bgcolor(color = ban ? color.rgb(235, 106, 123) : na) //bgcolor(color.rgb(82, 255, 154),transp = 100, offset = 1, show_last = 2) //and time(timeframe.period,"2300-1500") and ((open>ngan and close<ngan) or (open>tren and close<tren)) plotshape(ban , style=shape.arrowdown, location=location.abovebar, color=#ff00ff, size=size.tiny, textcolor=color.rgb(255, 59, 213)) alertcondition(ban, "Ban", "Ban") mua= ( open[1]>close[1] and (close[1]-low[1])>(high[1]-close[1]) and close > open and close > high[1] ) //and time(timeframe.period,"2200-1300") //or ( close[1]>open[1] and (open[1]-low[1]) > (high[1]-open[1]) and (close[1]-open[1])>(high[1]-close[1]) and close>open and close>high[1] ) ) //and (open[1]-close[1])>(high[1]-open[1]) //low < ngan and close > ngan and ngan>tb and //or ( close[1]>open[1] and (open[1]-low[1]) > (high[1]-open[1]) and (close[1]-open[1])>(high[1]-close[1]) and close>open and close>high[1] ) // and time(timeframe.period,"1000-2300") bgcolor(color= mua? color.rgb(108, 231, 139):na) //and time(timeframe.period,"2300-1500") and ((open<ngan and close>ngan)or (open<duoi and close>duoi) ) plotshape(mua , style=shape.arrowup, location=location.belowbar, color=#00ff6a, size=size.tiny, textcolor=color.rgb(83, 253, 60)) alertcondition(mua , "Mua", "Mua") //len1 = ban==true and (high-low)>2*atr //plotshape(len1 , style=shape.flag, location=location.abovebar, color=#ff00ff, size=size.tiny, title="Sell Signal", text="Xuong 1", textcolor=color.rgb(255, 59, 213)) //bann= ban==true and rsi < marsi and marsi[2]>marsi[1] //plotshape(bann , style=shape.labeldown, location=location.abovebar, color=#ff00ff, size=size.tiny, title="Sell Signal", text="BAN 2", textcolor=color.rgb(240, 234, 239)) //bannn = mua==true and rsi>marsi and marsi[2]<marsi[1] //plotshape(bannn , style=shape.labelup, location=location.belowbar, color=#00ff6a, size=size.tiny, title="Buy Signal", text="Mua 2", textcolor=color.rgb(237, 241, 236)) //a1= ban==true and (high - low)<atr //plotshape(a1 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Sell", text="<atr", textcolor=color.rgb(240, 95, 76)) //a2 = ban ==true and (high - low)>atr and (high - low)<(2*atr) //plotshape(a2 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Sell", text="<2atr", textcolor=color.rgb(237, 241, 236)) //a3= ban==true and (high - low)>(2*atr) //plotshape(a3 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Sell", text=">2atr", textcolor=color.rgb(234, 252, 74)) //b1= mua==true and (high - low)<atr //plotshape(b1 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Buy", text="<atr", textcolor=color.rgb(237, 241, 236)) //b2 = mua ==true and (high - low)>atr and (high - low)<(2*atr) //plotshape(b2 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Buy", text="<2atr", textcolor=color.rgb(237, 241, 236)) //b3= mua==true and (high - low)>(2*atr) //plotshape(b3 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Buy", text=">2atr", textcolor=color.rgb(237, 241, 236)) // Đặt SL TP ENTRY risk= input(title="Rủi ro % per Trade", defval=0.5) rr= input(title="RR", defval=1.5) onlylong= input(defval=false) onlyshort=input(defval=false) stlong = mua and strategy.position_size<=0 ? low[1]:na stoplong= fixnan(stlong) stshort = ban and strategy.position_size>=0 ? high[1]:na stopshort= fixnan(stshort) enlong = mua and strategy.position_size<=0 ? close:na entrylong =fixnan(enlong) enshort = ban and strategy.position_size>=0 ? close:na entryshort = fixnan(enshort) amountL = risk/100* strategy.initial_capital / (entrylong - stoplong) amountS = risk/100* strategy.initial_capital / (stopshort - entryshort) TPlong= mua and strategy.position_size<=0? entrylong + (entrylong -stoplong)*rr:na takeprofitlong =fixnan(TPlong) TPshort = ban and strategy.position_size>=0? entryshort - (stopshort - entryshort)*rr:na takeprofitshort = fixnan(TPshort) strategy.entry("Long", strategy.long , when = enlong and not onlyshort, qty= amountL ) strategy.exit("exitL", "Long", stop = stoplong, limit= takeprofitlong) strategy.entry("Short", strategy.short , when = enshort and not onlylong, qty= amountS ) strategy.exit("exitS", "Short", stop = stopshort, limit= takeprofitshort)