Es handelt sich um ein quantitatives Handelsstrategie-System, das auf der Analyse von gleitenden Durchschnitten und Volumen basiert. Die Strategie trifft Handelsentscheidungen durch Crossover-Signale verschiedener Arten von gleitenden Durchschnitten (einschließlich EMA, SMA und WMA), kombiniert mit Volumenindikatoren. Das System unterstützt eine flexible Konfiguration von gleitenden Durchschnittsarten und -parametern und führt gleichzeitig die Volumenanalyse als Bedingung für die Handelsbestätigung ein, um die Zuverlässigkeit zu verbessern.
Die Strategie verwendet als Kernhandelssignal ein doppeltes gleitendes Durchschnitts-Crossover-System, kombiniert mit einer Volumenanalyse als Hilfsbeurteilung:
Dies ist eine quantitative Handelsstrategie, die klassische technische Analyse-Theorien durch gleitende Durchschnitts-Crossover- und Volumenanalyse kombiniert. Das Strategie-Design ist vernünftig mit starker Praktikabilität und Skalierbarkeit. Durch Parameteroptimierung und Modulverbesserung können die Stabilität und Rentabilität der Strategie weiter verbessert werden. Es wird empfohlen, vor dem Live-Handel gründliches Backtesting durchzuführen und die Parameter entsprechend den spezifischen Eigenschaften des Handelsinstruments anzupassen.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Cruzamento de Médias com Volume ☾︎ 𝔇𝔞𝔯𝔎 ✞︎ 𝔗𝔯𝔞𝔡𝔢𝔯 ☽︎", overlay=true) // Criação de opções no editor para selecionar o tipo de média móvel maType1 = input.string(title="Tipo de Média Móvel 1", defval="EMA", options=["SMA", "EMA", "WMA"]) maType2 = input.string(title="Tipo de Média Móvel 2", defval="EMA", options=["SMA", "EMA", "WMA"]) // Função para selecionar a média móvel de acordo com o tipo escolhido getMovingAverage(maType, src, length) => if maType == "SMA" ta.sma(src, length) else if maType == "EMA" ta.ema(src, length) else if maType == "WMA" ta.wma(src, length) else na // Parâmetros para o cálculo das médias móveis length1 = input.int(9, title="Período da Média 1") length2 = input.int(21, title="Período da Média 2") // Cálculo das médias móveis escolhidas ma1 = getMovingAverage(maType1, close, length1) ma2 = getMovingAverage(maType2, close, length2) // Parâmetro editável para o período da média de volume volLength = input.int(20, title="Período da Média de Volume") // Cálculo da média móvel do volume com período ajustável volSMA = ta.sma(volume, volLength) // Média móvel simples do volume // Cálculo da EMA de 200 períodos para visualizar a tendência primária ema200 = ta.ema(close, 200) // Condições para compra: ma1 cruza acima da ma2 + Volume acima da média de volume ajustável longCondition = ta.crossover(ma1, ma2) and volume > volSMA // Condições para venda: ma1 cruza abaixo da ma2 + Volume acima da média de volume ajustável shortCondition = ta.crossunder(ma1, ma2) and volume > volSMA // Executa a operação de compra if (longCondition) strategy.entry("Compra", strategy.long) // Executa a operação de venda if (shortCondition) strategy.entry("Venda", strategy.short) // Plotando as médias móveis no gráfico de preços plot(ma1, color=color.green, title="Média Móvel 1", linewidth=2) plot(ma2, color=color.red, title="Média Móvel 2", linewidth=2) // Plotando a EMA de 200 períodos para visualização da tendência de longo prazo plot(ema200, color=color.orange, title="EMA 200", linewidth=2) // Plotando a média de volume para visualização no painel inferior plot(volSMA, color=color.blue, title="Média de Volume", linewidth=2)