Strategi perdagangan spread jangka pendek berdasarkan breakout sesi


Tanggal Pembuatan: 2023-09-20 17:00:16 Akhirnya memodifikasi: 2023-09-20 17:00:16
menyalin: 1 Jumlah klik: 726
1
fokus pada
1621
Pengikut

Ringkasan

Strategi ini menggabungkan multi-stop board dengan multi-frame time frame untuk menangkap short line breakout dan melakukan perdagangan spread pada periode waktu sesi. Strategi ini termasuk dalam kategori short line spread.

Prinsip Strategi

  1. Perhitungan orbit multi-udara untuk hari dan jangka pendek, membentuk terobosan dalam dua kerangka waktu.

  2. Perdagangan hanya dilakukan dalam periode perdagangan yang disesuaikan. Periode dimulai dengan penembusan dan berakhir dengan posisi kosong.

  3. EMA real-time dihitung sebagai harga masuk. Jika harga melampaui orbit tengah akan menghasilkan sinyal pecah.

  4. Tetapkan garis stop loss di luar lubang tembus. Stop loss jika tembus gagal.

  5. Ketika harga kembali ke sekitar rel tengah, konfirmasi kegagalan penembusan dan tutup posisi.

Analisis Keunggulan

  1. Dengan kombinasi beberapa kerangka waktu, penyaringan terhadap penembusan palsu dapat dilakukan secara efektif.

  2. “Saya tidak tahu apa yang terjadi di Indonesia, tapi saya tidak tahu apa yang terjadi di Indonesia.

  3. EMA dapat melacak harga secara acak dan tepat waktu.

  4. Mengatur stop loss dapat membantu mengendalikan risiko.

  5. Penutupan obligasi pada waktu tertentu dapat menghindari risiko bermalam.

Analisis risiko

  1. Keadaan di mana kerusakan bisa terjadi akibat pemadaman.

  2. Beberapa terobosan mungkin tidak sepenuhnya menguntungkan sebelum akhir periode.

  3. Jika Anda tidak mengatur waktu dengan benar, Anda mungkin akan kehilangan peluang perdagangan.

  4. Tidak ada jaminan bahwa setiap terobosan akan mencapai keuntungan yang diharapkan.

  5. Ada kemungkinan ada kesalahan penyesuaian pada parameter optimasi.

Arah optimasi

  1. Uji coba berbagai parameter penembusan untuk menemukan kombinasi optimal.

  2. Evaluasi indikator lain untuk meningkatkan akurasi penerimaan.

  3. Optimalkan waktu trading, mencari keseimbangan antara keuntungan dan risiko.

  4. Studi tentang bagaimana strategi penghentian penumpukan dapat dikombinasikan dengan strategi penguncian keuntungan.

  5. Uji perbedaan pengaturan parameter dari berbagai varietas.

  6. Parameter optimasi dinamis menggunakan algoritma pembelajaran mesin.

Meringkaskan

Strategi ini berusaha untuk melakukan short spread trading melalui limited session breakout. Dengan pengoptimalan terhadap fake breakout dan pengendalian risiko, strategi ini dapat ditingkatkan menjadi strategi trading short line yang praktis dan efisien.

Kode Sumber Strategi
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Breakout Scalper", overlay=true)

// -------------------------------------------------------------------------------------------------
// INPUTS
// -------------------------------------------------------------------------------------------------
// Period of the "fast" donchian channel
fast_window = input(title="Fast Window",  defval=13, minval=1)
// Used for the volatility (atr) period
slow_window = input(title="Slow Window",  defval=52, minval=1)
// Period of EMA used as the current price
instant_period = input(title="Instant Period",  defval=3, minval=1)
// Minimum ratio of cloud width to ATR in order for trade to be active
cloud_min_percent = input(title="Minimum Cloud ATR Multiplier", type=float, defval=1.0, minval=0)
// Session where we allow trades to be active
trading_sesh = input(title="Trading Session",  defval='1000-1500')
// -------------------------------------------------------------------------------------------------

// -------------------------------------------------------------------------------------------------
// SESSION TIMING
// -------------------------------------------------------------------------------------------------
is_newbar(t) =>
    na(t[1]) and not na(t) or t[1] < t

