Der gleitende Durchschnitt ist eine sehr verbreitete quantitative Handelsstrategie. Er verwendet das goldene Kreuz und das Todeskreuz von gleitenden Durchschnitten, um Trends und Gewinn zu bestimmen. Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt geht, signalisiert er einen Aufwärtstrend und eine Long-Position kann eingenommen werden. Wenn der kurzfristige gleitende Durchschnitt unter den langfristigen gleitenden Durchschnitt geht, signalisiert er einen Abwärtstrend und eine Short-Position kann eingenommen werden.
Diese Strategie basiert auf dem goldenen Kreuz und dem Todeskreuz von gleitenden Durchschnitten, um Ein- und Ausstiegspunkte zu bestimmen.upOrDown
undlongOrShort
zur Bestimmung von Long oder Short;percentInput
die Festlegung des Schwellenprozentsatzes der Preisänderung;closePositionDays
um die Anzahl der Tage festzulegen, an denen die Position gehalten werden muss.
Die Kernlogik lautet: Berechnen Sie den Anstieg/Abfall von heute im Verhältnis zu gestern. Wenn er den Eingangsschwellenprozentsatz erreicht, wird ein Handelssignal ausgelöst. Wenn es sich um ein langes Signal handelt, wenn der heutige Preis im Verhältnis zu gestern mehr als den Schwellenwert ansteigt, gehen Sie lang. Wenn es sich um ein kurzes Signal handelt, wenn der heutige Preis im Verhältnis zu gestern mehr als den Schwellenwert ansteigt, gehen Sie kurz.
Nach dem Long/Short werden der Eintrittstag und die nächsten 4 Tage mit Farben auf dem Chart markiert.
Risikomanagement:
Die gleitende Durchschnitts-Crossover-Strategie ist eine sehr einfache und praktische quantitative Handelsstrategie. Durch das Beurteilen der Beziehung zwischen kurzfristigen und langfristigen Trends profitiert sie von der tendenziellen Natur der Vermögenspreise. Diese Strategie ist leicht mit klarer Logik umzusetzen und bildet die Grundlage vieler quantitativer Handelsstrategien. Wir können durch Parameter-Tuning und -optimierungen eine bessere Leistung erzielen. Aber wir müssen auch Risiken managen und Missbrauch vermeiden.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Created by Leon Ross strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true, initial_capital=100000) //Inputs longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day percentInput = input(title="Percent", type=float, defval=4.5) closePositionDays = input(title="How Many Days to Close Position", defval=4) //Conditions //percentUpValue = (close / close[1]) - 1 //percentUp = percentUpValue >= (percentInput/100.0) //upConditions = percentUp //percentDownValue = 1- (close / close[1]) //percentDown = percentDownValue >= (percentInput/100.0) //downConditions = percentDown upValue = (close / close[1]) - 1 downValue = 1 - (close / close[1]) allConditions = if(upOrDown) upValue >= (percentInput/100.0) else downValue >= (percentInput/100.0) //Plots bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70) bgcolor(allConditions ? silver : na, transp=70, offset=1) bgcolor(allConditions ? silver : na, transp=70, offset=2) bgcolor(allConditions ? silver : na, transp=70, offset=3) bgcolor(allConditions ? silver : na, transp=70, offset=4) //bgcolor(downConditions == 1 ? red : na, transp=70) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4) //Entires if(longOrShort) strategy.entry(id = "Long", long = true, when = allConditions) else strategy.entry(id = "Short", long = false, when = allConditions) //Exits if (barssince(allConditions) == closePositionDays) if(longOrShort) strategy.close("Long") else strategy.close("Short")