Handelsstrategie für die Kombination von Aktienindikatoren mit doppelter MA

Schriftsteller:ChaoZhang, Datum: 2023-09-12 14:44:56
Tags:

Diese Strategie kombiniert gleitende Durchschnitte und Stoch-Indikatoren zu einem quantitativen Handelssystem mit Trends- und Überkauf-/Überverkaufserkennungskapazitäten.

Strategie Logik:

  1. Berechnung der langfristigen MA und der kurzfristigen EMA zur Bestimmung der Trendrichtung.

  2. Berechnen Sie die Werte der Bestände K und D, um die Überkauf-/Überverkaufswerte zu ermitteln.

  3. Wenn die CLOSE-Marke über der MA liegt und die Stoch K&D über der Überkauflinie liegt, gehen Sie lang.

  4. Wenn die CLOSE-Marke unterhalb der EMA bricht und die Stoch K&D unterhalb der Überverkaufslinie liegt, gehen Sie kurz.

  5. Verwenden Sie COLOR, um bestimmte Handelsrichtung zu markieren.

Vorteile:

  1. Doppel-MA verbessern die Trendgenauigkeit und vermeiden falsche Signale.

  2. Stoch identifiziert Kauf-/Verkaufszonen mit hoher Wahrscheinlichkeit.

  3. Die Kombination von Indikatoren verbessert die Zuverlässigkeit durch Überprüfung.

Risiken:

  1. Eine schlechte Abstimmung der Parameter verursacht übermäßige Signale oder Inkonsistenzen.

  2. Sowohl MAs als auch Stoch können sich verzögern, was zu vorzeitigen oder verzögerten Einträgen führt.

  3. Mehr Indikatoren bedeuten mehr Komplexität trotz verbesserter Zuverlässigkeit.

Zusammenfassend lässt sich sagen, dass diese Strategie quantitativ mit MAs für den Trend und Stocks für überkaufte/überverkaufte Niveaus handelt. Mit einer robusten Parameteroptimierung kann sie die Systemstabilität und Zuverlässigkeit verbessern.


/*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)
    





Mehr