Strategi perdagangan lintas MA berdasarkan crossover rata-rata bergerak jangka pendek dan jangka panjang

Penulis:ChaoZhang, Tanggal: 2024-02-22 15:36:49
Tag:

img

Gambaran umum

Strategi ini adalah strategi perdagangan crossover rata-rata bergerak sederhana berdasarkan crossover rata-rata bergerak jangka pendek dan jangka panjang. Ini menggunakan rata-rata bergerak 34 periode dan 89 periode untuk mengamati crossover mereka selama sesi pagi sebagai sinyal beli dan jual. Ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata bergerak jangka panjang dari bawah, sinyal beli dihasilkan. Ketika melintasi di bawah dari atas, sinyal jual dihasilkan.

Logika Strategi

Logika inti dari strategi ini didasarkan pada persilangan antara rata-rata bergerak jangka pendek dan jangka panjang sebagai sinyal perdagangan. Secara khusus, strategi mendefinisikan rata-rata bergerak sederhana jangka pendek dan jangka panjang (SMA) 34 periode dan 89 periode. Ini hanya mengamati persilangan antara kedua SMA ini selama sesi pagi (08:00 - 10:00). Ketika SMA jangka pendek melintasi SMA jangka panjang dari bawah, pasar dianggap berada dalam tren naik, sehingga menghasilkan sinyal beli. Ketika SMA jangka pendek melintasi di bawah SMA jangka panjang dari atas, pasar dianggap berada dalam tren turun, sehingga menghasilkan sinyal jual.

Setelah menerima sinyal beli atau jual, strategi akan memasuki posisi dan menetapkan kondisi untuk keluar dari posisi, yaitu mengambil keuntungan setelah memegang untuk jumlah tertentu lilin (default adalah 3 lilin) sejak masuk.

Perlu dicatat bahwa strategi hanya mengidentifikasi sinyal crossover selama sesi pagi. Ini karena kerangka waktu ini memiliki volume perdagangan yang lebih tinggi dan sinyal perubahan tren lebih dapat diandalkan. Kerangka waktu lain memiliki fluktuasi harga yang lebih besar dan lebih mudah menghasilkan sinyal palsu.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan aturan crossover rata-rata bergerak yang sederhana dan universal, mudah dimengerti, cocok untuk pemula

  2. Hanya mengidentifikasi sinyal selama sesi pagi di mana sinyal kualitas berlimpah, yang menyaring sinyal palsu selama kerangka waktu lainnya

  3. Memiliki kondisi stop loss yang memungkinkan stop loss yang tepat waktu, mengunci sebagian keuntungan dan mengurangi risiko kerugian

  4. Banyak parameter yang dapat disesuaikan yang dapat disesuaikan berdasarkan kondisi pasar dan gaya perdagangan pribadi

  5. Mudah diperluas untuk dikombinasikan dengan indikator lain untuk merancang strategi yang lebih kompleks

Analisis Risiko

Strategi ini juga memiliki beberapa risiko, terutama dari aspek berikut:

  1. Rata-rata bergerak sendiri memiliki atribut tertinggal yang lebih besar, mungkin melewatkan titik pembalikan harga jangka pendek

  2. Bergantung hanya pada indikator sederhana, rentan terhadap kegagalan dalam lingkungan pasar tertentu (kejutan tren, batas kisaran, dll.)

  3. Posisi stop loss yang tidak benar dapat menyebabkan kerugian yang tidak perlu

  4. Pengaturan parameter yang tidak benar (periode rata-rata bergerak, periode penahan, dll.) juga dapat mempengaruhi kinerja strategi.

Solusi yang sesuai:

  1. Menggabungkan indikator utama lainnya untuk meningkatkan sensitivitas terhadap perubahan jangka pendek

  2. Tambahkan kondisi penyaringan untuk menghindari dampak sinyal palsu selama kejutan dan pasar yang terikat rentang

  3. Mengoptimalkan logika stop loss dan menyesuaikan rentang stop loss secara dinamis berdasarkan volatilitas pasar

  4. Optimasi multi-parameter untuk menemukan pengaturan parameter optimal

Arahan Optimasi

Strategi ini juga memiliki potensi besar untuk optimalisasi, terutama dari aspek berikut:

  1. Tambahkan kondisi penyaringan lainnya untuk menghindari sinyal palsu selama kejutan dan pasar yang terikat rentang

  2. Masukkan indikator momentum untuk mengidentifikasi sinyal pecah yang lebih kuat

  3. Mengoptimalkan parameter periode rata-rata bergerak untuk menemukan kombinasi parameter terbaik

  4. Otomatis mengoptimalkan rentang stop loss berdasarkan volatilitas pasar

  5. Cobalah untuk mengoptimalkan seluruh strategi secara otomatis berdasarkan teknik pembelajaran mesin

  6. Mencoba untuk menggabungkan dengan strategi lain untuk merancang sistem multi-strategi yang lebih kompleks

Kesimpulan

Secara umum, strategi ini relatif sederhana dan praktis, cocok untuk pemula untuk belajar dari. Ini mewujudkan pola khas strategi crossover rata-rata bergerak dan menggunakan stop untuk mengendalikan risiko. Namun, optimasi lebih lanjut dapat dilakukan untuk meningkatkan kinerja untuk lebih banyak kondisi pasar. Investor dapat memanfaatkan kerangka dasar ini untuk merancang strategi perdagangan kuantitatif yang lebih maju.


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

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

// Define the length for the SMAs
short_length = input(34, title="Short SMA Length")
long_length = input(89, title="Long SMA Length")
exit_candles = input(3, title="Exit after how many candles?")
exit_at_open = input(true, title="Exit at Open?")

// Define morning session
morning_session = input("0800-1000", "Morning Session")

// Calculate SMAs
short_sma = ta.sma(close, short_length)
long_sma = ta.sma(close, long_length)

// Function to check if current time is within specified session
in_session(session) =>
    session_start = na(time(timeframe.period, "0800-1000")) ? na : true
    session_start

// Condition for buy signal (short SMA crosses over long SMA) within specified trading hours
buy_signal = ta.crossover(short_sma, long_sma)

// Condition for sell signal (short SMA crosses under long SMA) within specified trading hours
sell_signal = ta.crossunder(short_sma, long_sma)

// Function to exit the trade after specified number of candles
var int trade_entry_bar = na
var int trade_exit_bar = na
if (buy_signal or sell_signal)
    trade_entry_bar := bar_index
if (not na(trade_entry_bar))
    trade_exit_bar := trade_entry_bar + exit_candles

// Exit condition
exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar))

// Execute trades
if (buy_signal)
    strategy.entry("Buy", strategy.long)
if (sell_signal)
    strategy.entry("Sell", strategy.short)
if (exit_condition)
    strategy.close("Buy")
    strategy.close("Sell")

// Plot SMAs on the chart
plot(short_sma, color=color.blue, linewidth=1)
plot(long_sma, color=color.red, linewidth=1)


Lebih banyak