Strategi ini menerapkan tren setelah perdagangan pada indikator MACD. Ini mengidentifikasi arah tren menggunakan MACD dan dengan stop loss dinamis untuk mengunci keuntungan.
Menghitung indikator Fast MA, Slow MA dan MACD. Fast MA menggunakan EMA 12 periode, Slow MA menggunakan EMA 26 periode. MACD adalah perbedaan antara Fast dan Slow MA.
Setel garis beli dan jual. Membuat sinyal beli ketika MACD melintasi garis beli, Membuat sinyal jual ketika MACD melintasi di bawah garis jual.
Setel stop loss dinamis setelah posisi pembukaan. Stop loss awal ditetapkan pada 95% dari harga masuk, dan akan naik seiring harga berjalan.
Posisi tutup saat stop loss dipicu atau sinyal reverse muncul.
Menggunakan MACD untuk mengidentifikasi arah tren dapat secara efektif melacak tren.
Stop loss dinamis dapat terus mengunci keuntungan dan menghindari kerugian yang diperbesar.
Logika strategi sederhana dan jelas, mudah dimengerti dan otomatis untuk perdagangan kuantitatif.
MACD memiliki efek lag, mungkin melewatkan pembalikan tren jangka pendek.
Stop loss yang diatur terlalu longgar mungkin kehilangan beberapa keuntungan, terlalu ketat mungkin berhenti lebih awal.
Masalah penyesuaian parameter. parameter MACD dan garis beli / jual membutuhkan pengujian dan optimasi konstan.
Berfungsi lebih baik di pasar tren, mungkin memiliki kerugian di pasar bergolak.
Mengoptimalkan parameter MACD untuk menemukan kombinasi terbaik.
Uji metode stop loss yang berbeda, seperti titik tetap, berbasis ATR dll.
Tambahkan kondisi filter menggunakan indikator lain untuk menghindari sinyal palsu, misalnya Bollinger Bands, RSI dll.
Gabungkan dengan alat identifikasi tren, menyesuaikan parameter strategi secara dinamis berdasarkan tren vs pasar yang terikat rentang.
Strategi ini memiliki logika yang jelas menggunakan MACD untuk melacak tren dan stop loss dinamis untuk mengunci keuntungan. Ini dapat secara efektif melacak pasar tren. Tetapi MACD memiliki masalah yang tertinggal, dan titik stop loss perlu dioptimalkan. Langkah selanjutnya adalah untuk menguji parameter lebih lanjut, mengoptimalkan mekanisme stop loss, menambahkan filter dengan indikator lain, untuk membuatnya kuat di berbagai kondisi pasar, meningkatkan stabilitas.
/*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)