day_time = time("D")
sess_time = time(timeframe.period, trading_sesh)
day_open_bar = is_newbar(day_time)
sess_open_bar = is_newbar(sess_time)
sess_close_bar = na(sess_time) and not na(sess_time[1])
sess_is_open = false
sess_is_open := sess_open_bar ? true : (sess_close_bar ? false : sess_is_open[1])
// -------------------------------------------------------------------------------------------------

// -------------------------------------------------------------------------------------------------
// DONCHIANS
// -------------------------------------------------------------------------------------------------
slow_high = na
slow_high := day_open_bar ? high : (high > slow_high[1] ? high : slow_high[1])
slow_low = na
slow_low := day_open_bar ? low : (low < slow_low[1] ? low : slow_low[1])
slow_mid = (slow_high + slow_low) / 2

fast_low = max(slow_low, lowest(fast_window))
fast_high = min(slow_high, highest(fast_window))
fast_mid = (fast_low + fast_high) / 2
// -------------------------------------------------------------------------------------------------


// -------------------------------------------------------------------------------------------------
// TREND CLOUD
// -------------------------------------------------------------------------------------------------
cloud_width = fast_mid - slow_mid
slow_atr = atr(slow_window)
cloud_percent = cloud_width / slow_atr
cloud_color = cloud_percent > cloud_min_percent ? green : (cloud_percent < -cloud_min_percent ? red : gray)

fp = plot(fast_mid, title="Fast MidR", color=green)
sp = plot(slow_mid, title="Slow MidR", color=red)
fill(fp, sp, color=cloud_color)
// -------------------------------------------------------------------------------------------------


// -------------------------------------------------------------------------------------------------
// INSTANT PRICE
// -------------------------------------------------------------------------------------------------
instant_price = ema(close, instant_period)
plot(instant_price, title="Instant Price", color=black, transp=50)
// -------------------------------------------------------------------------------------------------


// -------------------------------------------------------------------------------------------------
// ENTRY SIGNALS & STOPS
// -------------------------------------------------------------------------------------------------
buy_entry_signal = sess_is_open and (instant_price > fast_mid) and (cloud_percent > cloud_min_percent)
sell_entry_signal = sess_is_open and (instant_price < fast_mid) and (cloud_percent < -cloud_min_percent)
buy_close_signal = sess_close_bar or (cloud_percent < 0)
sell_close_signal = sess_close_bar or (cloud_percent > 0)

entry_buy_stop = slow_high
entry_sell_stop = slow_low
exit_buy_stop = max(slow_low, fast_low)
exit_sell_stop = min(slow_high, fast_high)

entry_buy_stop_color = (strategy.position_size == 0) ? (buy_entry_signal ? green : na) : na
plotshape(entry_buy_stop, location=location.absolute, color=entry_buy_stop_color, style=shape.circle)
entry_sell_stop_color = (strategy.position_size == 0) ? (sell_entry_signal ? red : na) : na
plotshape(entry_sell_stop, location=location.absolute, color=entry_sell_stop_color, style=shape.circle)
exit_buy_stop_color = (strategy.position_size > 0) ? red : na
plotshape(exit_buy_stop, location=location.absolute, color=exit_buy_stop_color, style=shape.xcross)
exit_sell_stop_color = (strategy.position_size < 0) ? green : na
plotshape(exit_sell_stop, location=location.absolute, color=exit_sell_stop_color, style=shape.xcross)
// -------------------------------------------------------------------------------------------------


// -------------------------------------------------------------------------------------------------
// STRATEGY EXECUTION
// -------------------------------------------------------------------------------------------------
strategy.entry("long", strategy.long, stop=entry_buy_stop, when=buy_entry_signal)
strategy.cancel("long", when=not buy_entry_signal)
strategy.exit("stop", "long", stop=exit_buy_stop)
strategy.entry("short", strategy.short, stop=entry_sell_stop, when=sell_entry_signal)
strategy.cancel("short", when=not sell_entry_signal)
strategy.exit("stop", "short", stop=exit_sell_stop)
strategy.close("long", when=buy_close_signal)
strategy.close("short", when=sell_close_signal)
// -------------------------------------------------------------------------------------------------