Die Moving Average Crossover Strategie ist eine sehr verbreitete quantitative Handelsstrategie. Sie nutzt die Moving Average als Gold- und Goldfork, um Trends zu beurteilen und zu profitieren. Wenn die langfristige Moving Average über die kurzfristige Moving Average gekreuzt wird, zeigt dies, dass der Aktienpreis steigen beginnt, und Sie können mehr tun; wenn die langfristige Moving Average unter der kurzfristigen Moving Average gekreuzt wird, zeigt dies, dass der Aktienpreis fallen beginnt und Sie können aufhören.
Die Strategie basiert auf einer beweglichen Mittellinie, um die Kauf- und Verkaufszeiten zu bestimmen.upOrDownUndlongOrShortZwei Boole-Input-Parameter für die Beurteilung von Über-Käuferung;percentInputEingabe von Parametern zur Einstellung des Verlustprozentsatzes der Kursänderung; VerwendungclosePositionDaysGeben Sie die Parameter ein, um die Anzahl der Tage für die Position festzulegen.
Die Kernlogik der Strategie lautet: Berechnen Sie die heutige Relativ-Höhe und Tiefe von gestern, und senden Sie ein Handelssignal aus, wenn der Prozentsatz der eingegebenen Marge erreicht ist. Wenn es bullish ist, machen Sie einen Plus, wenn die heutige Relativ-Höhe über die Marge von gestern liegt; wenn es bewertet ist, machen Sie einen Minus, wenn die heutige Relativ-Höhe über die Marge von gestern liegt.
Wenn Sie mehr Kaufzeit machen, wird der Tag und die folgenden 4 Tage in verschiedenen Farben markiert. Nach 4 Tagen wird die Position automatisch geklärt.
Maßnahmen zur Risikokontrolle:
Die Moving Average Crossover Strategie ist eine sehr einfache und praktische Quantitative Trading-Strategie. Sie profitiert von der Tendenz der Aktienpreise, indem sie die Beziehung zwischen kurz- und langfristigen Trends beurteilt. Die Strategie ist einfach zu implementieren, logisch klar und ist die Grundlage vieler Quantitative Trading-Strategien. Durch Parameteranpassung und Optimierung können bessere Strategieeffekte erzielt werden.
/*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")