Strategi Trading Breakout Buka Tinggi Tutup Rendah

Penulis:ChaoZhang, Tanggal: 2024-02-02 12:03:45
Tag:

img

Gambaran umum

Open High Close Low breakout trading strategy adalah strategi trend-following. Strategi ini mengidentifikasi arah tren jangka pendek dengan memeriksa hubungan antara harga buka dan tutup pada grafik candlestick.

Logika Strategi

Logika inti adalah untuk memeriksa apakah harga terbuka sama dengan harga terendah atau tertinggi candlestick. Sinyal panjang dipicu ketika harga terbuka sama dengan rendah. Sinyal pendek dipicu ketika harga terbuka sama dengan tinggi. Ini bertujuan untuk menangkap breakout yang menunjukkan tren jangka pendek.

Setelah sinyal dipicu, posisi ukuran tetap akan segera dibuka. Stop loss ditetapkan berdasarkan indikator ATR untuk melacak volatilitas pasar. Tingkat take profit adalah kelipatan RR tetap dari jarak stop loss dari harga masuk. Ketika harga mencapai stop loss atau take profit, posisi akan ditutup sesuai.

Strategi ini juga meratakan semua posisi pada waktu cutoff harian yang ditentukan pengguna, seperti 30 menit sebelum pasar AS ditutup.

Analisis Keuntungan

Keuntungan utama adalah:

  1. Menggunakan harga buka/tutup untuk mengidentifikasi sinyal keluar dengan cepat.

  2. Sinyal masuk yang jelas yang mudah diterapkan.

  3. Stop loss tepat waktu dan mengambil keuntungan untuk mengunci keuntungan dan membatasi kerugian.

  4. Posisi rata pada batas harian untuk menghindari risiko celah semalam.

  5. Netral pasar, berlaku untuk forex, saham, crypto dll.

Analisis Risiko

Beberapa risiko yang perlu dipertimbangkan:

  1. Stop loss yang sering dengan ATR di pasar yang bergolak.

  2. Overfit untuk instrumen tertentu dan sesi tanpa filter tambahan.

  3. Tingkat fixed take profit mungkin berkinerja buruk dalam tren yang kuat.

  4. Waktu yang salah pada posisi rata dapat melewatkan tren atau menyebabkan kerugian yang tidak perlu.

Bidang Peningkatan

Beberapa cara untuk lebih mengoptimalkannya:

  1. Bereksperimen dengan berbagai teknik stop loss untuk kondisi pasar yang berbeda.

  2. Tambahkan filter menggunakan indikator momentum dll untuk menghindari sinyal palsu.

  3. Mengatur secara dinamis tingkat mengambil keuntungan berdasarkan volatilitas pasar.

  4. Mengoptimalkan waktu cut-off harian untuk berbagai instrumen dan sesi perdagangan.

Kesimpulan

Open High Close Low Breakout Strategy menawarkan cara sederhana untuk momentum perdagangan. Aturan masuk dan keluar yang jelas membuatnya mudah diterapkan dan dikelola. Tetapi optimasi lebih lanjut pada parameter seperti stop loss, take profit, filter akan meningkatkan ketahanan di lebih banyak kondisi pasar. Disesuaikan dengan waktu melalui pengujian yang ketat, ia memiliki potensi untuk mencapai pengembalian yang disesuaikan dengan risiko yang kuat.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Open-High-Low strategy

strategy('Strategy: OLH', shorttitle="OLH", overlay=true)

// Inputs
slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings")
showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings")
// Trade related
rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings")
lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings")


// Utils
green(open, close) => close > open ? true : false
red(open, close) => close < open ? true : false
body(open, close) => math.abs(open - close)
lowerwick = green(open, close) ? open - low : close - low
upperwick = green(open, close) ? high - close : high - open
crange = high - low
crangep = high[1] - low[1] // previous candle's candle-range
bullish = close > open ? true : false
bearish = close < open ? true : false


// Trade signals
longCond = barstate.isconfirmed and (open == low)
shortCond = barstate.isconfirmed and (open == high)

// For SL calculation
atr = ta.atr(slAtrLen)
highestHigh = ta.highest(high, 7)
lowestLow = ta.lowest(low, 7)
longStop = showSLLines ? lowestLow - (atr * 1) : na
shortStop = showSLLines ? highestHigh + (atr * 1) : na
plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross)
plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross)

// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
    // Entry
    var float sl = na
    var float target = na
    if (longCond)
        strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long")
        sl := longStop
        target := close + ((close - longStop) * rrRatio)
        alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
    if (shortCond)
        strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short")
        sl := shortStop
        target := close - ((shortStop - close) * rrRatio)
        alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)

    // Exit: target or SL
    if ((close >= target) or (close <= sl))
        strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit")
    if ((close <= target) or (close >= sl))
        strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit")
else if (not mktAlwaysOn)
    // Close all open position at the end if Day
    strategy.close_all(comment = "Close all entries at end of day.")



Lebih banyak