Strategi Komposisi SMA Crossover

Penulis:ChaoZhang, Tanggal: 2024-04-01 11:11:02
Tag:

img

Gambaran umum

Strategi ini adalah strategi panjang/pendek berdasarkan crossover dari Simple Moving Averages (SMA). Strategi ini menggunakan dua SMA dengan periode yang berbeda untuk menghasilkan sinyal perdagangan. Ketika SMA cepat melintasi SMA lambat dari bawah, itu menghasilkan sinyal panjang; ketika SMA cepat melintasi SMA lambat dari atas, itu menghasilkan sinyal pendek. Strategi ini menggabungkan konsep penggabungan, menyesuaikan posisi secara dinamis berdasarkan ukuran saldo akun saat ini dan keuntungan kumulatif. Hal ini memungkinkan saldo akun untuk tumbuh dari waktu ke waktu, meningkatkan profitabilitas strategi.

Prinsip Strategi

Prinsip inti dari strategi ini adalah menggunakan SMA crossover untuk menghasilkan sinyal perdagangan. SMA adalah indikator trend-mengikuti yang menentukan arah keseluruhan harga dengan rata-rata harga penutupan selama periode tertentu. Dengan menggunakan dua SMA dengan periode yang berbeda, strategi dapat menangkap perubahan tren pasar. Ketika SMA cepat melintasi di atas SMA lambat, itu menunjukkan bahwa tren naik mungkin terbentuk, mendorong strategi untuk memasuki posisi panjang. Sebaliknya, ketika SMA cepat melintasi di bawah SMA lambat, itu menunjukkan bahwa tren penurunan mungkin berkembang, menyebabkan strategi untuk memasuki posisi pendek.

Strategi ini menggunakan konsep penggabungan untuk mengelola ukuran posisi. Hal ini menghitung ukuran posisi berdasarkan saldo akun saat ini dan keuntungan kumulatif. Ini berarti bahwa seiring dengan pertumbuhan saldo akun, strategi secara proporsional meningkatkan ukuran posisi, memaksimalkan potensi keuntungan. Dengan menyesuaikan secara dinamis ukuran posisi, strategi dapat sepenuhnya memanfaatkan keuntungan dari pertumbuhan akun.

Keuntungan Strategi

  1. Kesederhanaan: Strategi ini didasarkan pada SMA crossovers, menjadikannya strategi trend-mengikuti sederhana dan langsung.

  2. Trend-Following: Dengan memanfaatkan crossover SMA, strategi secara efektif menangkap tren pasar.

  3. Dimensi Posisi Dinamis: Strategi ini menggunakan konsep penggabungan untuk mengelola ukuran posisi. Dengan menyesuaikan ukuran posisi secara dinamis berdasarkan saldo akun dan keuntungan kumulatif, strategi dapat sepenuhnya memanfaatkan manfaat dari pertumbuhan akun, meningkatkan profitabilitas.

  4. Adaptabilitas: Strategi ini dapat diterapkan pada berbagai pasar dan kelas aset, seperti saham, forex, komoditas, dll. Kesederhanaan dan kemampuan beradaptasi membuatnya menjadi strategi perdagangan yang serbaguna.

Risiko Strategi

  1. Risiko pasar: Strategi ini bergantung pada keberlanjutan tren pasar. Strategi ini dapat mengalami kerugian selama volatilitas pasar atau pembalikan tren.

  2. Risiko Parameter: Kinerja strategi tergantung pada pilihan periode SMA. Kombinasi periode yang berbeda dapat menghasilkan hasil yang berbeda. Pilihan parameter yang tidak tepat dapat menyebabkan kinerja strategi yang tidak optimal atau peluang perdagangan yang hilang.

  3. Overtrading: Selama kondisi pasar yang tidak stabil, SMA crossover yang sering dapat mengakibatkan overtrading, meningkatkan biaya transaksi dan slippage, yang dapat mempengaruhi kinerja keseluruhan strategi.

  4. Risiko Komposisi: Meskipun komposisi dapat meningkatkan profitabilitas strategi, hal ini juga memperkuat risiko kerugian.

