Strategi ini menilai trend harga dengan mengira persilangan purata bergerak berganda, dan mengeluarkan isyarat beli dan jual dengan sekatan parameter tertentu. Ia terutamanya terdiri daripada tiga bahagian: pertama, menilai trend harga dengan mengira persilangan purata bergerak cepat dan perlahan; kedua, menetapkan sekatan parameter tertentu untuk mengelakkan perdagangan yang salah; ketiga, gunakan stop profit dan stop loss untuk mengawal risiko.
Inti strategi ini terletak pada pengiraan purata bergerak pantas dan perlahan. purata bergerak pantas mempunyai tempoh separuh daripada keseluruhan tempoh purata bergerak, yang lebih sensitif terhadap perubahan harga; purata bergerak perlahan mempunyai tempoh keseluruhan tempoh purata bergerak, yang mencerminkan perubahan harga dengan lebih lancar.
Di samping itu, strategi menetapkan parameter tertentu untuk mengelakkan perdagangan yang salah. Sebagai contoh, ambang keputusan adalah untuk memastikan bahawa isyarat dikeluarkan hanya apabila perbezaan antara dua purata bergerak melebihi tahap tertentu; parameter keyakinan digunakan untuk menapis turun naik harga kecil.
Akhirnya, stop profit dan stop loss digunakan untuk mengawal risiko. Jika openprofit kurang daripada titik stop loss atau lebih besar daripada titik stop profit, kedudukan akan ditutup. Ini berkesan mengehadkan kerugian satu perdagangan.
Kelebihan terbesar strategi ini adalah menggabungkan pertimbangan mengenai trend harga dan ciri-ciri turun naik melalui penunjuk purata bergerak. Menyambung purata bergerak berganda adalah pendekatan teknikal klasik yang berkesan untuk menentukan trend harga. Dengan pengoptimuman parameter, ia dapat menangkap trend dengan tepat. Parameter keyakinan dapat menapis pasaran yang bergelombang dengan berkesan dan mengelakkan perdagangan yang salah yang kerap.
Di samping itu, parameter seperti ambang keputusan, henti keuntungan dan henti kerugian juga dapat mengurangkan risiko perdagangan dengan mengelakkan mengejar tinggi dan menjual rendah.
Risiko utama strategi ini adalah kemungkinan isyarat yang salah dari purata bergerak berganda. Kedua-dua MA yang cepat dan lambat adalah purata bergerak tertimbang yang bertindak balas dengan perlahan terhadap peristiwa mendadak, sehingga terlepas pembalikan harga jangka pendek. Pada masa ini, parameter keyakinan boleh memberikan pengesahan berganda.
Di samping itu, tetapan yang tidak betul mengenai titik stop profit dan stop loss juga akan meningkatkan risiko. Sasaran keuntungan yang terlalu tinggi dan titik stop loss yang rendah boleh menyebabkan kerugian melebihi jangkaan. Parameter yang munasabah perlu ditetapkan mengikut ciri-ciri produk perdagangan yang berbeza dan turun naik.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan tempoh purata bergerak, menetapkan purata bergerak adaptif untuk lebih baik memodelkan turun naik harga kitaran yang berbeza;
Tetapkan mekanisme penjejakan dinamik untuk berhenti keuntungan dan berhenti kerugian, mengira turun naik dalam masa nyata berdasarkan keadaan pasaran supaya titik berhenti dapat berubah secara dinamik;
Meningkatkan model pembelajaran mesin untuk menilai arah trend harga, menggunakan lebih banyak data sejarah untuk menentukan pergerakan harga semasa, dan mengurangkan isyarat yang salah.
Secara umum, ini adalah strategi perdagangan trend klasik yang mudah dan berkesan. Ia menggunakan silang purata bergerak berganda untuk menentukan trend, menetapkan parameter untuk mengawal risiko, dan mempunyai konfigurasi yang tinggi untuk perdagangan pelbagai produk.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend strategy("Trade Signal", shorttitle="Trade Alert", overlay=true ) keh=input(title="Double HullMA",defval=14, minval=1) dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001) SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=100.00, title="Target Point in $", type=float, step=1) ot=1 n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(close[1],round(keh/2)) nma1=wma(close[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) b=n1>n2?lime:red c=n1>n2?green:red d=n1>n2?red:green confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1]) conversionPeriods = input(9, minval=1, title="Conversion Line Periods") basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods") displacement = input(26, minval=1, title="Displacement") donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) LS=close, offset = -displacement MACD_Length = input(9) MACD_fastLength = input(12) MACD_slowLength = input(26) MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) aMACD = ema(MACD, MACD_Length) closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD if (shortCondition) strategy.entry("Short",strategy.short) //alerts alertcondition(closelong, title='Close Buy Position', message='Close Buy Position') alertcondition(closeshort, title='Close Short Position', message='Close Short Position') alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert') alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert') //a1=plot(n1,color=c) //a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4) //plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4) plot(conversionLine, color=#0496ff, title="Conversion Line") plot(baseLine, color=#991515, title="Base Line") plot(close, offset = -displacement, color=#459915, title="Lagging Span") p1=plot (leadLine1, offset = displacement, color=green, title="Lead 1") p2=plot (leadLine2, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = leadLine1 > leadLine2 ? green : red) // remove the "//" from before the plot script if want to see the indicators on chart