Strategi ini menggunakan tiga purata bergerak eksponensial (EMA) dengan tempoh yang berbeza untuk menentukan trend pasaran, dan menggabungkan Indeks Kekuatan Relatif (RSI) dan Julat Benar Purata (ATR) untuk mengenal pasti titik masuk, stop-loss, dan tahap mengambil keuntungan. Apabila harga menembusi saluran yang dibentuk oleh tiga EMA dan RSI juga menembusi purata bergerak, strategi ini mencetuskan isyarat masuk. ATR digunakan untuk mengawal saiz kedudukan dan menetapkan tahap stop-loss, sementara nisbah risiko-balasan (RR) digunakan untuk menentukan tahap mengambil keuntungan. Keuntungan utama strategi ini terletak pada kesederhanaan dan keberkesanannya, kerana ia dapat mengikuti trend pasaran dan mengehadkan potensi kerugian melalui langkah pengurusan risiko yang ketat.
Strategi ini membina sistem perdagangan trend-mengikuti yang mudah dan berkesan dengan menggabungkan beberapa penunjuk teknikal yang biasa, seperti EMA, RSI, dan ATR. Ia menggunakan saluran EMA untuk menentukan trend pasaran, RSI untuk mengesahkan kekuatan trend, dan ATR untuk mengawal risiko. Kelebihan strategi terletak pada kesederhanaan dan kebolehsesuaian, kerana ia boleh mengikuti trend dan perdagangan di bawah keadaan pasaran yang berbeza. Walau bagaimanapun, prestasi strategi ini sebahagian besarnya bergantung pada pilihan parameter, dan tetapan parameter yang tidak betul boleh menyebabkan kegagalan strategi atau prestasi yang buruk. Di samping itu, strategi mungkin menghadapi risiko yang signifikan semasa peristiwa yang tidak dijangka atau keadaan pasaran yang melampau. Untuk mengoptimumkan lagi strategi, seseorang boleh mempertimbangkan untuk memperkenalkan penyesuaian parameter dinamik, menggabungkan indikator lain, menggabungkan analisis sentimen pasaran, dan menjalankan pelbagai jangka masa.
/*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)