Strategi Keluar Jentera Pembukaan Pendapatan Awal

Penulis:ChaoZhang, Tarikh: 2023-12-01 14:32:48
Tag:

img

Ringkasan

Strategi ini melaksanakan panjang dan pendek berdasarkan crossover purata bergerak, dan keluar hanya pada waktu petang berdasarkan statistik mengambil keuntungan awal untuk mengelakkan terperangkap oleh turun naik pembukaan yang tinggi.

Logika Strategi

Strategi ini menggunakan 3 purata bergerak dengan parameter yang berbeza: garis 14 hari, 28 hari dan 56 hari. Ia menjadi panjang apabila garis 14 hari melintasi di atas garis 56 hari, dan menjadi pendek apabila melintasi di bawah. Pendekatan asas ini mengesan trend jangka panjang. Untuk menapis beberapa bunyi bising, garis 28 hari ditambah sebagai rujukan, supaya isyarat hanya dicetuskan apabila garis 14 hari juga di atas atau di bawah satu 28 hari.

Inovasi utama adalah bahawa ia menghentikan kerugian dan mengambil keuntungan hanya antara jam 4 petang dan 5 petang. Statistik menunjukkan 70% peluang tinggi / rendah harian berlaku dalam jam pertama selepas pembukaan.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Mengesan trend jangka menengah dan panjang, elakkan bunyi bising yang berlebihan
  2. Menggunakan statistik turun naik pembukaan untuk logik stop loss untuk mengelakkan pecah palsu
  3. Logik yang mudah dan intuitif, mudah difahami dan diubah suai

Risiko dan Penyelesaian

Terdapat juga beberapa risiko:

  1. Peluang yang hilang jika pembalikan berlaku pada awal hari boleh menguji keserasian dengan stok tertentu.
  2. Masih ada risiko terperangkap selepas jam kerja.
  3. Penetapan masa backtest yang tidak betul menyebabkan overfitting.

Peluang Peningkatan

Beberapa cara untuk mengoptimumkan lagi strategi:

  1. Uji kombinasi purata bergerak yang berbeza untuk mencari parameter optimum
  2. Julat stop loss tune halus berdasarkan corak turun naik stok tertentu
  3. Tambah penapis jumlah untuk mengelakkan perangkap
  4. Tambah hentian dinamik untuk jejak tarik balik selepas breakouts

Kesimpulan

Strategi ini mempunyai logik yang jelas dan mudah, dengan berkesan menggunakan ciri pembukaan untuk menghentikan kerugian untuk mengelakkan perangkap turun naik. Tetapi terdapat risiko peluang yang hilang dan terperangkap. Parameter harus disesuaikan mengikut stok. Secara keseluruhan idea yang mudah tetapi berkesan untuk kuant pemula.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MAC 1st Trading Hour Walkover", overlay=true)

// Setting up timeperiod for testing
startPeriodYear = input(2014, "Backtest Start Year")
startPeriodMonth = input(1, "Backtest Start Month")
startPeriodDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0)

stopPeriodYear = input(2025, "Backtest Stop Year")
stopPeriodMonth = input(12, "Backtest Stop Month")
stopPeriodDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0)

// Moving Averages
ema14 = ema(close, 14)
ema28 = ema(close, 28)
sma56 = sma(close, 56)

// Plot
plot(ema14, title="ema14", linewidth=2, color=green)
plot(ema28, title="ema28", linewidth=2, color=red)
plot(sma56, title="sma56", linewidth=3, color=blue)

// Strategy
goLong = cross(ema14, sma56) and ema14 > ema28
goShort = cross(ema14, sma56) and ema14 < ema28

// Strategy.When to enter
if time >= testPeriodStart
    if time <= testPeriodStop
        strategy.entry("Go Long", strategy.long, 1.0, when=goLong)
        strategy.entry("Go Short", strategy.short, 1.0, when=goShort)

// Strategy.When to take profit 
if time >= testPeriodStart 
    if time <= testPeriodStop 
        strategy.exit("Close Long", "Go Long", profit=2000) 
        strategy.exit("Close Short", "Go Short", profit=2000) 

// Strategy.When to stop out 
// Some studies show that 70% of the days high low happen in the first hour 
// of trading. To avoid having that volatility fire our loss stop we 
// ignore price action in the morning, but allow stops to fire in the afternoon. 
if time("60", "1000-1600") 
    strategy.exit("Close Long", "Go Long", loss=500) 
    strategy.exit("Close Short", "Go Short", loss=500)

Lebih lanjut