Konsolidasi Breakout Strategi

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

img

Gambaran umum

Strategi ini adalah indikator perputaran konsolidasi intraday untuk pasar India. Ini menggabungkan kondisi waktu, komisi, dan stop-loss trailing. Keuntungan dari strategi ini termasuk logika yang jelas, penyesuaian parameter yang fleksibel, dan adaptasi dengan dinamika pasar. Namun, risiko tertentu ada dan perlu optimasi lebih lanjut.

Logika Strategi

Strategi inti didasarkan pada Bollinger Bands. Ini menggunakan LENGTH-period simple moving average karena garis tengah dan up/low band adalah +MULT/-MULT standar deviasi. Sinyal beli dihasilkan ketika close break di atas band atas, dan sinyal jual dihasilkan ketika close break di bawah band bawah, membentuk strategi Range Breakout.

Untuk pengendalian risiko, ia menggunakan ATR untuk garis stop loss. Ia juga mempertimbangkan jam perdagangan pasar India dan menutup semua posisi pada pukul 14:57 setiap hari.

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. Logika yang jelas, pengaturan parameter yang mudah, adaptasi yang fleksibel
  2. Mengintegrasikan kontrol stop loss dan waktu untuk manajemen risiko
  3. Pertimbangkan spesifikasi pasar India untuk lokalisasi
  4. Frekuensi perdagangan yang wajar, hindari perdagangan yang berlebihan
  5. Ekstensibilitas yang baik untuk optimasi lebih lanjut

Analisis Risiko

Risiko dari strategi ini:

  1. Bollinger Bands bergantung pada pengaturan parameter berdasarkan pengalaman
  2. Indikator tunggal yang rentan terhadap sinyal palsu
  3. ATR stop loss hanya dapat mengendalikan risiko terbatas
  4. Kejadian angsa hitam tidak dipertimbangkan

Risiko dapat dikurangi dengan:

  1. Menggabungkan beberapa indikator untuk penyaringan sinyal
  2. Mengoptimalkan aturan penyesuaian parameter
  3. Mengintegrasikan logika perdagangan kesenjangan
  4. Meningkatkan ketahanan stop loss
  5. Menggabungkan indeks sentimen pasar

Arahan Optimasi

Strategi dapat dioptimalkan dalam beberapa arah:

  1. Mengoptimalkan pengaturan parameter untuk kemampuan beradaptasi yang lebih baik
  2. Menambahkan lebih banyak indikator untuk menghindari sinyal palsu
  3. Meningkatkan ketahanan stop loss
  4. Menggabungkan lebih banyak analisis untuk mendeteksi tren
  5. Pertimbangkan ukuran posisi otomatis

Dengan optimasi model dan algoritma, kemampuan Penyesuaian Parameter dan Penyaringan Sinyal dapat ditingkatkan untuk adaptasi yang lebih luas dan toleransi risiko yang lebih tinggi.

Kesimpulan

Secara singkat, ini adalah strategi intraday breakout yang sederhana. Ini membahas spesifikasi pasar India dan mengendalikan risiko perdagangan. Dengan peningkatan lebih lanjut pada Parameter Tuning dan Filtering Sinyal, strategi ini dapat memenuhi persyaratan 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 banyak