Strategi perdagangan terobosan momentum berdasarkan pola kandil


Tanggal Pembuatan: 2023-11-28 10:33:31 Akhirnya memodifikasi: 2023-11-28 10:33:31
menyalin: 0 Jumlah klik: 605
1
fokus pada
1621
Pengikut

Strategi perdagangan terobosan momentum berdasarkan pola kandil

Artikel ini membahas strategi perdagangan break-out dinamis berdasarkan bentuk garis K. Strategi ini menilai tren pasar dan waktu masuk dengan mengidentifikasi bentuk pivot.

Tinjauan Strategi

Strategi pemecahan momentum terutama menilai sinyal pembalikan potensial, masuk ke dalam arena dengan mengidentifikasi bentuk multicap atau bentuk airborne. Setelah mengidentifikasi sinyal, ikuti tren dengan cepat, dan capai keuntungan tambahan.

Prinsip Strategi

Logika penilaian inti dari strategi penembusan dinamis didasarkan pada pengenalan bentuk penelan, yang terbagi menjadi dua bentuk penelan multihead dan penelan kosong.

Multiple head-swallowing berarti bahwa harga penutupan pada hari itu lebih tinggi dari harga bukaan, dan harga penutupan pada baris K di atas lebih rendah dari harga bukaan pada baris K di atas. Bentuk ini biasanya menandakan perubahan sentimen pasar, berbaliknya pola pikir multi-lapisan, dan oleh karena itu merupakan waktu yang baik untuk melakukan retracement yang tepat.

Hal ini juga merupakan indikasi bahwa ada perubahan dalam sentimen pasar, dan oleh karena itu merupakan kesempatan untuk melakukan intervensi.

Setelah mengidentifikasi pola penelan, strategi pemecahan momentum akan dengan cepat membangun posisi, mencapai kelebihan leverage, dan melacak potensi reversal. Selain itu, strategi ini juga akan secara dinamis menyesuaikan harga stop loss dan harga stop loss, dan mengendalikan risiko dengan ketat sambil menjamin keuntungan.

Keunggulan Strategis

  1. Penjelasan cepat tentang kapan pasar berbalik dan menangkap peluang potensial
  2. Risiko-keuntungan yang lebih cocok, Stop Loss Setup yang masuk akal
  3. Leverage rate dapat disesuaikan dengan preferensi risiko yang berbeda
  4. Transaksi otomatis, lebih efisien

Risiko Strategis

  1. Diagram ini hanya digunakan sebagai referensi, tidak dapat dipastikan secara pasti.
  2. Probabilitas kegagalan reversal, kemungkinan terjadinya guncangan sempit
  3. Leverage Terlalu Tinggi Memicu Kecelakaan
  4. Perlu dana yang cukup untuk mendukung posisi yang tepat

Ada beberapa cara untuk mengoptimalkan risiko:

  1. Kombinasi sinyal filter dengan indikator lain
  2. Mengatur risiko pengendalian leverage dengan tepat
  3. Meningkatkan langkah-langkah untuk membangun gudang, biaya rata-rata batch
  4. Mengoptimalkan strategi stop loss untuk menjamin keuntungan

Optimasi Strategi

Strategi terobosan momentum dapat dioptimalkan dari beberapa dimensi:

  1. Verifikasi multi faktor untuk keandalan sinyal Indikator seperti garis rata-rata, tingkat fluktuasi, dan lain-lain dapat ditambahkan untuk memverifikasi sinyal penelan, memastikan keandalan sinyal.

  2. Menentukan Psikologi Pasar dengan Indikator Emosi Indeks panic, indeks kecemburuan, dan lain-lain dapat digunakan untuk menentukan kapan pasar akan berbalik.

  3. Optimalkan strategi Stop Loss Anda dapat mengunci keuntungan dengan cara seperti stop loss bergerak, stop progressive, stop mobile, dan lain-lain untuk mengurangi risiko penarikan.

  4. Memperkenalkan perdagangan algoritmik Model algoritma seperti pembelajaran mesin dapat digunakan untuk membantu menilai sinyal perdagangan dan meningkatkan otomatisasi strategi.

Meringkaskan

Strategi momentum breakout secara keseluruhan adalah strategi yang lebih khas dari reversal. Ini dengan menangkap sinyal K-line yang penting, cepat menilai dan melacak tren pasar reversal. Meskipun masih ada risiko tertentu, tetapi dapat dioptimalkan secara efektif dengan berbagai cara, yang lebih baik untuk investor yang lebih proaktif.

