
이것은 평평선 교차와 교차량 분석에 기반한 정량화 거래 전략 시스템이다. 이 전략은 여러 종류의 이동 평균 (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)