Strategi Penembusan Harga Tertinggi EMA Crossover


Tanggal Pembuatan: 2024-03-29 14:39:27 Akhirnya memodifikasi: 2024-03-29 14:39:27
menyalin: 2 Jumlah klik: 527
1
fokus pada
1617
Pengikut

Strategi Penembusan Harga Tertinggi EMA Crossover

Ringkasan

Sebuah strategi perdagangan yang didasarkan pada penembusan harga dan indeks moving average (EMA). Strategi ini menggunakan harga tertinggi dalam periode tertentu sebagai sinyal beli dan EMA sebagai sinyal jual. Strategi ini menghasilkan sinyal beli ketika harga close out menembus harga tertinggi dalam periode tertentu; Strategi ini menghasilkan sinyal jual ketika harga close out jatuh di bawah EMA. Strategi ini juga menetapkan harga stop loss untuk mengendalikan risiko.

Prinsip Strategi

Prinsip inti dari strategi EMA crossing breakout adalah menggunakan harga breakout dan EMA crossing untuk menangkap tren pasar. Ketika harga memecahkan harga tertinggi dalam periode yang ditentukan, menunjukkan bahwa pasar mungkin masuk ke tren naik, sehingga strategi akan menghasilkan sinyal beli. Sementara itu, EMA sebagai indikator pelacakan tren, ketika harga turun EMA, menunjukkan bahwa tren naik mungkin berakhir, sehingga strategi akan menghasilkan sinyal jual.

Strategi ini menggunakan langkah-langkah berikut untuk melakukan transaksi:

  1. Harga teratas dalam periode tertentu dihitung sebagai harga beli terobosan.
  2. Perhitungan EMA sebagai sinyal jual.
  3. Ketika harga close out menembus harga buy, strategi akan menghasilkan sinyal buy jika tidak ada posisi yang dipegang saat ini.
  4. Strategi ini menghasilkan sinyal jual jika ada posisi saat ini ketika harga penutupan jatuh di bawah EMA.
  5. Harga terendah dalam periode tertentu dihitung sebagai harga stop loss.
  6. Jika harga turun di bawah harga stop loss, strategi ini akan segera dihapus.

Dengan langkah-langkah di atas, strategi ini dapat mengambil keuntungan dari tren naik pasar, sementara menggunakan stop loss untuk mengendalikan risiko turun.

Keunggulan Strategis

Strategi penembusan EMA tertinggi memiliki keuntungan sebagai berikut:

  1. Trend Tracking: Strategi ini memanfaatkan harga breakout dan EMA crossover untuk menangkap tren pasar dan dapat mengambil keuntungan dari tren naik.
  2. Pengendalian risiko: Strategi ini menggunakan harga stop loss untuk mengendalikan risiko penurunan, yang secara efektif dapat mengurangi penarikan maksimum dari strategi.
  3. Fleksibilitas Parameter: Strategi ini menyediakan beberapa parameter yang dapat disesuaikan oleh pengguna, seperti siklus, proporsi risiko, apakah menggunakan stop loss, dan sebagainya, yang dapat disesuaikan dengan gaya perdagangan yang berbeda dan lingkungan pasar.
  4. Sederhana dan efektif: logika strategi ini sederhana dan jelas, mudah dimengerti dan diimplementasikan, dan pada saat yang sama menghasilkan keuntungan yang baik di pasar yang sedang tren.

Risiko Strategis

Meskipun ada beberapa keuntungan dari strategi penembusan EMA tertinggi, namun ada juga risiko berikut:

  1. Risiko volatilitas pasar: Strategi ini mungkin menghasilkan lebih banyak sinyal palsu, yang menyebabkan perdagangan yang lebih sering dan kehilangan dana dalam situasi pasar yang lebih besar.
  2. Risiko Trend Reversal: Strategi ini dapat menunda penjualan ketika tren pasar berbalik, menyebabkan keuntungan berbalik atau kerugian menjadi kerugian.
  3. Risiko pengaturan parameter: Kinerja strategi tergantung pada pengaturan parameter, seperti siklus, proporsi risiko, dan sebagainya. Jika parameter tidak diatur dengan benar, dapat menyebabkan kinerja strategi yang buruk.

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

  1. Parameter penyesuaian yang tepat: Sesuai dengan lingkungan pasar yang berbeda dan jenis perdagangan, penyesuaian yang tepat dari parameter strategi, seperti peningkatan siklus, penurunan proporsi risiko, dan lain-lain, untuk mengurangi sinyal palsu dan perdagangan yang sering.
  2. Kombinasi dengan indikator lain: Dapat dikombinasikan dengan indikator teknis lainnya, seperti RSI, MACD, dll, untuk mengkonfirmasi efektivitas tren dan sinyal, meningkatkan keandalan strategi.
  3. Tetapkan stop loss yang wajar: Tetapkan harga stop loss yang wajar, baik untuk mengendalikan risiko penurunan, maupun untuk tidak berhenti terlalu dini, yang menyebabkan kehilangan peluang keuntungan.

Arah optimasi strategi

Untuk lebih meningkatkan kinerja strategi penembusan EMA harga tertinggi, optimasi berikut dapat dipertimbangkan:

  1. Parameter penyesuaian dinamis: Bergantung pada volatilitas pasar dan intensitas tren, parameter strategi penyesuaian dinamis, seperti meningkatkan siklus saat fluktuasi besar, meningkatkan rasio risiko saat tren kuat, dll, untuk beradaptasi dengan lingkungan pasar yang berbeda.
  2. Memperkenalkan mekanisme multi-head: Memperkenalkan mekanisme perdagangan kosong di atas dasar perdagangan multi-head yang asli, yang juga dapat menguntungkan dalam tren turun, meningkatkan fleksibilitas dan keuntungan dari strategi tersebut.
  3. Mengoptimalkan Stop Loss dan Stop Out: Mengoptimalkan pengaturan stop loss dan stop out, seperti menggunakan metode seperti stop loss bergerak, partial stop, dan lain-lain, untuk mengontrol risiko dan mengunci keuntungan dengan lebih baik.
  4. Kombinasi analisis fundamental: menggabungkan analisis fundamental dengan analisis teknis, seperti sebelum dan sesudah acara penting seperti laporan keuangan perusahaan, publikasi data ekonomi, menyesuaikan posisi dan parameter strategi untuk menanggapi kemungkinan perubahan pasar.

Dengan langkah-langkah optimasi di atas, dapat meningkatkan stabilitas, adaptasi, dan keuntungan dari strategi EMA lintas batas harga tertinggi yang terobosan, sehingga dapat memperoleh kinerja yang baik di lingkungan pasar yang lebih luas.

Meringkaskan

Breakout EMA crossover adalah strategi pelacakan tren yang sederhana dan efektif, dengan memanfaatkan breakout harga dan EMA crossover untuk menangkap tren pasar, sementara menggunakan stop loss untuk mengendalikan risiko penurunan. Strategi ini memiliki logika yang jelas, parameter yang fleksibel, mudah dipahami dan diterapkan. Meskipun ada risiko tertentu dalam strategi ini, seperti risiko fluktuasi pasar, risiko pergeseran tren, dan risiko pengaturan parameter, risiko ini dapat diatasi dengan langkah-langkah pengendalian risiko yang tepat, seperti penyesuaian parameter, penggabungan parameter dengan indikator lain, dan pengaturan stop loss yang masuk akal.

Kode Sumber 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))



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