Strategi Dagangan Kombo Indikator Saham MA Berganda

Penulis:ChaoZhang, Tarikh: 2023-09-12 14:44:56
Tag:

Strategi ini menggabungkan purata bergerak dan penunjuk Stoch ke dalam sistem perdagangan kuantitatif dengan kedua-dua trend-mengikuti dan overbought/oversold pengesanan keupayaan.

Logik Strategi:

  1. Mengira MA jangka panjang dan EMA jangka pendek untuk menentukan arah trend.

  2. Mengira nilai stok K dan D untuk mengenal pasti tahap overbought / oversold.

  3. Apabila CLOSE pecah di atas MA, dan Stoch K&D berada di atas garis overbought, pergi panjang.

  4. Apabila CLOSE pecah di bawah EMA, dan Stoch K&D berada di bawah garis oversold, pergi pendek.

  5. Gunakan COLOR untuk menandakan arah perdagangan yang ditentukan.

Kelebihan:

  1. MAs berganda meningkatkan ketepatan trend dan mengelakkan isyarat palsu.

  2. Stoch mengenal pasti zon pembelian/penjualan yang berkemungkinan tinggi.

  3. Menggabungkan penunjuk meningkatkan kebolehpercayaan melalui pengesahan.

Risiko:

  1. Penyesuaian parameter yang buruk menyebabkan isyarat berlebihan atau ketidakkonsistenan.

  2. Kedua-dua MAs dan Stoch boleh berundur, menyebabkan kemasukan awal atau tertunda.

  3. Lebih banyak penunjuk bermakna lebih kompleks walaupun peningkatan kebolehpercayaan.

Ringkasnya, strategi ini secara kuantitatif berdagang menggunakan MA untuk trend dan stok untuk tahap overbought / oversold. Dengan pengoptimuman parameter yang kukuh, ia dapat meningkatkan kestabilan dan kebolehpercayaan sistem. Tetapi pengurusan risiko yang berhati-hati masih diperlukan, dan pelabur harus menggunakan budi bicara.


/*backtest
start: 2023-08-12 00:00:00
end: 2023-09-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// strategy("PMB2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, initial_capital=1000, currency=currency.USD)
//study(title="PMB2", overlay=true)

l_ma = input(50, title="MA (green)", type=input.integer)
l_ema = input(25, title="EMA (red)", type=input.integer)

MA = sma(close,l_ma)
EMA = ema(close,l_ema)

plot(MA, color=color.green)
plot(EMA, color=color.red)

//STOCH(14,3,3)
length = input(20, minval=1, title="STOCH - K")
smoothK = input(2, minval=1, title="STOCH - D")
smoothD = input(2 , minval=1, title="STOCH - Smooth")

StkLong= input(50 , minval=1, maxval=100, title="Long when Close > MA and Stoch > ")
StkShort= input(80 , minval=1, maxval=100, title="Short when Close < EMA and Stoch < ")

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
//plot(k, color=color.blue, title="STOCH - K")
//plot(d, color=color.orange, title="STOCH - D")
//band180 = hline(80, title="STOCH - Banda superior")
//band120 = hline(20, title="STOCH - Banda superior")
//band100 = hline(50,  color=color.gray, editable=false, linestyle=hline.style_solid)
//fill(band180, band120, color=color.gray, transp=75, title="STOCH - Fundo")

BTStartY = input(title="Strategy Test Start Year", type=input.integer, defval=2019, minval=2010, maxval=2100)
BTStartM = input(title="Strategy Test Start Month", type=input.integer, defval=1, minval=1, maxval=12)
BTStartD = input(title="Strategy Test Start Day", type=input.integer, defval=1, minval=1, maxval=31)
BTStopY = input(title="Strategy Test Stop Year", type=input.integer, defval=2019, minval=2010, maxval=2100)
BTStopM = input(title="Strategy Test Stop Month", type=input.integer, defval=12, minval=1, maxval=12)
BTStopD = input(title="Strategy Test Stop Day", type=input.integer, defval=31, minval=1, maxval=31)

// set up min and max date for strategy test
TMin = timestamp(BTStartY, BTStartM, BTStartD, 00, 00)
TMax = timestamp(BTStopY, BTStopM, BTStopD, 00, 00)
InTime = true

bool long = false, short = false, trade = false

trade := trade[1]
long := long[1]
short := short[1]

if (crossover(close, MA) and k > StkLong and d > StkLong) // "LONG!"
//if (close > MA and k > StkLong and d > StkLong) // "LONG!"
    short := false
    long := true
    trade := true // LONG

if (crossunder(close, EMA)  and k < StkShort and d < StkShort) // "SHORT!""
//if (close < EMA and k < StkShort and d < StkShort) // "SHORT!""
    long := false
    short := true
    trade := false // SHORT


//bgcolor(FL > SH ? color.green : FH < SL ? color.red : na, transp=80)
bgcolor(trade ? color.green : color.red, transp=90)

//alertcondition((crossover(close, MA) and k > 50 and d > 50) , title='Buy', message='Buy')
//alertcondition((crossunder(close, EMA) and k > 80 and d > 80) , title='Sell', message='Sell')


if ((crossover(close, MA) and k > StkLong and d > StkLong) and InTime)
//if ((close > MA and k > StkLong and d > StkLong) and InTime)
    strategy.entry("Long", strategy.long)

if ((crossunder(close, EMA) and k < StkShort and d < StkShort)  and InTime)
//if ((close < EMA and k < StkShort and d < StkShort)  and InTime)
    strategy.entry("Short", strategy.short)
    





Lebih lanjut