
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 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:
Melalui langkah-langkah di atas, strategi ini dapat memperoleh keuntungan dari tren naik pasaran sambil menggunakan stop loss untuk mengawal risiko turun.
Strategi penembusan harga tertinggi EMA mempunyai kelebihan berikut:
Walaupun ada kelebihan untuk menembusi EMA tertinggi, strategi ini juga mempunyai risiko:
Untuk mengurangkan risiko ini, langkah-langkah berikut boleh dipertimbangkan:
Untuk meningkatkan lagi prestasi strategi penembusan EMA harga tertinggi, arah pengoptimuman berikut boleh dipertimbangkan:
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.
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.
/*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))
//****************************************************************************//