Strategi ini melaksanakan trend selepas perdagangan pada penunjuk MACD. Ia mengenal pasti arah trend menggunakan MACD dan dengan stop loss dinamik untuk mengunci keuntungan.
Mengira indikator MA pantas, MA perlahan dan MACD. MA pantas menggunakan EMA 12 tempoh, MA perlahan menggunakan EMA 26 tempoh. MACD adalah perbezaan antara MA pantas dan lambat.
Tetapkan garis beli dan jual. Membuat isyarat beli apabila MACD melintasi garis beli, menghasilkan isyarat jual apabila MACD melintasi di bawah garis jual.
Tetapkan stop loss dinamik selepas membuka kedudukan. Stop loss awal ditetapkan pada 95% daripada harga masuk, dan akan naik apabila harga berjalan.
Kedudukan dekat apabila stop loss dicetuskan atau isyarat reverse muncul.
Menggunakan MACD untuk mengenal pasti arah trend dapat dengan berkesan mengesan trend.
Stop loss dinamik boleh terus mengunci keuntungan dan mengelakkan kerugian yang diperbesar.
Logik strategi adalah mudah dan jelas, mudah difahami dan automatik untuk perdagangan kuant.
MACD mempunyai kesan kelewatan, mungkin terlepas pembalikan trend jangka pendek.
Stop loss yang terlalu longgar mungkin kehilangan beberapa keuntungan, terlalu ketat mungkin berhenti lebih awal.
Masalah penyesuaian parameter. parameter MACD dan garis beli / jual memerlukan ujian dan pengoptimuman berterusan.
Berfungsi lebih baik di pasaran yang sedang tren, mungkin mengalami kerugian di pasaran yang bergolak.
Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik.
Uji kaedah stop loss yang berbeza, seperti titik tetap, berasaskan ATR dll.
Tambah keadaan penapis menggunakan penunjuk lain untuk mengelakkan isyarat palsu, contohnya Bollinger Bands, RSI dll.
Gabungkan dengan alat pengenalan trend, menyesuaikan parameter strategi secara dinamik berdasarkan trend vs pasaran terhad julat.
Strategi ini mempunyai logik yang jelas untuk menggunakan MACD untuk mengesan trend dan stop loss dinamik untuk mengunci keuntungan. Ia dapat dengan berkesan mengesan pasaran trend. Tetapi MACD mempunyai isu yang tertinggal, dan titik stop loss perlu dioptimumkan. Langkah seterusnya adalah untuk menguji parameter lebih lanjut, mengoptimumkan mekanisme stop loss, menambah penapis dengan penunjuk lain, untuk menjadikannya kukuh di bawah keadaan pasaran yang berbeza, meningkatkan kestabilan.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD") fastMA = input(title="Fast moving average", defval = 12, minval = 7) slowMA = input(title="Slow moving average", defval = 26, minval = 7) lastColor = yellow [currMacd,_,_] = macd(close[0], fastMA, slowMA, 9) [prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9) plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red plot(currMacd, style = histogram, color = plotColor, linewidth = 3) plot(0, title = "Zero line", linewidth = 1, color = gray) //MACD // Getting inputs fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) src = input(title="Source", defval=close) signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval =9) sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) ///END OF MACD //Long and Close Long Lines linebuy = input(title="Enter Long", type=float, defval=-0.0002) linesell = input(title="Close Long", type=float, defval=0.0001) //Plot Long and Close Long Lines plot(linebuy,color=green),plot(linesell,color=red) //Stop Loss Input sl_inp = input(0.05, title='Stop Loss %', type=float)/100 //Order Conditions longCond = crossover(currMacd, linebuy) exitLong = crossover(currMacd, linesell) stop_level = strategy.position_avg_price * (1 - sl_inp) //Order Entries strategy.entry("long", strategy.long, when=longCond==true) strategy.close("long", when=exitLong==true) strategy.exit("Stop Loss", stop=stop_level)