Strategi Indikator Momentum Integral

Penulis:ChaoZhang, Tanggal: 2023-11-06 14:40:26
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan dengan menghitung jumlah perbedaan antara ROC dan SMA.

Logika Strategi

Strategi ini pertama menghitung SMA dengan panjang l dan ROC. Kemudian menghitung perbedaan k antara harga penutupan dan SMA. Selanjutnya dijumlahkan k untuk s hari dan mendapatkan jumlah. Ketika jumlah > 0, itu panjang. Ketika jumlah < 0, itu pendek.

Secara khusus, dalam kode:

  1. Hitung SMA dengan panjang l, dapatkan a.

  2. Hitung ROC dengan panjang l, dapatkan r.

  3. Hitung perbedaan antara harga penutupan dan SMA: k = penutupan - a.

  4. Tambahkan k untuk s hari, mendapatkan jumlah.

  5. Jika jumlah>0, posisi panjang; jika jumlah<0, posisi pendek.

  6. Keluar saat jumlah <0 untuk panjang, dan jumlah>0 untuk pendek.

Kuncinya adalah untuk meringkas perbedaan k dan menggunakan tanda jumlah untuk sinyal perdagangan. Ketika k > 0 untuk hari-hari terakhir, harga meningkat, jadi pergi panjang. Ketika k < 0, harga menurun, jadi pergi pendek.

Analisis Keuntungan

Strategi perdagangan jangka pendek yang sederhana ini memiliki keuntungan berikut:

  1. Indikator yang digunakan sederhana dan mudah dipahami.

  2. Menyaring dengan perbedaan indikator dapat menemukan peluang perdagangan yang lebih akurat.

  3. Menyimpulkan perbedaannya dapat lebih menangkap tren jangka pendek.

  4. Parameter l dan s dapat disesuaikan untuk siklus yang berbeda.

  5. Logikanya jelas dan mudah dimodifikasi dan dioptimalkan.

  6. Efisiensi pemanfaatan modal yang tinggi untuk perdagangan jangka pendek yang sering.

Analisis Risiko

Ada juga beberapa risiko:

  1. Risiko yang lebih tinggi dalam perdagangan jangka pendek, kerugian adalah mungkin.

  2. Parameter yang tidak tepat dapat menyebabkan perdagangan berlebihan atau kehilangan peluang.

  3. Sulit untuk beradaptasi dengan pembalikan tren, tidak ada stop loss dapat menyebabkan kerugian besar.

  4. Penyesuaian parameter yang sering sangat bergantung pada pengalaman pedagang.

  5. Frekuensi perdagangan yang tinggi dapat meningkatkan biaya transaksi dan slippage.

Solusi:

  1. Sesuaikan parameter dengan baik untuk menurunkan frekuensi perdagangan.

  2. Tambahkan indikator tren untuk mengidentifikasi pembalikan.

  3. Optimalkan stop loss untuk mengendalikan kerugian perdagangan tunggal.

  4. Tambahkan optimasi parameter otomatis untuk mengurangi ketergantungan pada pengalaman.

  5. Mengoptimalkan model eksekusi order untuk menurunkan biaya transaksi.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Mengoptimalkan metode perhitungan parameter, seperti algoritma genetik, untuk membuat parameter adaptif.

  2. Tambahkan indikator dan filter untuk meningkatkan kualitas sinyal.

  3. Meningkatkan strategi stop loss, seperti trailing stop loss.

  4. Mengoptimalkan strategi pengelolaan uang seperti kontrol titik risiko.

  5. Mengoptimalkan model eksekusi pesanan dengan mengikuti tren, kontrol slippage dll.

  6. Tambahkan backtesting dan modul optimasi otomatis.

  7. Tambahkan evaluasi kuantitatif kualitas sinyal.

Dengan optimasi ini, strategi ini dapat menjadi sistem perdagangan jangka pendek yang lebih komprehensif, cerdas, stabil dan terkontrol.

Ringkasan

Secara singkat, strategi ini menghasilkan sinyal sederhana dari indikator, dengan logika yang jelas dan penerapan yang mudah. Dengan optimasi lebih lanjut dalam parameter, stop loss, manajemen uang, dll., Ini dapat menjadi strategi perdagangan kuantitatif yang bermanfaat. Tapi tidak ada strategi yang sempurna. Pedagang masih perlu menerapkannya secara rasional berdasarkan preferensi risiko pribadi.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("Long", strategy.long, oca_name="Long",  comment="Long")
else
    strategy.cancel(id="Long")
if sum<0
    strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
    strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Lebih banyak