Strategi Dagangan Breakout Jangka Pendek Pembalikan

Penulis:ChaoZhang, Tarikh: 2023-11-21 17:03:32
Tag:

img

Ringkasan

Strategi ini bertujuan untuk menangkap peluang perdagangan pembalikan jangka pendek. Ia akan membuka kedudukan pendek selepas N bar naik berturut-turut dan menutup kedudukan selepas M bar turun berturut-turut.

Logik

  1. Parameter input: Bilangan bar atas berturut-turut N, bar bawah berturut-turut M
  2. Definisi:
    • ups mengira bilangan up-bars, harga> harga[1] kemudian +1, jika tidak disetel semula kepada 0
    • dns mengira bilangan bar ke bawah, harga
  3. Masuk: pendek apabila ups≥N; kedudukan dekat apabila dns≥M
  4. Keluar: Stop Loss / Take Profit tetap atau akhir jangka masa

Kelebihan

  1. Mengambil peluang perdagangan pembalikan, sesuai untuk perdagangan jangka pendek
  2. Jangka masa yang fleksibel untuk menyediakan makanan kepada rancangan perdagangan yang berbeza
  3. Pengecualian yang diperuntukkan untuk pelaksanaan pelaburan.

Risiko

  1. Pembalikan jangka pendek mungkin gagal dan membalikkan semula yang membawa kepada kerugian
  2. Parameter N, M yang munasabah diperlukan, terlalu besar atau kecil tidak menguntungkan
  3. Masa henti yang tidak betul mungkin tidak dapat menghentikan kehilangan dalam masa

Arahan pengoptimuman

  1. Gabungkan dengan penunjuk trend untuk mengelakkan perdagangan trend
  2. Penyesuaian dinamik parameter N, M
  3. Mengoptimumkan mekanisme stop loss

Kesimpulan

Strategi ini menangkap peluang perdagangan jangka pendek melalui corak garis K statistik. Penyesuaian parameter yang munasabah dan langkah kawalan risiko adalah penting untuk keuntungan yang stabil. Penambahbaikan lanjut dalam menggabungkan analisis trend dan penyesuaian parameter dinamik mungkin membawa kepada prestasi yang lebih baik.


/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Strategy
strategy("Up/Down Short Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// There will be no short entries, only exits from long.
strategy.risk.allow_entry_in(strategy.direction.short)

consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')

price = close

ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0

dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100

longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick

plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
message_takeprofit = input("", title="Take Profit message")
message_stoploss = input("", title="Stop Loss message")

// Strategy Execution
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
    strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
    
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
    strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesltp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_takeprofit)
if strategy.position_size < 0 and enablesltp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_stoploss)






Lebih lanjut