Perdagangan Emas dengan Strategi Simons

Penulis:ChaoZhang, Tarikh: 2024-03-01 12:28:38
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk purata bergerak, indeks kekuatan relatif (RSI) dan corak menelan untuk menjalankan perdagangan panjang dan pendek pada emas. Ia terutamanya menggunakan persilangan purata bergerak 21 hari, 50 hari dan 200 hari sebagai isyarat perdagangan, dengan penunjuk RSI dan corak menelan untuk menapis isyarat kemasukan tambahan untuk pengoptimuman yang lebih baik.

Logika Strategi

Strategi membuat keputusan perdagangan berdasarkan aspek berikut:

  1. Rata-rata Bergerak Crossover

    Perpindahan antara MA 21 hari dan MA 200 hari digunakan sebagai penunjuk utama untuk menentukan pembalikan trend. Salib emas adalah isyarat beli manakala salib kematian adalah isyarat jual. MA 50 hari juga digunakan untuk menapis isyarat palsu.

  2. Indikator RSI

    RSI overbought line pada 70 dan oversold line pada 30 disusun. RSI perlu berada di bawah tahap overbought untuk isyarat panjang, dan di atas tahap oversold untuk isyarat pendek, untuk mengelakkan membeli puncak dan menjual lembah.

  3. Pengesahan corak menelan

    Pola bullish engulfing diperlukan untuk isyarat panjang apabila golden cross berlaku. pola bearish engulfing diperlukan untuk isyarat pendek apabila death cross berlaku. ini lebih lanjut mengesahkan pembalikan trend.

Isyarat perdagangan dihasilkan apabila ketiga-tiga syarat di atas dipenuhi.

Kelebihan

Kelebihan terbesar terletak pada penggunaan komprehensif pelbagai parameter dan penunjuk untuk membuat keputusan, yang menapis isyarat yang salah dengan baik dan mengurangkan kerugian berhenti yang tidak perlu.

  1. Strategi purata bergerak itu sendiri mempunyai kestabilan yang agak baik.

  2. Tetapan RSI menghalang puncak membeli dan menjual lembah.

  3. Pengesahan corak meluap meningkatkan kebolehpercayaan dalam penghakiman pembalikan trend.

  4. Stop loss yang lebih kecil berkesan mengawal risiko.

Risiko

Walaupun strategi ini cemerlang dalam penapisan isyarat dan kawalan risiko, ia masih mengandungi beberapa kelemahan dan risiko:

  1. Penyesuaian parameter yang kompleks memerlukan usaha yang besar untuk mencari kombinasi yang optimum.

  2. Isyarat masuk yang ketat mungkin kehilangan beberapa peluang yang baik.

  3. Akan ada kelewatan tertentu dalam keadaan pasaran yang sangat tidak menentu.

  4. Kestabilan jangka panjang dan kesahihan memerlukan pengesahan lanjut.

Untuk menangani risiko di atas, kita boleh menyempurnakan parameter, mengoptimumkan aliran logik, menggabungkan penunjuk lain dan sebagainya untuk meningkatkan strategi.

Peluang Pengoptimuman

Walaupun berjaya menggabungkan pelbagai penunjuk, strategi ini masih mempunyai ruang untuk pengoptimuman:

  1. Lebih lanjut, cari set parameter yang optimum melalui lebih banyak pengujian semula.

  2. Menggabungkan penunjuk lain seperti MACD, KD dan lain-lain untuk membantu menilai masa pembalikan trend.

  3. Meningkatkan dan memperbaiki mekanisme stop loss. Menilai sama ada peratusan stop loss yang lebih besar dapat mengurangkan perubahan kedudukan yang tidak perlu.

  4. Uji set data sejarah yang lebih lama untuk mengesahkan kesahihan jangka panjang strategi.

Kesimpulan

Kesimpulannya, strategi ini memanfaatkan alat analisis teknikal seperti purata bergerak, RSI dan corak menelan untuk menjalankan perdagangan emas pendek panjang. Melalui konfigurasi parameter dan penapisan isyarat, ia menubuhkan sistem yang agak ketat untuk mengawal risiko hingga tahap tertentu. Walau bagaimanapun, tiada strategi yang boleh menjadi sempurna. Strategi ini masih mempunyai banyak ruang untuk pengoptimuman dan penambahbaikan arah. Secara umum ia menyediakan rujukan yang bermakna untuk perdagangan berjumlah, tetapi masih harus digunakan secara diskrit dengan penyesuaian pragmatis apabila digunakan dalam amalan.


/*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)

Lebih lanjut