Strategi Pelanggaran Momentum Stochastic

Penulis:ChaoZhang, Tarikh: 2023-10-24 16:35:24
Tag:

img

Ringkasan

Strategi Momentum Breakout terutamanya menggunakan penunjuk osilator Stochastic untuk menentukan arah trend pasaran, digabungkan dengan penunjuk ADX untuk menilai kekuatan trend, untuk menjana isyarat perdagangan.

Logika Strategi

Strategi ini berdasarkan dua penunjuk teknikal:

  1. Osilator Stochastic: digunakan untuk menentukan arah trend pasaran. Nilai osilator Stochastic berkisar dari 0 hingga 100. Nilai antara 45 dan 55 apabila tempoh adalah 14 bermaksud tidak ada trend yang jelas. Stochastic di atas 55 adalah isyarat kenaikan dan di bawah 45 adalah isyarat penurunan.

  2. Penunjuk ADX: digunakan untuk menilai kekuatan trend. ADX di bawah 20 menunjukkan trend yang lemah.

Strategi ini pertama menilai sama ada terdapat trend menaik atau menurun yang jelas berdasarkan nilai osilator Stochastic. Apabila Stochastic melebihi 55, ia menandakan trend menaik. Apabila di bawah 45, ia menandakan trend menurun.

Ia kemudian memeriksa sama ada ADX di atas 20 untuk mengesahkan trend yang kuat. Jika ADX di atas 20, ia bermakna trend itu cukup kuat untuk perdagangan trend. Jika ADX di bawah 20, trend itu dianggap tidak jelas dan tiada isyarat perdagangan akan dihasilkan.

Dengan menggabungkan osilator Stochastic dan ADX, isyarat dagangan dihasilkan apabila kedua-dua syarat berikut dipenuhi:

  1. Stochastic di atas 55, menandakan trend menaik.
  2. ADX di atas 20, mengesahkan aliran menaik adalah kuat.

Isyarat jual dihasilkan apabila kedua-dua syarat ini dipenuhi:

  1. Stochastic di bawah 45, menandakan trend menurun.
  2. ADX di atas 20, mengesahkan trend menurun adalah kuat.

Dengan peraturan ini, strategi membentuk sistem trend mengikut jangka sederhana hingga panjang.

Kelebihan

Kelebihan strategi ini termasuk:

  1. Mengesan trend jangka menengah hingga panjang: Dengan menggabungkan Stochastic dan ADX, ia dapat menentukan arah trend pasaran dan kekuatan dengan berkesan, menangkap trend utama.

  2. Kawalan pengeluaran: Hanya perdagangan apabila trend jelas dapat membantu mengawal whipsaws yang tidak perlu.

  3. Penyesuaian parameter: Tempoh Stochastic dan ADX boleh dioptimumkan untuk pasaran yang berbeza.

  4. Kesederhanaan: Logik keseluruhan adalah mudah dan intuitif, terdiri daripada dua penunjuk teknikal yang biasa.

  5. Keseluruhan: Strategi ini boleh digunakan untuk pasaran yang berbeza dengan penyesuaian parameter.

Risiko

Beberapa risiko strategi:

  1. Titik pecah yang hilang: Sebagai penunjuk trend, Stochastic dan ADX mungkin terlepas titik pembalikan trend yang berpotensi dan perdagangan pecah awal.

  2. Risiko pembalikan trend: Mereka mungkin salah menilai trend untuk diteruskan berhampiran akhir trend, kehilangan peluang untuk keluar tepat pada masanya, yang membawa kepada kerugian yang diperkuat.

  3. Kesukaran dalam pengoptimuman parameter: Parameter perlu disesuaikan untuk pasaran yang berbeza, yang menimbulkan beberapa kesukaran.

  4. Whipsaws: Ia boleh menjana beberapa isyarat tidak sah di pasaran yang terhad dalam julat tanpa trend yang jelas.

  5. Divergensi: Apabila trend harga bertentangan dengan trend osilator Stochastic, divergensi muncul, yang boleh membawa kepada perdagangan yang rugi.

