Sumber daya yang dimuat... Pemuatan...

Sistem Perdagangan Dukungan Dinamis Dual Timeframe

Penulis:ChaoZhang, Tanggal: 2024-12-05 16:44:56
Tag:SMAEMA

img

Gambaran umum

Strategi ini adalah sistem perdagangan dukungan dinamis dual timeframe yang menggabungkan sinyal crossover SMA dan EMA pada jangka waktu mingguan dan harian. Sistem ini memanfaatkan band dukungan yang terbentuk antara rata-rata bergerak untuk mengidentifikasi tren pasar dan peluang perdagangan, meningkatkan akurasi perdagangan melalui konfirmasi sinyal dari dua periode waktu yang berbeda. Strategi ini menggunakan manajemen posisi berbasis persentase dan memperhitungkan biaya perdagangan dan slippage.

Prinsip Strategi

Prinsip inti berkisar pada pemantauan crossover rata-rata bergerak dan posisi relatif di dua kerangka waktu:

  1. Timeframe panjang (minggu) menggunakan SMA 20 minggu dan EMA 21 minggu, timeframe pendek (hari-hari) menggunakan SMA 50 hari dan EMA 51 hari
  2. Dalam jangka waktu yang panjang, sinyal panjang dihasilkan ketika EMA melintasi SMA, dan posisi ditutup pada melintasi ke bawah.
  3. Dalam jangka waktu pendek, sinyal panjang terjadi ketika EMA melintasi SMA dan EMA jangka pendek berada di atas EMA jangka panjang.
  4. Semua posisi panjang ditutup ketika jangka waktu pendek menghasilkan sinyal pendek atau jangka waktu panjang menunjukkan penyeberangan ke bawah
  5. Strategi beroperasi dalam rentang waktu tertentu dengan penutupan posisi otomatis di luar rentang ini

Keuntungan Strategi

  1. Mekanisme konfirmasi ganda: Mengurangi sinyal palsu melalui konfirmasi dua kerangka waktu
  2. Band dukungan dinamis: Band dukungan antara moving average beradaptasi dengan perubahan pasar
  3. Manajemen risiko yang komprehensif: Termasuk pertimbangan biaya perdagangan dan slippage dengan ukuran posisi berdasarkan persentase
  4. Kemampuan beradaptasi yang kuat: Band dukungan menyesuaikan diri secara otomatis dengan volatilitas pasar
  5. Aturan operasional yang jelas: Kondisi masuk dan keluar yang jelas, mudah diterapkan dan backtest

Risiko Strategi

  1. Risiko pasar bergolak: Dapat menghasilkan sinyal palsu yang sering terjadi di pasar sampingan
  2. Risiko keterlambatan: Rata-rata bergerak memiliki keterlambatan yang melekat, berpotensi kehilangan titik masuk yang optimal
  3. Sensitivitas parameter: Kinerja strategi sangat tergantung pada pemilihan periode rata-rata bergerak
  4. Ketergantungan pada lingkungan pasar: Berkinerja lebih baik di pasar tren tetapi mungkin berjuang dalam kondisi yang sangat fluktuatif
  5. Risiko ukuran posisi: Posisi persentase tetap dapat menimbulkan risiko yang berlebihan dalam kondisi pasar tertentu

Arahan Optimasi

  1. Menggabungkan indikator volatilitas: Pertimbangkan untuk menambahkan ATR untuk ukuran posisi dinamis
  2. Mengoptimalkan pemilihan parameter: Backtest periode rata-rata bergerak yang berbeda untuk mengoptimalkan kinerja sistem
  3. Tambahkan filter lingkungan pasar: Terapkan indikator kekuatan tren untuk menyaring kondisi pasar yang tidak cocok
  4. Meningkatkan mekanisme stop-loss: Pertimbangkan untuk menambahkan trailing atau stop tetap untuk pengendalian risiko yang lebih baik
  5. Meningkatkan manajemen posisi: Sesuaikan ukuran posisi secara dinamis berdasarkan kekuatan sinyal dan volatilitas pasar

