BreakHigh EMA Crossover Strategi

Penulis:ChaoZhang, Tanggal: 2024-03-29 14:39:27
Tag:

img

Gambaran umum

BreakHigh EMA Crossover Strategy adalah strategi perdagangan yang didasarkan pada price breakout dan crossover Exponential Moving Average (EMA). Strategi ini menggunakan harga tertinggi dalam periode tertentu sebagai sinyal beli dan EMA sebagai sinyal jual. Ketika harga penutupan melanggar harga tertinggi dalam periode tertentu, strategi menghasilkan sinyal beli. Ketika harga penutupan jatuh di bawah EMA, strategi menghasilkan sinyal jual. Strategi ini juga menetapkan harga stop-loss untuk mengendalikan risiko. Selain itu, strategi ini menyediakan beberapa parameter bagi pengguna untuk disesuaikan untuk beradaptasi dengan gaya perdagangan dan kondisi pasar yang berbeda.

Prinsip Strategi

Prinsip inti dari strategi BreakHigh EMA Crossover adalah untuk menangkap tren pasar menggunakan price breakout dan EMA crossover. Ketika harga pecah di atas harga tertinggi dalam periode tertentu, ini menunjukkan bahwa pasar dapat memasuki tren naik, sehingga strategi menghasilkan sinyal beli. Pada saat yang sama, EMA berfungsi sebagai indikator trend-mengikuti. Ketika harga turun di bawah EMA, ini menunjukkan bahwa tren naik dapat berakhir, sehingga strategi menghasilkan sinyal jual.

Strategi ini menggunakan langkah-langkah berikut untuk menerapkan perdagangan:

  1. Menghitung harga tertinggi dalam periode yang ditentukan sebagai harga pembelian breakout.
  2. Menghitung EMA sebagai sinyal jual.
  3. Ketika harga penutupan menembus harga beli breakout, jika tidak ada posisi saat ini, strategi menghasilkan sinyal beli.
  4. Ketika harga penutupan jatuh di bawah EMA, jika ada posisi saat ini, strategi menghasilkan sinyal jual.
  5. Menghitung harga terendah dalam periode yang ditentukan sebagai harga stop-loss.
  6. Jika harga turun di bawah harga stop loss, strategi segera menutup posisi.

Melalui langkah-langkah di atas, strategi dapat mendapatkan keuntungan dari tren naik di pasar sambil menggunakan stop-loss untuk mengendalikan risiko penurunan.

Keuntungan Strategi

Strategi Crossover BreakHigh EMA memiliki keuntungan berikut:

  1. Pelacakan tren: Strategi ini menggunakan price breakout dan EMA crossover untuk menangkap tren pasar dan dapat mendapatkan keuntungan dari tren naik.
  2. Pengendalian risiko: Strategi menggunakan harga stop-loss untuk mengendalikan risiko penurunan, yang dapat secara efektif mengurangi penarikan maksimum strategi.
  3. Fleksibilitas parameter: Strategi menyediakan beberapa parameter bagi pengguna untuk disesuaikan, seperti periode, rasio risiko, apakah untuk menggunakan stop-loss, dll, yang dapat disesuaikan sesuai dengan gaya perdagangan yang berbeda dan kondisi pasar.
  4. Sederhana dan efektif: Logika strategi sederhana dan jelas, mudah dimengerti dan diimplementasikan, dan dapat mencapai pengembalian yang baik di pasar tren.

Risiko Strategi

Meskipun Strategi Crossover EMA BreakHigh memiliki beberapa keuntungan, ia juga memiliki risiko berikut:

  1. Risiko volatilitas pasar: Dalam kasus volatilitas pasar yang tinggi, strategi dapat menghasilkan lebih banyak sinyal palsu, yang mengarah pada perdagangan dan kerugian modal yang sering.
  2. Risiko pembalikan tren: Ketika tren pasar berbalik, strategi dapat menunda penjualan, menghasilkan retracement keuntungan atau mengubah keuntungan menjadi kerugian.
  3. Parameter yang menetapkan risiko: Kinerja strategi tergantung pada pengaturan parameter, seperti periode, rasio risiko, dll. Jika parameter ditetapkan dengan tidak benar, hal itu dapat menyebabkan kinerja strategi yang buruk.

