Breakout Harga Tertinggi EMA Crossover Strategy


Tarikh penciptaan: 2024-03-29 14:39:27 Akhirnya diubah suai: 2024-03-29 14:39:27
Salin: 2 Bilangan klik: 527
1
fokus pada
1617
Pengikut

Breakout Harga Tertinggi EMA Crossover Strategy

Gambaran keseluruhan

Strategi EMA bertentangan dengan harga adalah strategi perdagangan berdasarkan harga bertentangan dengan indeks bergerak rata-rata (EMA). Strategi ini menggunakan harga tertinggi dalam tempoh yang ditetapkan sebagai isyarat membeli, dan EMA sebagai isyarat menjual. Strategi ini menghasilkan isyarat membeli apabila harga penutupan melampaui harga tertinggi dalam tempoh yang ditetapkan; Strategi ini menghasilkan isyarat menjual apabila harga penutupan melampaui EMA.

Prinsip Strategi

Prinsip utama strategi EMA yang melintasi harga tertinggi adalah menggunakan harga yang melintasi dan EMA yang melintasi untuk menangkap trend pasaran. Apabila harga melintasi harga tertinggi dalam tempoh yang ditetapkan, menunjukkan bahawa pasaran mungkin memasuki trend menaik, oleh itu strategi akan menghasilkan isyarat beli.

Strategi ini menggunakan langkah-langkah berikut untuk membuat transaksi:

  1. Hitung harga tertinggi dalam tempoh yang ditetapkan sebagai harga beli pecah.
  2. Kira EMA sebagai isyarat menjual.
  3. Apabila harga penutupan menembusi harga beli, strategi ini akan menghasilkan isyarat beli jika tidak ada kedudukan pada masa ini.
  4. Apabila harga penutupan jatuh di bawah EMA, strategi ini akan menghasilkan isyarat jual jika terdapat pegangan semasa.
  5. Hitung harga terendah dalam tempoh yang ditetapkan sebagai harga hentian.
  6. Jika harga jatuh di bawah harga henti rugi, strategi akan segera melonggarkan kedudukan.

Melalui langkah-langkah di atas, strategi ini dapat memperoleh keuntungan dari tren naik pasaran sambil menggunakan stop loss untuk mengawal risiko turun.

Kelebihan Strategik

Strategi penembusan harga tertinggi EMA mempunyai kelebihan berikut:

  1. Trend Tracking: Strategi ini menggunakan harga pecah dan EMA bersilang untuk menangkap trend pasaran dan boleh mendapat keuntungan dalam trend menaik.
  2. Kawalan risiko: Strategi ini menggunakan harga hentian untuk mengawal risiko penurunan, yang dapat secara berkesan mengurangkan pengambilan maksimum strategi.
  3. Fleksibiliti parameter: Strategi ini menyediakan beberapa parameter untuk pengguna untuk menyesuaikan, seperti kitaran, nisbah risiko, sama ada menggunakan hentian dan sebagainya, yang boleh disesuaikan dengan gaya perdagangan yang berbeza dan keadaan pasaran.
  4. Sederhana dan berkesan: Logik strategi ini ringkas dan jelas, mudah difahami dan dilaksanakan, dan pada masa yang sama dapat memperoleh keuntungan yang baik di pasaran yang sedang tren.

Risiko Strategik

Walaupun ada kelebihan untuk menembusi EMA tertinggi, strategi ini juga mempunyai risiko:

  1. Risiko turun naik pasaran: Strategi ini mungkin menghasilkan lebih banyak isyarat palsu dalam keadaan pasaran yang bergolak, yang menyebabkan perdagangan yang kerap dan kehilangan dana.
  2. Risiko trend reversal: Strategi ini mungkin menangguhkan penjualan apabila trend pasaran berbalik, menyebabkan pulangan keuntungan atau mengubah kerugian menjadi kerugian.
  3. Risiko tetapan parameter: Prestasi strategi bergantung kepada tetapan parameter, seperti kitaran, nisbah risiko, dan lain-lain. Jika tetapan parameter tidak betul, ia boleh menyebabkan prestasi strategi yang tidak baik.

Untuk mengurangkan risiko ini, langkah-langkah berikut boleh dipertimbangkan:

  1. Penyesuaian parameter yang sesuai: Sesuai dengan keadaan pasaran yang berbeza dan jenis perdagangan, penyesuaian parameter strategi yang sesuai, seperti meningkatkan kitaran, mengurangkan nisbah risiko, dan sebagainya, untuk mengurangkan isyarat palsu dan perdagangan yang kerap.
  2. Gabungan dengan penunjuk lain: boleh digabungkan dengan penunjuk teknikal lain, seperti RSI, MACD, dan lain-lain, untuk mengesahkan trend dan keberkesanan isyarat, meningkatkan kebolehpercayaan strategi.
  3. Tetapkan Hentian yang Berpatutan: Tetapkan harga hentian yang berpatutan, yang dapat mengawal risiko penurunan dan tidak berhenti terlalu awal, yang menyebabkan kehilangan peluang keuntungan.

Arah pengoptimuman strategi

Untuk meningkatkan lagi prestasi strategi penembusan EMA harga tertinggi, arah pengoptimuman berikut boleh dipertimbangkan:

  1. Parameter penyesuaian dinamik: mengikut turun naik pasaran dan kekuatan trend, parameter strategi penyesuaian dinamik, seperti meningkatkan kitaran apabila turun naik lebih besar, meningkatkan nisbah risiko apabila trend lebih kuat, dan sebagainya, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Memperkenalkan mekanisme kosong: Memperkenalkan mekanisme perdagangan kosong, berdasarkan perdagangan kosong yang sedia ada, yang juga dapat memperoleh keuntungan dalam trend menurun, meningkatkan daya serap dan keuntungan strategi.
  3. Optimumkan hentian dan hentian: Optimumkan hentian dan hentian tetapan, seperti menggunakan hentian bergerak, hentian separa dan lain-lain, untuk mengawal risiko dan mengunci keuntungan dengan lebih baik.
  4. Gabungan analisis asas: Gabungan analisis asas dengan analisis teknikal untuk menyesuaikan kedudukan dan parameter strategi untuk menghadapi kemungkinan perubahan pasaran, seperti sebelum dan selepas peristiwa penting seperti penerbitan laporan kewangan dan data ekonomi.

Melalui langkah-langkah pengoptimuman di atas, kestabilan, kebolehan beradaptasi dan keuntungan strategi EMA rentas harga tertinggi yang terobosan dapat ditingkatkan, yang membolehkan mereka berkinerja baik dalam lebih banyak keadaan pasaran.

ringkaskan

Strategi penembusan harga tertinggi EMA adalah strategi pemantauan trend yang mudah dan berkesan, dengan menggunakan penembusan harga dan EMA untuk menangkap trend pasaran, sambil menggunakan hentian untuk mengawal risiko penurunan. Logiknya jelas, parameternya fleksibel, mudah difahami dan dilaksanakan. Walaupun strategi ini mempunyai risiko tertentu, seperti risiko turun naik pasaran, risiko perubahan trend dan risiko penyetempatan parameter, risiko ini dapat dikurangkan dengan langkah-langkah kawalan risiko yang sesuai, seperti menyesuaikan parameter, menggabungkan indikator lain dan menetapkan hentian yang munasabah.

Kod 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))



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