Strategi perdagangan kuantitatif berdasarkan rata-rata pergerakan


Tanggal Pembuatan: 2024-01-26 16:29:23 Akhirnya memodifikasi: 2024-01-26 16:29:23
menyalin: 0 Jumlah klik: 555
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan rata-rata pergerakan

Ringkasan

Strategi moving average crossover adalah strategi perdagangan kuantitatif yang didasarkan pada moving average. Strategi ini menghasilkan sinyal perdagangan yang menghasilkan keuntungan dengan menghitung harga rata-rata sekuritas dalam jangka waktu tertentu, menggunakan crossover harga moving average.

Prinsip Strategi

Strategi ini terutama menggunakan persilangan rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menilai tren harga dan menghasilkan sinyal perdagangan. Secara khusus, menggunakan rata-rata bergerak dari dua panjang periode yang berbeda, seperti garis 10 hari dan garis 20 hari.

Ketika rata-rata bergerak cepat dari arah bawah menembus rata-rata bergerak lambat, dianggap bahwa pasar berubah dari turun ke turun, menghasilkan sinyal beli. Ketika rata-rata bergerak cepat dari arah atas jatuh dari rata-rata bergerak lambat, dianggap bahwa pasar berubah dari turun ke turun, menghasilkan sinyal jual.

Dengan menangkap titik-titik perubahan tren harga, strategi ini dapat dibeli saat kondisi berubah, dan dijual saat kondisi berubah, dan menghasilkan keuntungan.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Konsep sederhana, mudah dipahami dan diterapkan
  2. Parameter yang sangat disesuaikan, seperti periode rata-rata bergerak
  3. Hasil pengamatan yang lebih baik, terutama untuk situasi tren
  4. Dapat diintegrasikan dengan Stop Loss Logic, mengendalikan risiko

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Dalam hal ini, ada kemungkinan terjadi kesalahan sinyal dan over-trading.
  2. Dibutuhkan debug parameter, kombinasi parameter yang berbeda dapat memberikan hasil yang berbeda
  3. Tidak mempertimbangkan biaya transaksi dan slippage, efek disk mungkin lebih lemah dari pengukuran ulang
  4. Ada keterlambatan waktu yang mungkin melewatkan kesempatan untuk membalikkan harga dengan cepat.

Risiko ini dapat diminimalkan dengan optimasi yang tepat.

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Dalam kombinasi dengan indikator lain, seperti indikator energi kuantitatif, indikator getaran, dan lain-lain, untuk menghindari kesalahan perdagangan dalam penjumlahan
  2. Menambahkan Adaptive Moving Average untuk memungkinkan perubahan parameter periodik secara dinamis dan lebih baik untuk melacak harga
  3. Mengoptimalkan parameter periodik dari moving average, mencari kombinasi parameter yang optimal
  4. Menetapkan persyaratan untuk masuk kembali dan menghindari transaksi yang sering terjadi
  5. Mempertimbangkan biaya transaksi dan slippage yang sebenarnya, dan menyesuaikan stop loss

Dengan optimasi di atas, Anda dapat meningkatkan efektivitas strategi secara signifikan.

Meringkaskan

Strategi crossover rata-rata bergerak secara keseluruhan adalah strategi perdagangan kuantitatif yang mudah dipelajari dan diterapkan. Ini menggunakan prinsip crossover rata-rata harga untuk menilai tren pasar dan menghasilkan sinyal perdagangan dengan mudah dan intuitif.

Kode Sumber Strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
    
if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)