
Die Strategie verwendet zwei bewegte Durchschnitte, einen 8-Perioden- und einen 21-Perioden-Bewegten Durchschnitt. Wenn der kurzfristige Bewegte Durchschnitt über dem langfristigen Bewegten Durchschnitt liegt, wird mehr getan; wenn der langfristige Bewegte Durchschnitt unter dem kurzfristigen Bewegten Durchschnitt liegt, wird weniger getan.
Die Strategie führt auch einen Slip-Index für die Moving Averages ein, um einige trendige Bereiche zu filtern und nur dann ein Handelssignal zu erzeugen, wenn ein Trend deutlich ist.
Der Kern dieser Strategie liegt in der Kreuzung von kurzfristigen und langfristigen Moving Averages. Die kurzfristigen Moving Averages sind in der Lage, die Trendentwicklung schneller zu erfassen, während die langfristigen Moving Averages eine bessere Filterwirkung auf den Lärm haben. Wenn die kurzfristigen Linien über die langfristigen Linien hinweg mehrere Tendenzen aufweisen, können Sie mehr profitieren; wenn die kurzfristigen Linien über die langfristigen Linien hinweg einen leeren Trend aufweisen, können Sie mehr profitieren.
Die Strategie bietet auch einen Schrägstrich. Mehr Signale werden nur erzeugt, wenn die Schrägstrich größer als der positive Schrägstrich ist, und weniger als der negative Schrägstrich. Dies kann einige Bereiche ohne offensichtliche Trends filtern und die Qualität des Handelssignals erhöhen.
Die Logik der Handelssignalgenerierung dieser Strategie ist:
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Für diese Risiken können Optimierungen in folgenden Bereichen vorgenommen werden:
Die Strategie kann auch in folgenden Richtungen optimiert werden:
Die Doppel-Moving-Average-Strategie ist im Allgemeinen einfach und praktisch, indem sie verschiedene Trendmerkmale durch die Parameter von zwei Perioden von Diffs erfasst und zusammenführt, um ein Handelssignal zu erzeugen. Gleichzeitig verbessert die Signalqualität durch die Einführung von Schrägstufen. Die Strategie kann als Basisstrategie verwendet werden und erweitert werden, und es gibt viel Optimierungs- und Ausbaumöglichkeiten.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)
ma1= sma(close,8)
ma2= sma(close,21)
angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)
i_lookback = input(2, "Angle Period", input.integer, minval = 1)
i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1)
i_angleLevel = input(6, "Angle Level", input.integer, minval = 1)
i_maSource = input(close, "MA Source", input.source)
f_angle(_src, _lookback, _atrPeriod) =>
rad2degree = 180 / 3.141592653589793238462643 //pi
ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)
plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)
crosso=crossover(ma1,ma2)
crossu=crossunder(ma1,ma2)
_lookback = 15
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)
long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)
if(long)
strategy.entry("Long",strategy.long)
if(short)
strategy.entry("short",strategy.short)