Die GM-8 & ADX Dual Moving Average Strategie ist eine quantitative Handelsstrategie, die mehrere technische Indikatoren kombiniert. Sie verwendet den GM-8 Indikator, den ADX Indikator und einen zweiten EMA Indikator, um potenzielle Kauf- und Verkaufssignale zu identifizieren. Der GM-8 Indikator wird zur Bestimmung von Preistrends verwendet, der ADX Indikator wird zur Bestätigung der Trendstärke verwendet und der zweite EMA Indikator wird zur Unterstützung bei der Bestimmung der Trendrichtung verwendet. Kauf- und Verkaufssignale werden erzeugt, wenn der Preis den GM-8 Moving Average durchbricht und der ADX Indikator über einer Schwelle liegt. Der Vorteil dieser Strategie liegt in ihrer Kombination mehrerer Indikatoren, die die Zuverlässigkeit der Signale verbessert. Sie birgt jedoch auch bestimmte Risiken wie falsche Signale und Verzögerungen.
Das Prinzip der Strategie des doppelten gleitenden Durchschnitts von GM-8 und ADX ist wie folgt:
Die GM-8 & ADX Dual Moving Average Strategie ist eine klassische quantitative Handelsstrategie, die mehrere technische Indikatoren kombiniert, um Kauf- und Verkaufssignale zu identifizieren. Die Vorteile dieser Strategie liegen in ihrer einfachen und klaren Logik, relativ zuverlässigen Signalen und der Eignung für Anfänger, sie zu lernen und zu verwenden. Sie birgt jedoch auch Risiken wie Verzögerung bei der Trendenerkennung, häufigen Handel und Schwierigkeiten bei der Parameterwahl. Um die Leistung der Strategie weiter zu verbessern, können Optimierungsmaßnahmen wie die Einführung mehrer Filterbedingungen, die Optimierung von Ein- und Ausstiegszeiten, die dynamische Anpassung von Parametern und das Hinzufügen von Positionsmanagement in Betracht gezogen werden. Insgesamt bietet die GM-8 & ADX Dual Moving Average Strategie einen guten Grundrahmen für den quantitativen Handel und ist in der Praxis ständig zu verfeinern und zu verbessern.
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("GM-8 and ADX Strategy with Second EMA", overlay=true) // Input parameters gm_period = input(15, title="GM-15 Period") second_ema_period = input(59, title="Second EMA Period") adx_period = input(8, title="ADX Period") adx_threshold = input(34, title="ADX Threshold") lot_size = input.float(0.4, title="Lot Size") // Calculate the ADX manually adx(high, low, close, length) => sum_truerange = 0.0 sum_plusDM = 0.0 sum_minusDM = 0.0 for i = 1 to length truerange_calc = high[i] - low[i] truerange_prev_close = high[i] - close[i-1] truerange_close = low[i] - close[i-1] truerange_calc := truerange_prev_close > truerange_calc ? truerange_prev_close : truerange_calc truerange_calc := truerange_close > truerange_calc ? truerange_close : truerange_calc sum_truerange := sum_truerange + truerange_calc plusDM = high[i] - high[i-1] > low[i-1] - low[i] and high[i] - high[i-1] > 0 ? high[i] - high[i-1] : 0 sum_plusDM := sum_plusDM + plusDM minusDM = low[i-1] - low[i] > high[i] - high[i-1] and low[i-1] - low[i] > 0 ? low[i-1] - low[i] : 0 sum_minusDM := sum_minusDM + minusDM plusDI = sum_plusDM / sum_truerange * 100 minusDI = sum_minusDM / sum_truerange * 100 sumDI = plusDI + minusDI adx_value = 100 * (plusDI - minusDI) / (sumDI == 0 ? 1 : sumDI) // Calculate indicators gm_8 = ta.sma(close, gm_period) second_ema = ta.ema(close, second_ema_period) adx_value = adx(high, low, close, adx_period) // Define buy and sell conditions buy_condition = ta.crossover(close, gm_8) and close > gm_8 and close > second_ema and adx_value > adx_threshold sell_condition = ta.crossunder(close, gm_8) and close < gm_8 and close < second_ema and adx_value > adx_threshold // Entry and exit logic if (buy_condition) strategy.entry("Buy", strategy.long, qty=lot_size) if (sell_condition) strategy.entry("Sell", strategy.short, qty=lot_size) // Exit conditions exit_buy_condition = ta.crossunder(close, gm_8) and close < gm_8 exit_sell_condition = ta.crossover(close, gm_8) and close > gm_8 if (exit_buy_condition) strategy.close("Buy") if (exit_sell_condition) strategy.close("Sell")