
Die Strategie basiert auf dem McKean Non-Dynamic Average Indicator. Der McKean Non-Dynamic Average Indicator ist eine verbesserte Version des Moving Average Indicators, der die Veränderungen der Markttrends besser erfasst. Die Strategie nutzt die Signale des McKean Non-Dynamic Average Indicators in Verbindung mit den Signalen eines Preisbruchs durch die Durchschnittlinie, um Kauf- und Verkaufsregeln zu erstellen, um einen Gewinn zu erzielen.
Die Strategie verwendet hauptsächlich zwei Durchschnittslinien, den Index-Moving-Mean-Line am 21. Tag und den Index-Moving-Mean-Line am 42. Tag. Ein Überschreiten des langen Durchschnitts über dem kurzfristigen Durchschnittslinie wird als Kaufsignal betrachtet; ein Überschreiten des langen Durchschnitts unter dem kurzfristigen Durchschnittslinie wird als Verkaufssignal betrachtet.
Zusätzlich muss die Strategie gleichzeitig die Bedingungen erfüllen, dass der Preis über der nicht-McKinsey-Dynamischen Durchschnittslinie liegt und die kurzfristige Durchschnittslinie überschreitet, um ein Kaufsignal zu erzeugen. Für ein Verkaufssignal muss auch die Bedingung erfüllt sein, dass der Preis unter der nicht-McKinsey-Dynamischen Durchschnittslinie liegt und die kurzfristige Durchschnittslinie überschreitet.
Insbesondere sind die Triggerbedingungen für ein Kaufsignal: Durchschreiten des langen Durchschnitts unterhalb des kurzen Durchschnitts, Abschlusspreise über dem McKinsey-Non-Mittelwert, Abschlusspreise brechen den kurzen Durchschnittswert nach unten. Die Triggerbedingungen für ein Verkaufssignal sind: Durchschreiten des langen Durchschnitts unterhalb des kurzen Durchschnitts, Abschlusspreise unter dem McKinsey-Non-Mittelwert, Abschlusspreise brechen den kurzen Durchschnittswert nach oben.
Die Berechnungsformel für die nicht-dynamische McKin-Mittelwertlinie lautet: MDIt = MDIt-1 + (Close - MDIt-1) / Max (((k * Period * (Close / MDIt-1) ^ 4, 1) ◄ wobei MDIt den aktuellen Wert darstellt, MDIt-1 den Wert des Vortages, Close den Schlusskurs des Tages, k die Gleitkonstante, Period die Berechnung der Periode. Die Formel ermöglicht es der Mittelwertlinie, die Preisänderungen in Echtzeit zu verfolgen.
Der McKinsey-Gewinnspanne-Indikator verbessert die Nachlässigkeit der traditionellen Gewinnspanne und kann die Veränderung der Preisentwicklung schneller erfassen.
In Kombination mit einer doppelten Gleichlinie bilden sie ein Handelssignal, das die falschen Durchbrüche effektiv filtert.
Hinzufügen von Bedingungen, die die Preise über/unter der McKinsey-Ebene bringen, um einen häufigen Handel zwischen den Schwankungen zu vermeiden.
Die Verwendung eines Index-Moving-Mean-Lines ermöglicht eine höhere Sensibilität für die jüngsten Preisänderungen.
In einem schwankenden Markt kann es zu falschen Signalen kommen, die zu Verlusten führen. Die Parameter können entsprechend angepasst und die Signale gefiltert werden.
Durchschnittssprünge von großer Größe können dazu führen, dass die Lagerung nicht rechtzeitig erfolgen kann. Die Eintrittsbedingungen sollten entsprechend gelockert werden.
Die falsche Einstellung der Parameter beeinträchtigt die Effektivität der Strategie. Die Parameter sollten optimiert werden.
Die systematischen Risiken einer langfristigen Inhaberschaft sind zu beachten, und es ist möglich, einen Stop-Loss-Punkt zu setzen.
Die Mittellinieparameter für verschiedene Längen können getestet werden, um die geeignetste Kombination zu finden.
Weitere technische Kennzahlen wie KD, MACD usw. können hinzugefügt werden, um die Kauf- und Verkaufssituation zu optimieren.
Die Parameter k können für verschiedene Sorten und Märkte angepasst werden, um die Berechnung der McKinsey-Nichtdurchschnittlinie zu optimieren.
Dynamische Positions-Sizierung kann in Kombination mit Volatilitätsindikatoren durchgeführt werden, um einzelne Risiken zu steuern.
Ein Stop-Loss-Punkt kann eingestellt werden, um das Verlustrisiko zu kontrollieren, oder ein bewegtes Stop-Loss-System kann getestet werden, um Gewinne zu sichern.
Die Strategie nutzt die schnelle Nachverfolgung von McKinsey Nonlinearity Indicators, die mit Handelssignalen kombiniert werden, die durch Preisbruch gebildet werden. Sie kann Trends effektiv verfolgen und bei Trendwechsel in der richtigen Zeit wechseln. Im Vergleich zu herkömmlichen Binär-Evenline-Strategien kann die Strategie die Preisentwicklung schneller erfassen.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
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/
// © LucasZancheta
//@version=4
strategy(shorttitle="Maguila", title="McGinley Dynamic Indicator", overlay=true)
//Médias móveis
MA1Period=input(21, title="MA1")
MA2Period=input(42, title="MA2")
MA1 = ema(close, MA1Period)
MA2 = ema(close, MA2Period)
aboveAverage = MA1 >= MA2
hunderAverage = MA2 >= MA1
//Período do backtest
startDate = input(title="Start Date", type=input.integer, defval=28, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=5, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2019, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer, defval=28, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=5, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2030, minval=1800, maxval=2100)
//Verifica se o candle está dentro do período do backtest
inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
//Número de periodos da média móvel
period = input(title="Períodos", type=input.integer, defval=20)
//Constante K (0.6)
k = input(title="Constante K", type=input.float, defval=0.6)
//Preço de fechamento
closePrice = input(title="Preço", type=input.source, defval=close)
mdi = 0.0
//Fórmula de McGinley
mdi := na(mdi[1]) ? closePrice : mdi[1] + (closePrice - mdi[1]) / max((k * period * pow(closePrice / mdi[1], 4)), 1)
//Regra de coloração
mdiColor = closePrice > mdi ? color.green : closePrice < mdi ? color.red : color.black
//Inserindo as informações no gráfico
plot(MA1, color=color.blue, linewidth=2)
plot(MA2, color=color.purple, linewidth=2)
barcolor(mdiColor)
//Estratégia
buySignal = aboveAverage and closePrice > mdi and crossunder(low, MA1) and close > MA1
buyLoss = closePrice < mdi and close < MA1 and close < MA2
if (inDateRange)
strategy.entry("Compra", strategy.long, qty=1, when= buySignal)
strategy.exit("Gain da compra", "Compra", qty=1, profit=20)
strategy.close("Compra", qty=1, when= buyLoss, comment="Loss na operação")
sellSignal = hunderAverage and closePrice < mdi and crossover(high, MA1) and close < MA1
sellLoss = closePrice > mdi and close > MA1 and close > MA2
if (inDateRange)
strategy.entry("Venda", strategy.short, qty=1, when= sellSignal)
strategy.exit("Gain da venda", "Venda", qty=1, profit=20)
strategy.close("Venda", qty=1, when= sellLoss, comment="Loss na operação")
if (not inDateRange)
strategy.close_all()