Strategi Crossover antara beberapa moving average

Penulis:ChaoZhang, Tanggal: 2024-02-04 17:21:25
Tag:

img

Gambaran umum

Strategi ini menghitung garis rata-rata bergerak dari beberapa kerangka waktu untuk menentukan tren di berbagai periode. Ini pergi panjang ketika harga melintasi rata-rata bergerak dan pergi pendek ketika harga melintasi di bawah rata-rata bergerak. Selain itu, stop loss dan take profit dimasukkan untuk menyeimbangkan risiko dan pengembalian.

Prinsip-prinsip

Strategi ini didasarkan pada poin-poin utama berikut:

  1. Menghitung rata-rata bergerak sederhana 21 hari, 50 hari, 100 hari dan 200 hari.

  2. Pergi panjang ketika harga melintasi mana-mana rata-rata bergerak, dan pergi pendek ketika melintasi di bawah.

  3. Tetapkan stop loss di dekat harga terendah dari bar sebelumnya setelah membuka posisi panjang, dan di dekat harga tertinggi setelah membuka posisi pendek.

  4. Tetapkan target mengambil keuntungan di bawah harga terendah untuk panjang dan di atas harga tertinggi untuk pendek dalam kisaran tertentu.

  5. Tutup posisi ketika harga mencapai level stop loss atau take profit.

Menghakimi tren di beberapa kerangka waktu dapat meningkatkan keandalan sinyal perdagangan dan memungkinkan kita untuk mengikuti tren ketika mereka relatif jelas.

Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Keandalan sinyal yang ditingkatkan dengan analisis jangka waktu ganda. Crossover rata-rata bergerak yang berbeda membantu menyaring beberapa sinyal palsu dan memungkinkan kita untuk berdagang pada momen tren yang lebih jelas.

  2. Stop dinamis memudahkan pengendalian risiko. Perhitungan stop berdasarkan tindakan harga memberikan kisaran yang wajar untuk membatasi kerugian maksimum berdasarkan per perdagangan.

  3. Struktur kode yang sederhana dan jelas. Sintaks Pine menawarkan struktur yang dapat dibaca untuk dengan mudah menyesuaikan parameter dan mengoptimalkan.

  4. Aplikasi praktis yang mudah. Moving average crossover adalah ide strategi klasik yang dapat dengan mudah diimplementasikan dalam perdagangan langsung dengan penyesuaian parameter yang tepat.

Risiko

Ada juga beberapa risiko yang harus dipertimbangkan:

  1. Penghakiman tren yang tidak akurat. Rata-rata bergerak dapat menghasilkan sinyal campuran dan lag, yang mengarah pada sinyal perdagangan yang tidak tepat.

  2. Eksposur kerugian di pasar yang tidak stabil. Stop loss dapat dipicu dengan mudah dalam kesenjangan harga besar atau pembalikan, menimbulkan kerugian besar.

  3. Pengaturan parameter yang tidak tepat memperbesar kerugian. Stop yang terlalu luas atau mengambil keuntungan yang ketat dapat meningkatkan kerugian maksimum per perdagangan.

  4. Risiko kepemilikan jangka panjang. Tren ini mengikuti strategi tidak mempertimbangkan profitabilitas jangka panjang dan dapat mengkonsumsi modal yang signifikan dari waktu ke waktu.

  5. Perbedaan perdagangan nyata Biaya perdagangan, slippage dll dapat mempengaruhi pengembalian ketika diterapkan di platform perdagangan yang sebenarnya.

Solusi:

  1. Tambahkan konfirmasi sinyal dengan indikator lain seperti KDJ, MACD dll.

  2. Sesuaikan lebar stop berdasarkan kondisi pasar untuk menghindari pemicu prematur.

  3. Mengoptimalkan parameter dan mengevaluasi pengembalian jangka panjang dan penarikan.

  4. Uji strategi secara menyeluruh dalam perdagangan kertas dan tambahkan berhenti manual.

Peluang Peningkatan

Ada ruang untuk perbaikan lebih lanjut:

  1. Tambahkan aturan masuk dan keluar kuantitatif. Misalnya, periksa untuk tertinggi dan terendah baru untuk memastikan perdagangan pada tren yang lebih jelas.

  2. Masukkan ukuran posisi dan manajemen risiko. Dimensi posisi secara dinamis berdasarkan ukuran akun dan kondisi pasar.

  3. Menggunakan indikator seperti PRZ, ATR, DMI dll untuk menyaring dan memilih tren yang tepat.

  4. Bergantian periode pemegang panjang dan pendek. Tetapkan penghentian pada keuntungan untuk mengunci keuntungan.

  5. Membangun kumpulan saham menggunakan model investasi faktor. Skor dan saring saham pada berbagai faktor.

  6. Tambahkan pembelajaran mesin untuk pengendalian risiko. Gunakan LSTM, RNN dll untuk membantu penilaian dan mencegah kesalahan manusia.

Kesimpulan

Strategi crossover rata-rata bergerak sederhana ini menawarkan implementasi yang mudah untuk mengikuti tren. Perhentian dinamis membantu mengendalikan risiko. Tetapi beberapa ketidakakuratan sinyal dan risiko whipsaw ada. Optimasi lebih lanjut pada parameter dan teknik tambahan dapat menyebabkan kinerja yang lebih kuat.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


Lebih banyak