Strategi ini disebut Strategi Perdagangan Robot MACD. Ini menentukan waktu pembelian dan penjualan di pasar dengan menghitung hubungan antara garis cepat dan garis lambat indikator MACD, dan mengadopsi stop loss untuk mengendalikan risiko.
Strategi ini terutama dikembangkan berdasarkan indikator MACD. Indikator MACD terdiri dari garis cepat dan garis lambat. Garis cepat adalah rata-rata bergerak jangka pendek dan garis lambat adalah rata-rata bergerak jangka panjang. Hubungan antara keduanya mencerminkan keadaan pembelian dan penjualan di pasar. Ketika garis cepat melintasi di atas garis lambat, itu adalah sinyal beli, dan ketika melintasi di bawahnya, itu adalah sinyal jual.
Dalam strategi ini, garis cepat dan garis lambat dihitung menggunakan algoritma EMA masing-masing, dan periode dapat disesuaikan.
Ketika menentukan waktu pembelian, periksa tidak hanya salib emas dari garis cepat dan lambat, tetapi juga apakah nilai absolut MACD lebih besar dari garis beli yang disesuaikan.
Ketika menentukan waktu penjualan, garis mati garis cepat dan lambat dan garis sinyal positif harus dipenuhi pada saat yang sama, maka sinyal jual dikeluarkan untuk menutup posisi.
Strategi ini memiliki keuntungan berikut:
Strategi ini juga memiliki beberapa risiko:
Risiko ini dapat dikurangi dengan menyesuaikan parameter dengan tepat, menggabungkan indikator lain, dll.
Strategi dapat dioptimalkan dalam arah berikut:
Secara keseluruhan, ini adalah strategi trend-mengikuti dengan keandalan tinggi. Dengan menilai tren melalui indikator MACD dan mengendalikan risiko dengan trailing stop loss, pengembalian investasi yang stabil dapat diperoleh.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD 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.00045) 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, signal) and signal > 0 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)