Strategi Penembusan Konsolidasi

Penulis:ChaoZhang, Tarikh: 2023-12-15 11:59:08
Tag:

img

Ringkasan

Strategi ini adalah penunjuk penembusan penyatuan intraday perdagangan harian untuk pasaran India. Ia menggabungkan keadaan masa, komisen, dan pengasingan stop-loss. Kelebihan strategi ini termasuk logik yang jelas, penyesuaian parameter yang fleksibel, dan penyesuaian dengan dinamik pasaran. Walau bagaimanapun, risiko tertentu wujud dan memerlukan pengoptimuman lanjut.

Logika Strategi

Strategi teras adalah berdasarkan Bollinger Bands. Ia menggunakan purata bergerak sederhana tempoh LENGTH kerana garis tengah dan jalur ke atas / bawah adalah + MULT/- MULT penyimpangan standard. Isyarat beli dihasilkan apabila pemutusan dekat di atas jalur atas, dan isyarat jual dihasilkan apabila pemutusan dekat di bawah jalur bawah, membentuk strategi Penembusan Julat.

Untuk kawalan risiko, ia menggunakan ATR untuk garis stop loss. Ia juga mempertimbangkan jam dagangan pasaran India dan menutup semua kedudukan pada pukul 14:57 setiap hari.

Analisis Kelebihan

Kelebihan strategi ini:

  1. Logik yang jelas, penyesuaian parameter yang mudah, penyesuaian yang fleksibel
  2. Menggabungkan kawalan stop loss dan masa untuk pengurusan risiko
  3. Pertimbangkan ciri-ciri pasaran India untuk penyetempatan
  4. Kekerapan perdagangan yang munasabah, elakkan perdagangan berlebihan
  5. Kebolehluasan yang baik untuk pengoptimuman lanjut

Analisis Risiko

Risiko strategi ini:

  1. Bollinger Bands bergantung pada penyesuaian parameter berdasarkan pengalaman
  2. Penunjuk tunggal yang terdedah kepada isyarat palsu
  3. ATR stop loss hanya boleh mengawal risiko terhad
  4. Kejadian angsa hitam tidak dipertimbangkan

Risiko boleh dikurangkan dengan:

  1. Menggabungkan pelbagai penunjuk untuk penapisan isyarat
  2. Mengoptimumkan peraturan penyesuaian parameter
  3. Menggabungkan logik perdagangan jurang
  4. Meningkatkan ketahanan stop loss
  5. Menggabungkan indeks sentimen pasaran

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Mengoptimumkan penyesuaian parameter untuk penyesuaian yang lebih baik
  2. Menambah lebih banyak penunjuk untuk mengelakkan isyarat palsu
  3. Meningkatkan ketahanan stop loss
  4. Menggabungkan lebih banyak analisis untuk pengesanan trend
  5. Pertimbangkan saiz kedudukan automatik

Dengan pengoptimuman model dan algoritma, keupayaan Penyesuaian Parameter dan Penapisan Isyarat dapat ditingkatkan untuk penyesuaian yang lebih luas dan toleransi risiko yang lebih tinggi.

Kesimpulan

Ringkasnya, ini adalah strategi breakout intraday yang mudah. Ia menangani spesifikasi pasaran India dan mengawal risiko perdagangan. Dengan penambahbaikan lanjut pada Tuning Parameter dan Penapisan Isyarat, strategi ini dapat memenuhi keperluan untuk komersialisasi.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Consolidation Breakout [Indian Market Timing]",overlay = true , pyramiding = 0 ,initial_capital = 50000, default_qty_value=5, currency = currency.NONE,commission_type = strategy.cash, commission_value = 30, slippage = 1 )


// ══════════════════════════════════//
// ————————> INPUT VALUES <————————— //
// ══════════════════════════════════//

LENGTH = input.int(title='LENGTH', defval = 75, minval = 10 ,maxval = 300)
MULT = input.float(title='MULT_STDEV',defval = 3.2 , minval = 1 , maxval = 7 , step =0.1)

//EMA1 = input.int(title='EMA1', defval = 50, minval = 10 ,maxval = 550)
//EMA2 = input.int(title='EMA2', defval = 135, minval = 10 ,maxval = 550)
factor_tr = input.float(title = "ATR TRAIL", defval = 10, step = 0.1)

// ══════════════════════════════════//
// ————————> DAY TIME LIMIT <——————— //
// ══════════════════════════════════//

t = time(timeframe.period, '0935-1430:1234567')
time_condition = not na(t)

//**********************// ════════════════════════════════//
//**********************// ————————> ATR & PLOT <————————— //
//**********************// ════════════════════════════════//
//ema1 = ta.ema(close,EMA1)
//ema2 = ta.ema(close,EMA2)

//plot(ema1, color=color.new(color.blue, 0), style=plot.style_linebr, title='ema1')
//plot(ema2, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema2')

atr_tr = ta.atr(16)*factor_tr

longStop = close - atr_tr
shortStop = close + atr_tr

Entry = close
length = LENGTH
mult = MULT
basis = ta.sma(Entry , length)
dev = mult * ta.stdev(Entry , length)
upper = (basis + dev)
lower = (basis - dev)
buyEntry = ta.crossover(Entry , upper)
sellEntry = ta.crossunder(Entry , lower)

//plot(upper, color=color.new(color.red, 0), style=plot.style_linebr, title="short stop")
//plot(lower, color=color.new(color.green, 0), style=plot.style_linebr, title="Long stop")

plot(upper, color=close[1] > upper and close > upper ? color.green : color.red, linewidth=2)
plot(lower, color=close[1] > lower and close > lower ? color.green : color.red, linewidth=2)




// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( buyEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
    
plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = longStop , comment='S')

// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( sellEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "S") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 57)






    

Lebih lanjut