Strategi ini dinamakan
Inti strategi ini adalah penunjuk Envelope Pergerakan Rata-Rata (MADE). MADE membentuk band atas dan bawah dengan mengalikan faktor peratusan dengan purata bergerak eksponensial (EMA). Isyarat jual dihasilkan apabila harga memecahkan di atas band atas, dan isyarat beli dihasilkan apabila harga memecahkan di bawah band bawah. Strategi ini menggabungkan penunjuk MADE dengan mekanisme hentian hentian Julat Benar (ATR). Hentian hentian hentian ATR menetapkan stop loss berdasarkan beberapa kelipatan nilai ATR, yang membolehkan penjejakan garis hentian kehilangan yang fleksibel. Ini mengelakkan kerugian hentian yang tidak perlu sambil juga mengunci keuntungan yang ada.
Secara khusus, penunjuk MADE mengandungi 3 parameter: Tempoh, peratusan di atas perAb, dan peratusan di bawah perBl. Parameter Tempoh menentukan tempoh EMA. Jarak jalur atas dan bawah
Akhirnya, isyarat beli dan jual dihasilkan dengan menggabungkan isyarat penunjuk MADE dan keadaan berhenti trailing ATR. Dagangan terbalik boleh dicapai melalui suis input terbalik.
Strategi MADEFlex mempunyai kelebihan berikut:
Lebih dipercayai gabungan isyarat dan stop loss. MADE sendiri cenderung untuk menjana isyarat palsu.
Parameter MADE dan parameter ATR boleh diselaraskan untuk mengawal kuantiti dan kualiti isyarat.
Sokongan untuk perdagangan terbalik. Perdagangan terbalik memperkaya senario aplikasi.
Stopper yang dapat dilihat secara intuitif.
Strategi MADEFlex juga mempunyai risiko berikut:
Parameter MADE yang tidak betul boleh menghasilkan isyarat palsu yang berlebihan. Parameter yang betul perlu diuji dengan teliti.
Hentian ATR yang terlalu longgar boleh kehilangan peluang hentian.
Risiko yang lebih tinggi dengan perdagangan terbalik. Terutamanya dalam situasi turun naik yang tinggi, perdagangan terbalik boleh meningkatkan risiko kerugian. Perlu digunakan dengan berhati-hati.
Kemungkinan kerugian yang lebih tinggi tanpa kehilangan berhenti. Dalam keadaan pasaran yang melampau, kekurangan perlindungan kehilangan berhenti boleh membawa kepada kerugian yang lebih tinggi.
Strategi MADEFlex boleh dioptimumkan ke arah berikut:
Mengoptimumkan parameter MADE untuk meningkatkan kualiti isyarat. Kombinasi tempoh dan peratusan yang berbeza boleh diuji untuk mencari set parameter yang lebih boleh dipercayai.
Mengoptimumkan parameter hentian ATR untuk kesan hentian yang lebih baik. Tempoh dan kelipatan ATR boleh diuji untuk menentukan kombinasi yang lebih sesuai.
Tambah penapis lain untuk mengurangkan lagi isyarat palsu, contohnya menggabungkan penunjuk turun naik untuk penapis.
Tambah mekanisme mengambil keuntungan untuk keluar pada tahap keuntungan tertentu. Ini mengunci keuntungan dan mengawal risiko.
Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara dinamik, contohnya pembelajaran penguat.
Strategi MADEFlex berjaya menggabungkan isyarat perdagangan dari penunjuk Envelope Purata Bergerak dan metodologi hentian ATR. Melalui parameter yang boleh disesuaikan, ia melaksanakan penyelesaian perdagangan kuantitatif yang fleksibel dan boleh dikawal. Strategi ini mempunyai kebolehpercayaan yang agak tinggi dan keupayaan kawalan yang kuat. Ia sesuai untuk pengguna dengan beberapa asas kuantitatif untuk digunakan dan dioptimumkan. Dengan pengoptimuman lanjut, prestasi strategi yang lebih ketara dapat diharapkan.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 27/09/2022 // Moving Average Displaced Envelope. These envelopes are calculated // by multiplying percentage factors with their displaced expotential // moving average (EMA) core. // How To Trade Using: // Adjust the envelopes percentage factors to control the quantity and // quality of the signals. If a previous high goes above the envelope // a sell signal is generated. Conversely, if the previous low goes below // the envelope a buy signal is given. // // Average True Range Trailing Stops Strategy, by Sylvain Vervoort // The related article is copyrighted material from Stocks & Commodities Jun 2009 // // ATR TS used by filter for MADE signals. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title='Moving Average Displaced Envelope & ATRTS', shorttitle='MADE+ATR', overlay=true) tradeDirection = input.string('Both', title='Trade Direction', options=['Both', 'Long', 'Short']) Price = input(title='Source', defval=close) Period = input.int(defval=9, minval=1) perAb = input.float(title='Percent above', defval=.5, minval=0.01, step=0.1) perBl = input.float(title='Percent below', defval=.5, minval=0.01, step=0.1) disp = input.int(title='Displacement', defval=13, minval=1) nATRPeriod = input(15) nATRMultip = input(2) useATR = input(false, title='ATR Filter') reverse = input(false, title='Trade reverse') longAllowed = tradeDirection == 'Long' or tradeDirection == 'Both' shortAllowed = tradeDirection == 'Short' or tradeDirection == 'Both' pos = 0 sEMA = ta.ema(Price, Period) top = sEMA[disp] * ((100 + perAb) / 100) bott = sEMA[disp] * ((100 - perBl) / 100) xATR = ta.atr(nATRPeriod) xHHs =ta.sma(ta.highest(nATRPeriod), nATRPeriod) xLLs =ta.sma(ta.lowest(nATRPeriod),nATRPeriod) nSpread = (xHHs - xLLs) / 2 nLoss = nATRMultip * xATR var xATRTrailingStop = 0.0 xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss ATRLong = close > xATRTrailingStop ? true : false ATRShort = close < xATRTrailingStop ? true : false iff_1 = close > top ? 1 : pos[1] pos := close < bott ? -1 : iff_1 iff_2 = reverse and pos == -1 ? 1 : pos possig = reverse and pos == 1 ? -1 : iff_2 clr = strategy.position_size if possig == 1 if longAllowed and ATRLong strategy.entry('Long', strategy.long) else if ATRLong or strategy.position_size > 0 strategy.close_all() if possig == -1 if shortAllowed and ATRShort strategy.entry('Short', strategy.short) else if ATRShort or strategy.position_size < 0 strategy.close_all() if possig == 0 strategy.close_all() plot(xATRTrailingStop[1], color=color.blue, title='ATR Trailing Stop') barcolor(clr < 0 ? #b50404 : clr > 0 ? #079605 : #0536b3)