BreakHigh EMA Crossover Strategi

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

img

Ringkasan

Strategy BreakHigh EMA Crossover adalah strategi dagangan berdasarkan penembusan harga dan penyambungan Exponential Moving Average (EMA). Strategi ini menggunakan harga tertinggi dalam tempoh tertentu sebagai isyarat beli dan EMA sebagai isyarat jual. Apabila harga penutupan melanggar harga tertinggi dalam tempoh tertentu, strategi menghasilkan isyarat beli. Apabila harga penutupan jatuh di bawah EMA, strategi menghasilkan isyarat jual. Strategi ini juga menetapkan harga stop-loss untuk mengawal risiko. Selain itu, strategi ini menyediakan pelbagai parameter untuk pengguna menyesuaikan diri untuk menyesuaikan diri dengan gaya perdagangan dan keadaan pasaran yang berbeza.

Prinsip Strategi

Prinsip utama Strategi Crossover BreakHigh EMA adalah untuk menangkap trend pasaran menggunakan harga pecah dan crossover EMA. Apabila harga memecahkan di atas harga tertinggi dalam tempoh tertentu, ia menunjukkan bahawa pasaran mungkin memasuki trend menaik, jadi strategi menghasilkan isyarat beli. Pada masa yang sama, EMA berfungsi sebagai indikator trend-mengikuti. Apabila harga jatuh di bawah EMA, ia menunjukkan bahawa trend menaik mungkin berakhir, jadi strategi menghasilkan isyarat jual.

Strategi ini menggunakan langkah-langkah berikut untuk melaksanakan perdagangan:

  1. Mengira harga tertinggi dalam tempoh yang ditetapkan sebagai harga pembelian pecah.
  2. Mengira EMA sebagai isyarat jual.
  3. Apabila harga penutupan melanggar harga beli pecah, jika tidak ada kedudukan semasa, strategi menghasilkan isyarat beli.
  4. Apabila harga penutupan jatuh di bawah EMA, jika terdapat kedudukan semasa, strategi menghasilkan isyarat jual.
  5. Mengira harga terendah dalam tempoh yang ditetapkan sebagai harga stop-loss.
  6. Jika harga jatuh di bawah harga stop-loss, strategi segera menutup kedudukan.

Melalui langkah-langkah di atas, strategi boleh mendapat keuntungan daripada trend meningkat di pasaran sambil menggunakan stop-loss untuk mengawal risiko penurunan.

Kelebihan Strategi

Strategi Crossover EMA BreakHigh mempunyai kelebihan berikut:

  1. Pengesanan trend: Strategi ini menggunakan penembusan harga dan persimpangan EMA untuk menangkap trend pasaran dan boleh mendapat keuntungan daripada trend menaik.
  2. Kawalan risiko: Strategi menggunakan harga stop-loss untuk mengawal risiko penurunan, yang dapat mengurangkan pengambilan maksimum strategi dengan berkesan.
  3. Fleksibiliti parameter: Strategi menyediakan pelbagai parameter untuk pengguna menyesuaikan, seperti tempoh, nisbah risiko, sama ada untuk menggunakan stop-loss, dll., yang boleh diselaraskan mengikut gaya perdagangan dan keadaan pasaran yang berbeza.
  4. Sederhana dan berkesan: Logik strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan, dan boleh mencapai pulangan yang baik dalam pasaran trend.

Risiko Strategi