Kesimpulan

Strategi ini membangun sistem perdagangan yang relatif kuat dengan menggabungkan sinyal crossover rata-rata bergerak dari kerangka waktu yang berbeda. Ini mengidentifikasi tren pasar melalui konsep band dukungan dan menggunakan beberapa mekanisme konfirmasi untuk meningkatkan akurasi perdagangan. Desain strategi mempertimbangkan berbagai faktor perdagangan praktis, termasuk biaya perdagangan, slippage, dan manajemen waktu.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bull Market Support Band", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

start_date = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")

lsmaLength = input.int(20, title="Long SMA Length", minval=1)
lemaLength = input.int(21, title="Long EMA Length", minval=1)
customLongTimeframe = input.timeframe("W", title="Long Timeframe")  // Khung thời gian dài
ssmaLength = input.int(50, title="Short SMA Length", minval=1)
semaLength = input.int(51, title="Short EMA Length", minval=1)
customShortTimeframe = input.timeframe("D", title="Short Timeframe")  // Khung thời gian ngắn

source = close

// Tính toán SMA và EMA cho khung thời gian dài
smaLong = ta.sma(source, lsmaLength)
emaLong = ta.ema(source, lemaLength)
outSmaLong = request.security(syminfo.tickerid, customLongTimeframe, smaLong)
outEmaLong = request.security(syminfo.tickerid, customLongTimeframe, emaLong)

// Tính toán SMA và EMA cho khung thời gian ngắn
smaShort = ta.sma(source, ssmaLength)
emaShort = ta.ema(source, semaLength)
outSmaShort = request.security(syminfo.tickerid, customShortTimeframe, smaShort)
outEmaShort = request.security(syminfo.tickerid, customShortTimeframe, emaShort)

// Plot các chỉ báo trên biểu đồ
smaPlotLong = plot(outSmaLong, color=color.new(color.red, 0), title='20w SMA (Long)')
emaPlotLong = plot(outEmaLong, color=color.new(color.green, 0), title='21w EMA (Long)')
smaPlotShort = plot(outSmaShort, color=color.new(color.red, 0), title='20d SMA (Short)')
emaPlotShort = plot(outEmaShort, color=color.new(color.green, 0), title='21d EMA (Short)')

// Fill vùng giữa các đường SMA và EMA
fill(smaPlotLong, emaPlotLong, color=color.new(color.orange, 75), fillgaps=true)
fill(smaPlotShort, emaPlotShort, color=color.new(color.orange, 75), fillgaps=true)

// Điều kiện long và short cho khung thời gian dài
longConditionLong = ta.crossover(outEmaLong, outSmaLong)
shortConditionLong = ta.crossunder(outEmaLong, outSmaLong)

// Điều kiện long và short cho khung thời gian ngắn
longConditionShort = ta.crossover(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong)
shortConditionShort = ta.crossunder(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong) // Điều kiện short khi EMA ngắn hạn cắt xuống dưới SMA ngắn hạn và EMA ngắn hạn cao hơn EMA dài hạn

// Kiểm tra điều kiện trong khoảng thời gian được chỉ định
inDateRange = true

// Nếu khung ngắn hạn xuất hiện tín hiệu short, ưu tiên đóng tất cả các lệnh Long
if shortConditionShort and inDateRange
    strategy.close_all()

// Nếu khung dài có tín hiệu short, đóng tất cả các lệnh Long
if shortConditionLong and inDateRange
    strategy.close_all()

// Nếu khung ngắn hạn có tín hiệu long và không có tín hiệu short từ khung dài, vào lệnh Long
if longConditionShort and not shortConditionLong and not shortConditionShort and inDateRange
    strategy.entry("Long", strategy.long)

// Đóng tất cả các lệnh khi không trong khoảng thời gian được chọn
if not inDateRange
    strategy.close_all()


Berkaitan

Lebih banyak