Impulse Line Crossover EMA Strategy MACD Sembilan Saham

Penulis:ChaoZhang, Tarikh: 2024-02-27 16:49:10
Tag:

img

Ringkasan

Strategi ini secara komprehensif menggunakan penunjuk EMA, penunjuk Bollinger Bands dan penunjuk MACD.

Prinsip Strategi

  1. Mengira EMA 3 hari, EMA 9 hari dan EMA 30 hari.

  2. Mengira penyimpangan standard dalam tempoh 20 hari dari harga dan menarik Bollinger Bands dengan 1 dan 2 kali penyimpangan standard.

  3. Mengira garis isyarat 12 hari, 26 hari dan 9 hari.

  4. Apabila EMA 9 hari melebihi EMA 30 hari, dan harga melebihi had atas 1x Band Bollinger deviasi standard, isyarat beli dikeluarkan.

  5. Apabila EMA 30 hari berada di bawah EMA 9 hari, dan harga lebih rendah daripada had bawah Bollinger Bands 1x penyimpangan standard, isyarat jual dikeluarkan.

Analisis Kelebihan

Dengan menggabungkan penunjuk purata bergerak dan penunjuk momentum, strategi ini dapat memahami lebih baik trend pasaran dan masa, dengan kelebihan berikut:

  1. Indikator EMA boleh bertindak balas dengan cepat terhadap perubahan harga untuk menentukan trend pasaran; Indikator MACD menilai momentum untuk mengelakkan pecah palsu.

  2. Gabungan penunjuk deviasi piawai Bollinger Bands dan EMA dapat menentukan masa pembelian dan penjualan dengan lebih tepat.

  3. Gabungan beberapa penunjuk boleh melengkapi satu sama lain.

Analisis Risiko dan Pengoptimuman

Strategi ini juga mempunyai beberapa risiko. Perhatikan perkara berikut untuk pengoptimuman:

  1. Gabungan purata bergerak EMA boleh diselaraskan dan dioptimumkan. Kitaran yang berbeza dapat menangkap trend dengan lebih baik.

  2. Parameter Bollinger Bands boleh dioptimumkan dengan mengubah perkalian penyimpangan standard untuk menapis isyarat palsu.

  3. Parameter dan kombinasi penunjuk MACD boleh dioptimumkan untuk meningkatkan kesan menilai momentum.

Ringkasan

Strategi ini mengintegrasikan penunjuk EMA untuk menentukan trend utama, ditambah dengan penunjuk Bollinger Bands yang dapat dengan tepat merebut titik beli dan jual apabila momentum agak besar; penunjuk MACD melengkapkan pengesahan trend dan dapat menapis isyarat palsu dengan berkesan. Melalui pengoptimuman parameter, kesan strategi ini dapat ditingkatkan lagi.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("emabb_collab", shorttitle="emabb", overlay=true)

// Input parameters
ema3 = input(3, title="3 EMA")
ema9 = input(9, title="9 EMA")
ema30 = input(30, title="30 EMA")
macdShort = input(12, title="MACD Short")
macdLong = input(26, title="MACD Long")
macdSignal = input(9, title="MACD Signal")
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev1 = mult * ta.stdev(src, length)
upper1 = basis + dev1
lower1 = basis - dev1
dev2 = mult * 2 * ta.stdev(src, length)
upper2 = basis + dev2
lower2 = basis - dev2
plot(basis, "Basis", color=#FF6D00)
p1 = plot(upper1, "Upper1", color=#2962FF)
p2 = plot(lower1, "Lower1", color=#2962FF)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
plot(basis, "Basis", color=#FF6D00)
p3 = plot(upper2, "Upper2", color=#00FF8C)
p4 = plot(lower2, "Lower2", color=#00FF8C)
fill(p3, p4, title = "Background", color=color.rgb(0, 153, 140, 95))

// Calculate EMAs
ema3Value = ta.ema(close, ema3)
ema9Value = ta.ema(close, ema9)
ema30Value = ta.ema(close, ema30)


// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)


// Conditions for buy signal
buyCondition = ta.crossover(ema9Value, ema30Value)  and ta.stdev(close, 20) > ta.stdev(close, 20)[1]

//Conditions for sell signal
sellCondition = ta.crossover(ema30Value, ema9Value)  and ta.stdev(close, 20) < ta.stdev(close, 20)[1]

// Plot signals on the chart

plotshape(buyCondition, title='Buy Label', style=shape.triangleup, location=location.belowbar, size=size.normal, text='Buy', textcolor=color.new(color.white, 0), color=color.new(color.green, 0))
plotshape(sellCondition, title='sell Label', style=shape.triangledown, location=location.abovebar, size=size.normal, text='sell', textcolor=color.new(color.white, 0), color=color.new(color.red, 0))

// Plot EMAs
plot(ema3Value, title="3 EMA", color=color.orange)
plot(ema9Value, title="9 EMA", color=color.purple)
plot(ema30Value, title="30 EMA", color=color.red)


if buyCondition
    strategy.entry('Long', strategy.long)
if sellCondition
    strategy.entry('Short', strategy.short)






Lebih lanjut