Strategi Counter Trend Dual Moving Average terutamanya direka untuk perdagangan swing yang digunakan di pasaran FOREX. Strategi ini menghasilkan isyarat perdagangan menggunakan dua purata bergerak dari jangka masa yang berbeza. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, kedudukan pendek diambil untuk mencari pembalikan; apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan, kedudukan panjang diambil untuk mencari pembalikan.
Strategi ini menggunakan purata bergerak dalam jangka masa 1 jam dan 1 hari. purata bergerak 1 jam mencerminkan perubahan harga dengan lebih sensitif dan boleh berfungsi sebagai purata bergerak pantas; purata bergerak 1 hari bertindak balas terhadap perubahan harga lebih perlahan dan boleh berfungsi sebagai purata bergerak perlahan. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, ia dianggap bahawa pasaran semasa adalah bullish dan isyarat pendek akan dihasilkan; apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan, ia dianggap bahawa pasaran semasa menurun dan isyarat panjang akan dihasilkan.
Prinsip memasuki panjang atau pendek untuk mencari pembalikan apabila purata bergerak pantas dan perlahan mempunyai salib emas atau salib mati adalah bahawa apabila purata bergerak pantas dan perlahan menyeberang, ia menunjukkan bahawa pasaran mungkin telah berbalik, dan persilangan garis pantas dan garis perlahan adalah masa menghasilkan isyarat pembalikan. Menurut teori perdagangan pembalikan, harga biasanya tidak naik atau turun dalam satu arah, dan mungkin masa pembalikan harga apabila terdapat terobosan tahap sokongan dan rintangan yang penting. Oleh itu, strategi ini menggunakan isyarat pembalikan purata bergerak ganda untuk menangkap peluang pembalikan.
Strategi ini juga menetapkan waktu dagangan dan syarat pemeriksaan tarikh. Ia hanya berdagang dalam julat tarikh dan jam dagangan yang ditetapkan untuk mengelakkan perdagangan semasa tempoh yang tidak sesuai.
Strategi Counter Trend Dual Moving Average mempunyai kelebihan berikut:
Strategi pembalikan mempunyai kelebihan ruang keuntungan yang besar. Perdagangan pembalikan boleh memperoleh keuntungan yang lebih tinggi dalam keadaan pasaran yang tidak menentu dengan mengambil operasi lawan di titik utama.
Menggunakan gabungan purata bergerak berganda menapis isyarat dan mengelakkan isyarat palsu. satu penunjuk mudah terdedah kepada isyarat palsu, sementara kombinasi penunjuk berganda dapat meningkatkan kebolehpercayaan isyarat dengan menapis beberapa isyarat palsu, menjadikan peluang perdagangan lebih boleh dipercayai.
Menetapkan waktu perdagangan dan syarat tarikh mengelakkan tempoh pasaran yang tidak aktif dan mengelakkan terperangkap. Dengan berdagang hanya semasa jam perdagangan dan julat tarikh yang ditetapkan, adalah mungkin untuk mengelakkan tempoh turun naik harga yang dramatik dan mengelakkan perdagangan yang terhenti.
Strategi pembalikan sesuai untuk perdagangan jangka menengah. Berbanding dengan perdagangan frekuensi tinggi, strategi perdagangan jangka menengah lebih stabil, mengelakkan pembelian dan penjualan yang terlalu kerap.
Kawalan pengambilan maksimum adalah bermanfaat untuk pengurusan modal. Menetapkan nisbah pengambilan maksimum dapat mengawal risiko semalam dengan berkesan dan mengelakkan kerugian dana yang besar.
Strategi Counter Trend Dual Moving Average juga mempunyai risiko berikut:
Isyarat pembalikan mungkin gagal membawa kepada kerugian. Isyarat pembalikan harga tidak selalu boleh dipercayai. Terdapat risiko kerugian apabila harga meneruskan trend tanpa pembalikan. Kerugian boleh dikawal dengan menetapkan stop loss.
Pengecualian trend membawa kepada kerugian. Apabila kedua-dua purata bergerak telah berpisah dengan ketara sebelum pembalikan, mungkin terdapat risiko kerugian. Masa pembalikan boleh ditentukan dengan memerhatikan jarak antara purata bergerak.
Tetapan waktu dagangan yang tidak betul boleh kehilangan peluang. Jika waktu dagangan ditetapkan terlalu ketat, beberapa peluang dagangan mungkin terlepas. Waktu dagangan boleh diperluaskan dengan sewajarnya.
Kegagalan untuk menghentikan kerugian dengan segera selepas pembalikan menghasilkan kerugian yang meluas. Selepas pembalikan, kerugian mesti dihentikan dengan segera apabila harga meneruskan trend asal untuk mengawal kerugian.
Strategi Counter Trend Dual Moving Average juga boleh dioptimumkan dalam aspek berikut:
Uji kombinasi lebih banyak penunjuk untuk mencari isyarat perdagangan yang lebih baik. Penunjuk seperti MACD, KDJ boleh diuji dalam kombinasi dengan purata bergerak berganda untuk meningkatkan ketepatan isyarat.
Mengoptimumkan parameter kitaran purata bergerak untuk mencari parameter optimum.
Memperluas atau menyempitkan waktu perdagangan untuk mencari waktu perdagangan yang optimum.
Tambah keadaan penapisan trend untuk mengelakkan penyimpangan. Penunjuk seperti ADX boleh ditambah untuk menilai kekuatan trend dan mengelakkan pembalikan apabila tidak ada trend yang jelas.
Tambah model pembelajaran mesin untuk pengesahan isyarat. Model boleh dilatih untuk menilai kebolehpercayaan isyarat pembalikan dan menapis beberapa isyarat berkualiti rendah.
Strategi Counter Trend Dual Moving Average sesuai untuk perdagangan jangka menengah di pasaran forex. Ia menggunakan salib emas dan salib mati antara purata bergerak pantas dan perlahan untuk menjana isyarat pembalikan, membuat operasi kaunter di titik pasaran utama, yang mempunyai kelebihan ruang keuntungan yang besar. Pada masa yang sama, ia juga menggunakan tetapan seperti jam dagangan dan pengeluaran maksimum untuk mengawal risiko. Ini adalah sistem pembalikan yang agak stabil yang dapat menjana pulangan yang tinggi sambil mengawal risiko. Pada masa akan datang, strategi ini boleh dipertingkatkan dan dioptimumkan melalui kaedah seperti pengindikat dan pengoptimuman parameter, dan penerapan model pembelajaran mesin.
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 2h 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/ // © SoftKill21 //@version=4 strategy("gbpnzd 1h", overlay=true) src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60") len = input(28, title="Moving Average Length - LookBack Period") //periodT3 = input(defval=7, title="Tilson T3 Period", minval=1) factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0) atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3") fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true res = useCurrentRes ? timeframe.period : resCustom resCustom2 = input(title="plm", type=input.resolution, defval="D") res2 = resCustom2 //hull ma definition hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) //TEMA definition ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) tema = 3 * (ema1 - ema2) + ema3 //Tilson T3 factor = factorT3 *.10 gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor) tilT3 = t3(src, len, factor) avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3 out = avg ema20 = security(syminfo.tickerid, res, out) plot3 = security(syminfo.tickerid, res2, ema20) plot33 = security(syminfo.tickerid, res, ema20) plot(plot3,linewidth=2,color=color.red) plot(plot33,linewidth=2,color=color.white) // longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1] // shortc = crossunder(close[2],plot3) and close[1] < close[2] and close < close[1] volumeMA=input(24) ema_1 = ema(volume, volumeMA) timeinrange(res, sess) => time(res, sess) != 0 //entrytime = timeinrange(timeframe.period, "0900-0915") myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours") entrytime = time(timeframe.period, myspecifictradingtimes) != 0 longC = crossover(plot33,plot3) and time_cond and entrytime shortc = crossunder(plot33,plot3) and time_cond and entrytime // exitlong = crossunder(plot33,plot3) // exitshort = crossover(plot33,plot3) distanta=input(1.0025) exitshort = plot33/plot3 > distanta exitlong = plot3/plot33 > distanta inverse = input(true) exit = input(false) if(inverse==false) strategy.entry("long",1,when=longC) strategy.entry("short",0,when=shortc) if(inverse) strategy.entry("long",1,when=shortc) strategy.entry("short",0,when=longC) if(exit) strategy.close("long",when=exitlong) strategy.close("short",when=exitshort) // if(dayofweek==dayofweek.friday) // strategy.close_all() // risk = input(25) // strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)