Untuk mengurangi risiko ini, langkah-langkah berikut dapat dipertimbangkan:

  1. Sesuai menyesuaikan parameter: Menurut kondisi pasar yang berbeda dan instrumen perdagangan, sesuai menyesuaikan parameter strategi, seperti meningkatkan periode, mengurangi rasio risiko, dll, untuk mengurangi sinyal palsu dan perdagangan yang sering.
  2. Gabungkan dengan indikator lain: Gabungkan dengan indikator teknis lainnya, seperti RSI, MACD, dll, untuk mengkonfirmasi validitas tren dan sinyal dan meningkatkan keandalan strategi.
  3. Tetapkan stop loss yang wajar: Tetapkan harga stop loss yang wajar, yang dapat mengendalikan risiko penurunan dan tidak menghentikan kerugian terlalu dini, sehingga kehilangan peluang keuntungan.

Arah Optimasi Strategi

Untuk lebih meningkatkan kinerja dari BreakHigh EMA Crossover Strategy, arah optimalisasi berikut dapat dipertimbangkan:

  1. Penyesuaian parameter dinamis: Menurut volatilitas pasar dan kekuatan tren, menyesuaikan parameter strategi secara dinamis, seperti meningkatkan periode ketika volatilitas tinggi, meningkatkan rasio risiko ketika tren kuat, dll., untuk beradaptasi dengan kondisi pasar yang berbeda.
  2. Memperkenalkan mekanisme long-short: Berdasarkan trading long asli, memperkenalkan mekanisme trading short untuk mendapatkan keuntungan dari downtrends juga, meningkatkan kemampuan beradaptasi dan profitabilitas strategi.
  3. Mengoptimalkan stop-loss dan take-profit: Mengoptimalkan pengaturan stop-loss dan take-profit, seperti menggunakan trailing stop-loss, partial take-profit, dll., Untuk mengontrol risiko dengan lebih baik dan mengunci keuntungan.
  4. Gabungkan dengan analisis fundamental: Gabungkan analisis fundamental dengan analisis teknis, seperti menyesuaikan posisi dan parameter strategi sebelum dan setelah peristiwa penting seperti laporan laba perusahaan dan rilis data ekonomi, untuk mengatasi kemungkinan perubahan pasar.

Melalui langkah-langkah optimalisasi di atas, stabilitas, kemampuan beradaptasi, dan profitabilitas dari BreakHigh EMA Crossover Strategy dapat ditingkatkan, memungkinkan untuk mencapai kinerja yang baik di lebih banyak lingkungan pasar.

Ringkasan

BreakHigh EMA Crossover Strategy adalah strategi trend-following yang sederhana dan efektif yang menangkap tren pasar dengan menggunakan price breakout dan EMA crossover sambil menggunakan stop-loss untuk mengontrol risiko penurunan. Logika strategi jelas, parameternya fleksibel, dan mudah dipahami dan diimplementasikan. Meskipun strategi memiliki risiko tertentu, seperti risiko volatilitas pasar, risiko pembalikan tren, dan risiko pengaturan parameter, risiko ini dapat dikurangi melalui langkah-langkah pengendalian risiko yang tepat, seperti menyesuaikan parameter, menggabungkan dengan indikator lain, dan menetapkan stop-loss yang wajar. Selain itu, strategi memiliki ruang optimasi lebih lanjut, seperti penyesuaian parameter dinamis, memperkenalkan mekanisme long-short loss, mengoptimalkan stop-loss dan take-profit, dan menggabungkan dengan analisis fundamental, dll., untuk meningkatkan kinerja dan kemampuan beradaptasi strategi.


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

// @version = 5
strategy(title="BreakHigh Strategy", overlay=true)
Period = input.int(34, "Number of previous bars(34,52 Recommend)")
showbg = input(defval = false,title = "Show BackGround Color")
showema = input(defval = true ,title = "Show Line")
MarkBuySig = input(defval = true ,title = "Show Buy/Sell Signal")

