Die Kernlogik dieser Strategie ist: Die schnelle Linie repräsentiert den jüngsten Preistrend, während die langsame Linie die jüngsten relativ niedrigen Preisniveaus darstellt. Wenn die schnelle Linie über die langsame Linie geht, zeigt sie an, dass die Preise über die jüngsten Tiefststände steigen, daher wird ein Kaufsignal generiert. Wenn die schnelle Linie unter die langsame Linie geht, zeigt sie an, dass die Preise unter die jüngsten Tiefststände fallen, daher wird ein Verkaufssignal generiert.
Der Dual Moving Average Golden Cross Algorithmus birgt auch einige Risiken. Die Strategie stützt sich ausschließlich auf die Beziehung zwischen Preisen und gleitenden Durchschnitten, um Handelseingänge und -ausgänge zu bestimmen. Wenn die Preise abnormal schwanken, während gleitende Durchschnitte solche Bewegungen nicht rechtzeitig widerspiegeln, können falsche Handelssignale generiert werden. In solchen Fällen ist eine manuelle Inspektion der Preisbewegungen erforderlich, um zu vermeiden, dass die Signale blind verfolgt und Verluste entstehen.
Es gibt Raum für weitere Verbesserungen dieser Strategie. Erstens können verschiedene Parameter getestet werden, um die gleitenden Durchschnittsperiodenparameter für die beste Signalqualität zu optimieren. Zweitens könnten Volatilitätsindikatoren integriert werden, um falsche Signale während der Preiskonsolidierungsperioden zu vermeiden. Drittens könnten maschinelle Lernmethoden angewendet werden, um die Stop-Loss-Positionierung automatisch zu optimieren. Viertens könnten Informationen aus korrelierten Vermögenswerten verwendet werden, um Portfoliohandelssysteme zur Verbesserung der Signalzuverlässigkeit zu etablieren.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "Estratégia de Cruzamento das Linhas") // Configuração da Média Móvel emaPeriod = 8 ema= ema(close, emaPeriod) ema1= ema(close[1], emaPeriod) lowestEMA = lowest(ema, 8) // Calcula a diferença entre o preço e a média móvel diff = close - ema diff1 = close[1] - ema1 diffLow = ema - lowestEMA //Condições diffZero = diff < 0 diffUnder = diff < diffLow diffUm = diff > 0 Low0 = diffLow == 0 gain = strategy.position_avg_price*(1+0.2) // Sinais de entrada buy_signal = diffUnder and crossover(diff, diff1) and diffZero sell_signal = diffUm and diffUnder and crossunder(diff, diff1) // Executa as operações de compra/venda if buy_signal strategy.entry("Buy", strategy.long) if sell_signal strategy.exit("Buy", limit = gain) // Plota as linhas plot(0, title="Linha Zero", color=color.gray) plot(diff, title="Diferença", color=color.blue, linewidth=2) plot(diffLow, title="Diferença", color=color.red, linewidth=2)