Walaupun Strategi Crossover EMA BreakHigh mempunyai kelebihan tertentu, ia juga mempunyai risiko berikut:

  1. Risiko turun naik pasaran: Dalam kes turun naik pasaran yang tinggi, strategi boleh menghasilkan lebih banyak isyarat palsu, yang membawa kepada perdagangan dan kerugian modal yang kerap.
  2. Risiko pembalikan trend: Apabila trend pasaran berbalik, strategi boleh menunda penjualan, mengakibatkan penyesuaian keuntungan atau mengubah keuntungan menjadi kerugian.
  3. Parameter menetapkan risiko: Prestasi strategi bergantung pada penetapan parameter, seperti tempoh, nisbah risiko, dll. Jika parameter ditetapkan dengan tidak betul, ia boleh menyebabkan prestasi strategi yang buruk.

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

  1. Sesuaikan parameter dengan betul: Mengikut keadaan pasaran dan instrumen perdagangan yang berbeza, sesuaikan parameter strategi dengan betul, seperti meningkatkan tempoh, mengurangkan nisbah risiko, dll., Untuk mengurangkan isyarat palsu dan perdagangan yang kerap.
  2. Gabungkan dengan penunjuk lain: Gabungkan dengan penunjuk teknikal lain, seperti RSI, MACD, dan lain-lain, untuk mengesahkan kesahihan trend dan isyarat dan meningkatkan kebolehpercayaan strategi.
  3. Tetapkan stop-loss yang munasabah: Tetapkan harga stop-loss yang munasabah, yang boleh mengawal risiko penurunan dan tidak menghentikan kerugian terlalu awal, mengakibatkan peluang keuntungan yang hilang.

Arahan Pengoptimuman Strategi

Untuk meningkatkan lagi prestasi Strategi Crossover BreakHigh EMA, arah pengoptimuman berikut boleh dipertimbangkan:

  1. Penyesuaian parameter dinamik: Menurut turun naik pasaran dan kekuatan trend, menyesuaikan parameter strategi secara dinamik, seperti meningkatkan tempoh apabila turun naik tinggi, meningkatkan nisbah risiko apabila trend kuat, dll., untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Memperkenalkan mekanisme panjang-pendek: Berdasarkan perdagangan panjang asal, memperkenalkan mekanisme perdagangan pendek untuk mendapat keuntungan dari trend penurunan juga, meningkatkan kebolehsesuaian dan keuntungan strategi.
  3. Mengoptimumkan stop-loss dan take-profit: Mengoptimumkan tetapan stop-loss dan take-profit, seperti menggunakan trailing stop-loss, partial take-profit, dan lain-lain, untuk mengawal risiko dengan lebih baik dan mengunci keuntungan.
  4. Gabungkan dengan analisis asas: Gabungkan analisis asas dengan analisis teknikal, seperti menyesuaikan kedudukan dan parameter strategi sebelum dan selepas peristiwa penting seperti laporan pendapatan korporat dan pelepasan data ekonomi, untuk menangani perubahan pasaran yang mungkin.

Melalui langkah-langkah pengoptimuman di atas, kestabilan, kesesuaian, dan keuntungan Strategi Crossover BreakHigh EMA dapat ditingkatkan, membolehkan ia mencapai prestasi yang baik dalam lebih banyak persekitaran pasaran.

Ringkasan

Strategi BreakHigh EMA Crossover adalah strategi trend-mengikuti yang mudah dan berkesan yang menangkap trend pasaran dengan menggunakan harga pecah dan EMA crossover sambil menggunakan stop-loss untuk mengawal risiko penurunan. Logik strategi adalah jelas, parameter fleksibel, dan mudah difahami dan dilaksanakan. Walaupun strategi mempunyai risiko tertentu, seperti risiko turun naik pasaran, risiko pembalikan trend, dan risiko menetapkan parameter, risiko ini boleh dikurangkan melalui langkah-langkah kawalan risiko yang sesuai, seperti menyesuaikan parameter, menggabungkan dengan parameter lain, dan menetapkan stop-loss yang munasabah. Di samping itu, strategi ini mempunyai ruang pengoptimuman lanjut, seperti penyesuaian parameter dinamik, memperkenalkan mekanisme kehilangan pendek panjang, mengoptimumkan stop-dan mengambil keuntungan, dan menggabungkan dengan analisis asas, dan lain-lain, untuk meningkatkan prestasi dan kebolehsesuaian 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 lanjut