
Esta estratégia é um sistema de negociação de acompanhamento de tendências baseado no cruzamento de duas linhas de equilíbrio. Captura o momento de mudança da tendência do mercado, comparando a relação de posição das médias móveis de curto e longo prazo (de 9 e 21 dias, respectivamente). A estratégia utiliza a clássica teoria da análise técnica, combinada com métodos modernos de negociação quantitativa, para realizar um processo de decisão de negociação totalmente automatizado.
A lógica central da estratégia baseia-se em sinais de cruzamento de duas médias móveis de diferentes períodos. Quando a média curta (dia 9) sobe e atravessa a média longa (dia 21), o sistema considera a dinâmica do mercado como alta e dispara vários sinais. Quando a média curta desce e atravessa a média longa, o sistema considera a dinâmica do mercado como baixa e termina a negociação.
Esta é uma estratégia de seguimento de tendências clássica e prática, que capta as mudanças de dinâmica do mercado através do cruzamento de duas equações. Apesar de existir um certo risco de atraso e falso sinal, sua simplicidade e robustez tornam-na uma ferramenta importante no campo da negociação quantitativa. Com a orientação de otimização proposta, a estabilidade e a lucratividade da estratégia deverão ser ainda melhoradas.
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)
// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)
// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Execute trades
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0
if (strategy.opentrades > 0)
totalTrades := totalTrades + 1
if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
if (strategy.netprofit > 0)
totalWins := totalWins + 1
else
totalLosses := totalLosses + 1
// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
label.delete(tradeStats)
tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)