Đây là một hệ thống chiến lược giao dịch định lượng dựa trên phân tích khối lượng và chéo trung bình động. Chiến lược đưa ra quyết định giao dịch thông qua các tín hiệu chéo của các loại trung bình động khác nhau (bao gồm EMA, SMA và WMA), kết hợp với các chỉ số khối lượng. Hệ thống hỗ trợ cấu hình linh hoạt của các loại và tham số trung bình động, đồng thời giới thiệu phân tích khối lượng như một điều kiện xác nhận giao dịch để cải thiện độ tin cậy.
Chiến lược sử dụng hệ thống chéo trung bình động kép như tín hiệu giao dịch cốt lõi, kết hợp với phân tích khối lượng như phán đoán phụ:
Đây là một chiến lược giao dịch định lượng kết hợp các lý thuyết phân tích kỹ thuật cổ điển thông qua phân tích chéo trung bình động và phân tích khối lượng. Thiết kế chiến lược hợp lý với tính thực tế và khả năng mở rộng mạnh mẽ. Thông qua tối ưu hóa tham số và nâng cao mô-đun, tính ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa.
/*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)