Strategi ini menggabungkan indikator rata-rata bergerak, indeks kekuatan relatif (RSI) dan pola engulfing untuk melakukan perdagangan panjang dan pendek pada emas.
Strategi membuat keputusan perdagangan berdasarkan aspek berikut:
Rata-rata bergerak crossover
Crossover antara MA 21 hari dan MA 200 hari digunakan sebagai indikator utama untuk menentukan pembalikan tren.
Indikator RSI
RSI harus berada di bawah tingkat overbought untuk sinyal panjang, dan di atas tingkat oversold untuk sinyal pendek, untuk menghindari puncak pembelian dan lembah penjualan.
Konfirmasi Pola Menelan
Pola bullish engulfing diperlukan untuk sinyal panjang ketika golden cross terjadi. pola bearish engulfing diperlukan untuk sinyal pendek ketika death cross terjadi. ini lebih lanjut mengkonfirmasi pembalikan tren.
Sinyal perdagangan dihasilkan ketika ketiga kondisi di atas terpenuhi. Ini membentuk seperangkat filter ketat untuk strategi.
Keuntungan terbesarnya terletak pada penggunaan komprehensif dari beberapa parameter dan indikator untuk pengambilan keputusan, yang menyaring sinyal yang salah dengan baik dan mengurangi stop loss yang tidak perlu.
Strategi rata-rata bergerak itu sendiri memiliki stabilitas yang relatif baik.
Pengaturan RSI mencegah puncak pembelian dan penjualan lembah.
Konfirmasi pola engulfing meningkatkan keandalan dalam penilaian pembalikan tren.
Stop loss yang lebih kecil secara efektif mengendalikan risiko.
Meskipun strategi ini unggul dalam penyaringan sinyal dan pengendalian risiko, strategi ini masih mengandung beberapa kelemahan dan risiko:
Penyesuaian parameter yang kompleks membutuhkan upaya yang signifikan untuk menemukan kombinasi yang optimal.
Sinyal masuk yang ketat mungkin kehilangan beberapa kesempatan bagus.
Akan ada keterlambatan tertentu dalam kondisi pasar yang sangat volatile.
Stabilitas jangka panjang dan validitas perlu diverifikasi lebih lanjut.
Untuk mengatasi risiko di atas, kita dapat memperbaiki parameter, mengoptimalkan aliran logika, menggabungkan indikator lain dll untuk meningkatkan strategi.
Meskipun berhasil dalam menggabungkan beberapa indikator, strategi ini masih memiliki ruang untuk optimasi:
Selanjutnya, carilah set parameter yang optimal melalui backtesting lebih lanjut.
Menggabungkan indikator lain seperti MACD, KD dll untuk membantu menilai waktu pembalikan tren.
Meningkatkan dan menyempurnakan mekanisme stop loss.
Uji set data historis yang lebih lama untuk memverifikasi validitas jangka panjang strategi.
Pada akhirnya, strategi ini memanfaatkan toolkit instrumen analisis teknis seperti moving average, RSI dan pola engulfing untuk melakukan perdagangan emas panjang pendek. Melalui konfigurasi parameter dan penyaringan sinyal, ia membangun sistem yang relatif ketat untuk mengendalikan risiko sampai batas tertentu. Namun, tidak ada strategi yang dapat benar-benar sempurna. Strategi ini masih memiliki banyak ruang untuk optimasi dan perbaikan arah. Secara umum, ia memberikan referensi yang bermakna untuk perdagangan kuantifikasi, tetapi masih harus digunakan secara diskrit dengan penyesuaian pragmatis ketika diterapkan dalam praktek.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Gold Trading with Simons Strategy", overlay=true) // Parameters length21 = input(21, minval=1, title="Length for 21 MA") length50 = input(50, minval=1, title="Length for 50 MA") length200 = input(200, minval=1, title="Length for 200 MA") rsiLength = input(14, minval=1, title="RSI Length") rsiOverbought = input(70, title="RSI Overbought Level") rsiOversold = input(30, title="RSI Oversold Level") takeProfitPercent = input(4, title="Take Profit %") stopLossPercent = input(1, title="Stop Loss %") // Moving Averages ma21 = sma(close, length21) ma50 = sma(close, length50) ma200 = sma(close, length200) // RSI rsi = rsi(close, rsiLength) // Engulfing Pattern isBullishCandle(c) => close[c] > open[c] isBearishCandle(c) => close[c] < open[c] bearishEngulfing = isBullishCandle(1) and isBearishCandle(0) and close < open[1] and open > close[1] bullishEngulfing = isBearishCandle(1) and isBullishCandle(0) and close > open[1] and open < close[1] // Calculate Take Profit and Stop Loss Levels takeProfitLevel(entryPrice) => entryPrice * (1 + takeProfitPercent / 100) stopLossLevel(entryPrice) => entryPrice * (1 - stopLossPercent / 100) // Entry Conditions longCondition = crossover(ma21, ma200) and close > ma21 and close > ma50 and rsi < rsiOverbought and bullishEngulfing shortCondition = crossunder(ma21, ma200) and close < ma21 and close < ma50 and rsi > rsiOversold and bearishEngulfing // Entry if (longCondition) entryPrice = close strategy.entry("Long", strategy.long) strategy.exit("Take Profit", "Long", limit=takeProfitLevel(entryPrice)) strategy.exit("Stop Loss", "Long", stop=stopLossLevel(entryPrice)) if (shortCondition) entryPrice = close strategy.entry("Short", strategy.short) strategy.exit("Take Profit", "Short", limit=takeProfitLevel(entryPrice)) strategy.exit("Stop Loss", "Short", stop=stopLossLevel(entryPrice)) // Plotting plot(ma21, color=color.blue, title="21 MA") plot(ma50, color=color.orange, title="50 MA") plot(ma200, color=color.red, title="200 MA") hline(rsiOverbought, "RSI Overbought", color=color.green) hline(rsiOversold, "RSI Oversold", color=color.red) plot(rsi, "RSI", color=color.purple)