Risk_Per_Trade = input(2.5, '% of Risk Per Trade') / 100  // Risk% Per Trade Switch
SLDAY = input(title='Lowest price of the previous number of bars', defval=9)
Buysig = input(defval=true, title='Start Strategy')
UseSl = input(defval=false, title='Use Stoploss Price')
Compound = input(defval = false ,title =  "Compound Profit")
xtf = input.timeframe(title='** Fix chart to which time frame ? **)', defval='D')


//BUY
float buyLine = na
buyLine := ta.highest(high,Period)[1] 
plot(showema ? buyLine : na, linewidth=1, style=plot.style_linebr, color=color.new(color.green, 0))

//SELL
output = ta.ema(close, Period)
show = request.security(syminfo.tickerid, xtf, output)
FastL = plot(showema ? show : na, color=color.new(color.white, 0), linewidth=2, title='Slow EMA')

//Buy-Sell Signal
Green = close > buyLine   // Buy
Red = close < show // Sell

buycond = Green and Green[1] == 0
sellcond = Red and Red[1] == 0

bullish = ta.barssince(buycond) < ta.barssince(sellcond)
bearish = ta.barssince(sellcond) < ta.barssince(buycond)

buy = bearish[1] and buycond
sell = bullish[1] and sellcond

plotshape(MarkBuySig ? buy : na, style=shape.labelup, text='Buy Next Bar', textcolor=color.new(color.black, 0), location=location.belowbar, color=color.new(color.green, 0))
plotshape(MarkBuySig ? sell : na, style=shape.labeldown, text='Sell Next Bar', textcolor=color.new(color.black, 0), location=location.abovebar, color=color.new(color.red, 0))
bgcolor(showbg ? bullish ? color.new(color.green,90) : color.new(color.red,90) : na )


// === BACKTEST RANGE === //
use_date_range = input(true)
FromYear = input.int(defval=2012, title='From Year', minval=1950)
FromMonth = input.int(defval=1, title='From Month', minval=1)
FromDay = input.int(defval=1, title='From Day', minval=1)
ToYear = input.int(defval=9999, title='To Year', minval=1950)
ToMonth = input.int(defval=1, title='To Month', minval=1)
ToDay = input.int(defval=1, title='To Day', minval=1)
in_date_range = use_date_range ? time > timestamp(FromYear, FromMonth, FromDay, 00, 00) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59) : true

//****************************************************************************//

//////////////////////////////////////////////
//    define strategy entry / exit          //
//////////////////////////////////////////////

//****************************************************************************//
// LONG CONDITIONS

Select_Long_Condition_1 = close > buyLine // Buy when Have Signal
Open_Long_Condition = Select_Long_Condition_1 and strategy.opentrades == 0

//****************************************************************************//
// STOP LOSS Price

float longSL = na
longSL := Open_Long_Condition ? ta.lowest(low, SLDAY)[1] : longSL[1]  


//****************************************************************************//
// Cal StopLoss

Long_Entry_Price = close
Diff_OPEN_to_SL = math.abs(Long_Entry_Price - longSL)

// Exit CONDITIONS

Exit_Long_Condition = close < show // Sell when Have Signal

//****************************************************************************//
// POSITION SIZE CAP

strategy.initial_capital = 50000

float portSize = Compound ? strategy.netprofit + strategy.initial_capital : strategy.initial_capital
float LossAmoutUnit = portSize * Risk_Per_Trade //50
float PercentSL = ( Diff_OPEN_to_SL / Long_Entry_Price ) * 100
float PositionSize = LossAmoutUnit / Diff_OPEN_to_SL


//****************************************************************************//
// ENTRY/EXIT

if Buysig
    if Open_Long_Condition and in_date_range 
        strategy.entry('LONG', strategy.long, qty=PositionSize)


if Exit_Long_Condition and in_date_range
    strategy.close('LONG')
if close < longSL and UseSl
    strategy.close('LONG')

//****************************************************************************//
// PLOT STOP LOSS

longPlotSL = strategy.opentrades > 0 and strategy.position_size > 0 ? longSL : na
// label.new(bar_index, high, text=str.tostring(longPlotSL),color=color.white, textcolor=color.black)
plot(longPlotSL, title="", linewidth=2, style=plot.style_linebr, color=color.new(color.red, 0))



//****************************************************************************//



Lebih banyak