Strategi perdagangan jangka pendek breakout garis K terbalik


Tanggal Pembuatan: 2023-11-21 17:03:32 Akhirnya memodifikasi: 2023-11-21 17:03:32
menyalin: 0 Jumlah klik: 555
1
fokus pada
1617
Pengikut

Strategi perdagangan jangka pendek breakout garis K terbalik

Ringkasan

Strategi ini digunakan untuk menangkap peluang perdagangan reversal garis pendek. Ini akan membuka posisi kosong setelah N akar K garis berturut-turut naik, dan posisi kosong setelah M akar K garis berturut-turut turun. Selain itu, strategi ini menambahkan fitur pembatasan waktu dan stop loss.

Prinsip

  1. Input parameter: N garis K naik secara berurutan, M garis K turun secara berurutan
  2. Definisi Logika:
    • ups statistik naik K baris, harga> harga[1] adalah +1, atau reset menjadi 0
    • dns statistik penurunan K garis, price
  3. Masuk: kosong ketika ups≥N; kosong ketika dns≥M
  4. Keluar: Stop loss tetap atau akhir periode

Keunggulan

  1. Capture Opportunity Reversal, Cocok untuk Operasi Jarak Pendek
  2. Fleksibilitas dalam mengatur periode perdagangan yang sesuai dengan rencana perdagangan yang berbeda
  3. Built-in Stop Loss Stop function untuk membantu pengendalian risiko

Risiko

  1. Pembalikan garis pendek tidak selalu berhasil, pembalikan kembali dapat menyebabkan kerugian
  2. Parameter N, M, terlalu besar atau terlalu kecil tidak menguntungkan
  3. Waktu berhenti yang tidak tepat mungkin tidak dapat menghentikan kerusakan tepat waktu

Arah optimasi

  1. Menghindari Operasi Berlawanan dengan Indikator Tren
  2. Parameter penyesuaian dinamis
  3. Optimalkan mekanisme penghentian kerugian

Meringkaskan

Strategi ini menangkap peluang perdagangan short-line dengan statistik K-line. Pengaturan parameter yang masuk akal dan langkah-langkah pengendalian angin sangat penting untuk mendapatkan keuntungan yang stabil.

Kode Sumber Strategi
/*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)