Risiko boleh dikurangkan dengan:

  1. Menambah penunjuk lain untuk mengenal pasti trend tempatan dan titik pecah yang berpotensi.

  2. Menggabungkan isyarat pembalikan trend untuk keluar tepat pada masanya apabila trend berbalik secara besar-besaran.

  3. Menggunakan pembelajaran mesin untuk mengoptimumkan parameter secara automatik.

  4. Meningkatkan ambang ADX untuk menapis isyarat trend yang lemah di pasaran yang berbeza.

  5. Menggunakan penunjuk tambahan untuk mengesahkan isyarat Stochastic dan mengelakkan perdagangan perbezaan.

Arahan Penambahbaikan

Beberapa cara untuk meningkatkan strategi:

  1. Mengoptimumkan parameter Stochastic seperti tempoh K dan D untuk mencari titik perubahan dengan tepat.

  2. Mengoptimumkan tempoh ADX untuk menentukan parameter terbaik untuk menilai kekuatan trend.

  3. Menambah isyarat pembalikan trend seperti meningkatkan saiz kedudukan di zon overbought/oversold Stochastic dengan stop loss.

  4. Menggabungkan penunjuk lain seperti RSI dan MACD untuk memperbaiki masa masuk dan keluar.

  5. Menggunakan pembelajaran mesin untuk mencari kombinasi parameter yang optimum.

  6. Melaksanakan strategi stop loss seperti memindahkan stop loss atau membalikkan stop loss untuk mengawal kerugian perdagangan tunggal.

  7. Stop loss Trailong: Tambahkan stop loss untuk mengunci keuntungan apabila trend meluas.

  8. Pengurusan wang: Mengoptimumkan pengurusan risiko dengan menyesuaikan saiz kedudukan berdasarkan kekuatan ADX.

Ringkasan

Ringkasnya, strategi Momentum Breakout ini secara keseluruhan adalah sistem yang mengikuti trend, menggunakan Stochastic untuk menentukan arah trend dan ADX untuk mengukur kekuatan, membentuk strategi perdagangan jangka menengah hingga panjang. Kelebihannya terletak pada menangkap trend dan mengawal penurunan dengan logik yang mudah dan intuitif. Kelemahannya adalah potensi perdagangan pecah awal dan risiko pembalikan trend. Kita boleh mengoptimumkannya melalui kaedah seperti penyesuaian parameter, menambah isyarat, melaksanakan stop loss untuk meningkatkan ganjaran / risiko sambil mengawal risiko.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by Bitcoinduke
//Original Creator is Jake Bernstein 
// Link: https://school.stockcharts.com/doku.php?id=trading_strategies:stochastic_pop_drop
// Tested: XBTUSD 3h | BTCPERP FTX 3h
//@version=4
// strategy(shorttitle="Stochastic Pop and Drop", title="Pop and Drop", overlay=false, 
//      calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, 
//      default_qty_value=1000, currency=currency.USD, initial_capital=1000,
//      commission_type=strategy.commission.percent, commission_value=0.075)

upper_threshold_buy = input(55, minval=50, title="Buy Entry/Exit Line")
lower_threshold_sell = input(45, maxval=50, title="Sell Entry/Exit Line")

oscillator_length = input(14, minval=1, title="Stochastic Length - Default 14")
sma_length = input(2, minval=1, title="SMA Length - 3-day (3 by default) simple moving average of stoch")

stoch_oscillator = sma(stoch(close, high, low, oscillator_length), sma_length)

//Upper and Lower Entry Lines
upper_line = upper_threshold_buy
lower_line = lower_threshold_sell

stoch_color = stoch_oscillator >= upper_line ? green : stoch_oscillator <= lower_line ? red : purple

//Charts
plot(stoch_oscillator, title="Stochastic", style=histogram, linewidth=4, color=stoch_color)
upper_threshold = plot(upper_line, title="Upper Line", style=line, linewidth=4, color=green)
lower_threshold = plot(lower_line, title="Lower Line", style=line, linewidth=4, color=red)

// Strategy Logic
LongSignal = stoch_oscillator >= upper_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false
ShortSignal = stoch_oscillator <= lower_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false

strategy.entry("POP_Short", strategy.short, when=ShortSignal)
strategy.entry("POP_Long", strategy.long, when=LongSignal)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(5, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END



Lebih lanjut