Arah Optimasi Strategi

  1. Optimasi Parameter: Optimalkan periode SMA untuk menemukan kombinasi parameter optimal yang meningkatkan kinerja strategi. Gunakan data historis untuk backtesting dan gunakan algoritma optimasi seperti pencarian grid atau algoritma genetik untuk mengidentifikasi parameter terbaik.

  2. Manajemen Risiko: Memperkenalkan langkah-langkah manajemen risiko, seperti stop-loss dan take-profit, untuk membatasi kerugian per perdagangan dan melindungi keuntungan.

  3. Konfirmasi Tren: Selain crossover SMA, sertakan indikator konfirmasi tren lainnya, seperti MACD atau ADX, untuk menyaring sinyal palsu dan meningkatkan kualitas sinyal. Hanya eksekusi perdagangan ketika beberapa indikator secara bersamaan mengkonfirmasi tren, meningkatkan keandalan strategi.

  4. Optimalisasi Ukuran Posisi: Optimalkan aturan ukuran posisi strategi komposit dengan memperkenalkan langkah-langkah pengendalian risiko untuk membatasi paparan risiko per perdagangan. Pertimbangkan untuk menggunakan Kriteria Kelly atau persentase risiko tetap untuk menentukan ukuran posisi untuk setiap perdagangan, menyeimbangkan risiko dan imbalan.

Kesimpulan

Strategi ini adalah strategi trend-following berdasarkan crossover SMA, menggabungkan konsep compounding untuk mengelola ukuran posisi. Kekuatannya terletak pada kesederhanaan, kemampuan mengikuti tren, ukuran posisi dinamis, dan kemampuan beradaptasi. Namun, strategi ini juga menghadapi tantangan seperti risiko pasar, risiko parameter, overtrading, dan risiko compounding. Untuk meningkatkan strategi, pertimbangkan pengoptimalan parameter, memperkenalkan langkah-langkah manajemen risiko, konfirmasi tren, dan mengoptimalkan aturan ukuran posisi. Dengan optimalisasi dan penyempurnaan terus-menerus, strategi ini memiliki potensi untuk mencapai kinerja yang konsisten di berbagai kondisi pasar.


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

//@version=5
strategy("Umesh SMA Crossover Strategy", overlay=true)

// Input parameters
fast_length = input.int(9, title="Fast SMA Length")
slow_length = input.int(21, title="Slow SMA Length")

// Calculate SMAs
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Plot SMAs
plot(fast_sma, color=color.blue, title="Fast SMA")
plot(slow_sma, color=color.red, title="Slow SMA")

// Strategy logic
longCondition = ta.crossover(fast_sma, slow_sma)
shortCondition = ta.crossunder(fast_sma, slow_sma)

// Initialize cumulative profit with netprofit
var float cumulative_profit = na
if (na(cumulative_profit))
    cumulative_profit := strategy.netprofit

// // Initialize starting balance
// var float starting_balance = na
// if (na(starting_balance))
//     starting_balance := strategy.equity

// Initialize starting balance
var float starting_balance = na
if (na(starting_balance))
    starting_balance := 100000.0 // Initial balance

// Calculate profit or gains
if (strategy.opentrades != 0)
    cumulative_profit := strategy.netprofit + (strategy.equity - starting_balance)

// Calculate position size based on current balance and cumulative profit
//position_size = 100000 
position_size = starting_balance + cumulative_profit

// Entry conditions
if (longCondition)
    strategy.entry("Long", strategy.long, qty = position_size / close)
if (shortCondition)
    strategy.entry("Short", strategy.short, qty = position_size / close)

// // Entry conditions
// if (longCondition)
//     strategy.entry("Long", strategy.long, qty = 100000 / close)
// if (shortCondition)
//     strategy.entry("Short", strategy.short, qty = 100000 / close)


// Plot strategy.equity 
plot(strategy.equity, color=color.green, title="Cumulative Profit")

// Print cumulative profit value on chart
label.new(x = bar_index, y = strategy.equity, text = str.tostring(strategy.equity), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)
// Plot cumulative profit
plot(cumulative_profit, color=color.green, title="Cumulative Profit")

// Print cumulative profit value on chart
label.new(x = bar_index, y = cumulative_profit, text = str.tostring(cumulative_profit), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)

// Plot cumulative profit
plot(position_size, color=color.green, title="Cumulative Profit")

// Print cumulative profit value on chart
label.new(x = bar_index, y = position_size, text = str.tostring(position_size), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)


Lebih banyak