
Die Strategie basiert auf einer Kombination aus Hoch-Niedrig-, Mittel- und Supertrend-Indikatoren, um Markttrends zu bestimmen.
Der High-Low-Indikator beurteilt, ob der Preis in der letzten Periode ein neues Hoch oder ein neues Tief eingerichtet hat, und addiert die Punkte. Wenn der Wert steigt, bedeutet dies eine Erhöhung der Mehrkopfkraft; wenn der Wert fällt, bedeutet dies eine Erhöhung der Leerkopfkraft.
Durch den Mittelwert-Indikator wird beurteilt, ob der Preis in einem von unten nach oben stehenden Aufstiegstrend oder von oben nach unten stehenden Abstiegstrend ist. Wenn der Mittelwert steil steigt, bedeutet dies eine verstärkte Mehrkopfkraft; wenn der Mittelwert steil sinkt, bedeutet dies eine verstärkte Luftwaffe.
In Kombination mit dem Hoch-Niedrig-Indikator und dem Mittelwert-Indikator, um den Markttrend zu bestimmen. In Kombination mit der Richtung des Supertrend-Indikators, um nach Positionsmöglichkeiten zu suchen. Insbesondere, wenn der Hoch-Niedrig-Indikator und der Mittelwert-Indikator zeigen, dass die mehrköpfige Kraft zunimmt, und wenn der Supertrend-Indikator nach unten ist, wird eine lange Position aufgenommen.
Die Hoch- und Tiefstpreis-Indikatoren können die Preisentwicklung und die Veränderung der Kräfte wirksam bestimmen, während die Gleichlinien-Indikatoren die Preisentwicklung wirksam bestimmen können. Die Kombination der beiden kann die Richtung des Marktes genauer bestimmen.
In Kombination mit einem Supertrend-Indikator kann ein vorzeitiges oder verspätetes Anlegen vermieden werden. Der Supertrend-Indikator identifiziert effektiv die Preiswendepunkte.
Mehrfach gegenseitig verifizierte Kennzahlen reduzieren Falschmeldungen.
Wenn die Hoch-Niedrig- und Mittelwert-Indikatoren falsche Signale senden, kann dies zu Verlusten führen.
Wenn die Teilnahme nicht hoch ist, kann die falsche Einstellung der Supertrend-Indikatorparameter ein falsches Signal erzeugen.
Wenn der Trend zu schnell umkehrt und die Stop-Loss-Einstellungen falsch sind, kann dies zu größeren Verlusten führen.
Das Risiko kann durch Optimierung der Kennzahlenparameter und Anpassung der Stop-Loss-Punkte verringert werden.
Verschiedene Arten von Mittellinien können getestet werden, um die optimale Kombination von Parametern zu finden.
Optimierte Parameter für Hoch-Low- und Mittelwert-Indikatoren, um ein stabileres und zuverlässiges Signal zu erhalten.
In Kombination mit anderen Indikatoren wie MACD, KD usw. kann eine Verifizierung durchgeführt werden, um falsche Signale zu reduzieren.
Automatische Optimierung von Parametern und Signalgewichten in Kombination mit Machine Learning-Algorithmen.
Es ist möglich, die Marktherme mit Emotionsanalysen zu kombinieren, um zu verhindern, dass niedrigtherme Sorten gehandelt werden.
Die Strategie nutzt Hoch-Niedrig- und Mittelwert-Indikatoren, um Markttrends und -kräfte zu beurteilen, und kombiniert mit Supertrend-Indikatoren, um Filtersignale zu filtern, um Positionen zu erstellen, wenn die Übermacht sich widersetzt und die Supertrend-Indikatoren umkehren, um einen risikoarmen Handel zu realisieren. Der Vorteil der Strategie liegt in der Überprüfung von mehreren Indikatoren und der rechtzeitigen Erstellung von Positionen, um das Risiko effektiv zu kontrollieren. Das Problem besteht darin, dass falsche Signale und Trendurteile falsch sind. Die Strategie kann durch mehrere Möglichkeiten verbessert werden, wie Parameteroptimierung, Stop-Loss-Einstellung, Signalfilterung usw.
/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HeWhoMustNotBeNamed
//@version=4
strategy("AlignedMA and Cumulative HighLow Strategy", overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)
MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
includePartiallyAligned = input(true)
HighLowPeriod = input(50, minval=1,step=1)
LookbackPeriod = input(10, minval=1,step=1)
supertrendMult = input(2, minval=1, maxval=10, step=0.5)
supertrendLength = input(10, minval=1)
tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
backtestYears = input(10, minval=1, step=1)
f_getMovingAverage(source, MAType, length)=>
ma = sma(source, length)
if(MAType == "ema")
ma := ema(source,length)
if(MAType == "hma")
ma := hma(source,length)
if(MAType == "rma")
ma := rma(source,length)
if(MAType == "vwma")
ma := vwma(source,length)
if(MAType == "wma")
ma := wma(source,length)
ma
f_getMaAlignment(MAType, includePartiallyAligned)=>
ma5 = f_getMovingAverage(close,MAType,5)
ma10 = f_getMovingAverage(close,MAType,10)
ma20 = f_getMovingAverage(close,MAType,20)
ma30 = f_getMovingAverage(close,MAType,30)
ma50 = f_getMovingAverage(close,MAType,50)
ma100 = f_getMovingAverage(close,MAType,100)
ma200 = f_getMovingAverage(close,MAType,200)
upwardScore = 0
upwardScore := close > ma5? upwardScore+1:upwardScore
upwardScore := ma5 > ma10? upwardScore+1:upwardScore
upwardScore := ma10 > ma20? upwardScore+1:upwardScore
upwardScore := ma20 > ma30? upwardScore+1:upwardScore
upwardScore := ma30 > ma50? upwardScore+1:upwardScore
upwardScore := ma50 > ma100? upwardScore+1:upwardScore
upwardScore := ma100 > ma200? upwardScore+1:upwardScore
upwards = close > ma5 and ma5 > ma10 and ma10 > ma20 and ma20 > ma30 and ma30 > ma50 and ma50 > ma100 and ma100 > ma200
downwards = close < ma5 and ma5 < ma10 and ma10 < ma20 and ma20 < ma30 and ma30 < ma50 and ma50 < ma100 and ma100 < ma200
upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 5? 0.5: upwardScore < 2?-0.5:upwardScore>3?0.25:-0.25) : 0
f_getHighLowValue(HighLowPeriod)=>
currentHigh = highest(high,HighLowPeriod) == high
currentLow = lowest(low,HighLowPeriod) == low
currentHigh?1:currentLow?-1:0
inDateRange = time >= timestamp(syminfo.timezone, year(timenow) - backtestYears, 01, 01, 0, 0)
maAlignment = f_getMaAlignment(MAType,includePartiallyAligned)
alignedMaIndex = sum(maAlignment,LookbackPeriod)
maAlignmentDirection = alignedMaIndex > alignedMaIndex[1] ? 1 : alignedMaIndex < alignedMaIndex[1] ? -1 : 0
maAlignmentDirection := maAlignmentDirection == 0? nz(maAlignmentDirection[1],0):maAlignmentDirection
highLowIndex = f_getHighLowValue(HighLowPeriod)
cumulativeHighLowIndex = sum(highLowIndex,LookbackPeriod)
hlDirection = cumulativeHighLowIndex > cumulativeHighLowIndex[1] ? 1 : cumulativeHighLowIndex < cumulativeHighLowIndex[1] ? -1 : 0
hlDirection := hlDirection == 0? nz(hlDirection[1],0):hlDirection
[superTrend, dir] = supertrend(supertrendMult, supertrendLength)
buyEntry = (dir == -1 and maAlignmentDirection == 1 and hlDirection == 1)
sellEntry = (dir == 1 and maAlignmentDirection == -1 and hlDirection == -1)
barColor = buyEntry?color.lime:sellEntry?color.orange:color.gray
barcolor(barColor)
// strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when=barColor == color.lime and inDateRange, oca_name="oca_buy")
strategy.close("Buy", when=dir == 1)
strategy.entry("Sell", strategy.short, when=barColor == color.orange and inDateRange, oca_name="oca_sell")
strategy.close("Sell", when=dir == -1)