이 시스템은 이동 평균 크로스오버와 볼륨 분석을 기반으로 한 양적 거래 전략 시스템이다. 이 전략은 볼륨 지표와 결합한 다양한 유형의 이동 평균 (EMA, SMA, WMA 등) 의 크로스오버 신호를 통해 거래 결정을 내린다. 이 시스템은 이동 평균 유형과 매개 변수의 유연한 구성을 지원하며 신뢰성을 향상시키기 위해 거래 확인 조건으로 볼륨 분석을 도입한다.
이 전략은 두 개의 이동 평균 크로스오버 시스템을 핵심 거래 신호로 사용하며 부가적인 판단으로 볼륨 분석과 결합합니다.
이것은 이동 평균 크로스오버와 볼륨 분석을 통해 고전적인 기술 분석 이론을 결합한 양적 거래 전략이다. 전략 설계는 강력한 실용성과 확장성으로 합리적입니다. 매개 변수 최적화 및 모듈 향상으로 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다. 라이브 거래 전에 철저한 백테스팅을 수행하고 특정 거래 도구 특성에 따라 매개 변수를 조정하는 것이 좋습니다.
/*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)