Kode Sumber Strategi
/*backtest
start: 2022-11-27 00:00:00
end: 2023-11-09 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title = "MomGulfing", shorttitle = "MomGulfing", overlay = true, initial_capital=10000, pyramiding=3, calc_on_order_fills=false, calc_on_every_tick=false, currency="USD", default_qty_type=strategy.cash, default_qty_value=1000, commission_type=strategy.commission.percent, commission_value=0.04)

syear = input(2021)
smonth = input(1)
sday = input(1)
fyear = input(2022)
fmonth = input(12)
fday = input(31)
start = timestamp(syear, smonth, sday, 01, 00)
finish = timestamp(fyear, fmonth, fday, 23, 59)
date = time >= start and time <= finish ? true : false

longs = input(true)
shorts = input(true)
rr = input(2.5)
position_risk_percent = input(1)/100
signal_bar_check = input.string(defval="3", options=["1", "2", "3"])
margin_req = input(80)
sl_increase_factor = input(0.2)
tp_decrease_factor = input(0.0)
check_for_volume = input(true)
var long_sl = 0.0
var long_tp = 0.0
var short_sl = 0.0
var short_tp = 0.0
var long_lev = 0.0
var short_lev = 0.0

initial_capital = strategy.equity
position_risk = initial_capital * position_risk_percent

bullishEngulfing_st = close[1] < open[1] and close > open and high[1] < close and (check_for_volume ? volume[1]<volume : true)
bullishEngulfing_nd = close[2] < open[2] and close[1] > open[1] and close > open and high[2] > close[1] and high[2] < close and (check_for_volume ? volume[2]<volume : true)
bullishEngulfing_rd = close[3] < open[3] and close[2] > open[2] and close[1] > open[1] and close > open and high[3] > close[2] and high[3] > close[1] and high[3] < close and (check_for_volume ? volume[3]<volume : true)
bullishEngulfing = signal_bar_check == "1" ? bullishEngulfing_st : signal_bar_check == "2" ? bullishEngulfing_st or bullishEngulfing_nd : bullishEngulfing_st or bullishEngulfing_nd or bullishEngulfing_rd
long_stop_level = bullishEngulfing_st ? math.min(low[1], low) : bullishEngulfing_nd ? math.min(low[2], low[1], low) : bullishEngulfing_rd ? math.min(low[3], low[2], low[1], low) : na
rr_amount_long = close-long_stop_level
long_exit_level = close + rr*rr_amount_long
long_leverage = math.floor(margin_req/math.floor((rr_amount_long/close)*100))

bearishEngulfing_st = close[1] > open[1] and close < open and low[1] > close and (check_for_volume ? volume[1]<volume : true)
bearishEngulfing_nd = close[2] > open[2] and close[1] < open[1] and close < open and low[2] < close[1] and low[2] > close and (check_for_volume ? volume[2]<volume : true)
bearishEngulfing_rd = close[3] > open[3] and close[2] < open[2] and close[1] < open[1] and close < open and low[3] < close[2] and low[3] < close[1] and low[3] > close and (check_for_volume ? volume[3]<volume : true)
bearishEngulfing = signal_bar_check == "1" ? bearishEngulfing_st : signal_bar_check == "2" ? bearishEngulfing_st or bearishEngulfing_nd : bearishEngulfing_st or bearishEngulfing_nd or bearishEngulfing_rd
short_stop_level = bearishEngulfing_st ? math.max(high[1], high) : bearishEngulfing_nd ? math.max(high[2], high[1], high) : bearishEngulfing_rd ? math.max(high[3], high[2], high[1], high) : na
rr_amount_short = short_stop_level-close
short_exit_level = close - rr*rr_amount_short
short_leverage = math.floor(margin_req/math.floor((rr_amount_short/short_stop_level)*100))

long = longs and date and bullishEngulfing
short = shorts and date and bearishEngulfing
bgcolor(long[1] ? color.new(color.teal, 80) : (short[1] ? color.new(color.purple, 80) : na))

if long and strategy.position_size <= 0
    long_lev := long_leverage

if short and strategy.position_size >= 0
    short_lev := short_leverage

long_pos_size = long_lev * position_risk
long_pos_qty = long_pos_size/close
short_pos_size = short_lev * position_risk
short_pos_qty = short_pos_size/close

if long
    if strategy.position_size <= 0
        long_sl := long_stop_level
        long_tp := long_exit_level

    else if strategy.position_size > 0
        long_sl := long_stop_level + sl_increase_factor*rr_amount_long
        long_tp := long_exit_level - tp_decrease_factor*rr_amount_long

    strategy.entry("L"+str.tostring(long_lev)+"X", strategy.long, qty=long_pos_qty)
    label_text = str.tostring(long_lev)+"X\nSL:"+str.tostring(long_sl)+"\nTP:"+str.tostring(long_tp)
    label.new(bar_index+1, na, text=label_text, color=color.green, style=label.style_label_up, xloc=xloc.bar_index, yloc=yloc.belowbar)

else if short
    if strategy.position_size >= 0
        short_sl := short_stop_level
        short_tp := short_exit_level

    else if strategy.position_size < 0
        short_sl := short_stop_level - sl_increase_factor*rr_amount_short
        short_tp := short_exit_level + tp_decrease_factor*rr_amount_short

    strategy.entry("S"+str.tostring(short_lev)+"X", strategy.short, qty=short_pos_qty)
    label_text = str.tostring(short_lev)+"X\nSL:"+str.tostring(short_sl)+"\nTP:"+str.tostring(short_tp)
    label.new(bar_index+1, na, text=label_text, color=color.red, style=label.style_label_down, xloc=xloc.bar_index, yloc=yloc.abovebar)

if (strategy.position_size > 0)
    strategy.exit(id="L TP/SL", stop=long_sl, limit=long_tp)

if (strategy.position_size < 0)
    strategy.exit(id="S TP/SL", stop=short_sl, limit=short_tp)

sl_level = strategy.position_size > 0 ? long_sl : strategy.position_size < 0 ? short_sl : na
plot(sl_level, color=color.red, style=plot.style_linebr)

tp_level = strategy.position_size > 0 ? long_tp : strategy.position_size < 0 ? short_tp : na
plot(tp_level, color=color.green, style=plot.style_linebr)