
A estratégia é uma estratégia de negociação quantitativa baseada no princípio da dupla equilíbrio entre os dois. A estratégia gera um sinal de compra quando atravessa um SMA longo acima de um SMA curto e um sinal de venda quando atravessa um SMA longo abaixo de um SMA curto. O código da estratégia também introduz a configuração de um período de data e um período de tempo, permitindo a retroavaliação e otimização da estratégia de forma flexível.
O princípio central da estratégia é o uso da relação cruzada entre as médias móveis de diferentes períodos para capturar as mudanças na tendência dos preços. As médias móveis são um indicador técnico de uso comum, que, ao fazer uma média sobre os preços no passado, pode excluir os movimentos de curto prazo e refletir a tendência geral dos preços. Quando as médias móveis de curto prazo atravessam a média móvel de longo prazo, indicam que os preços podem começar a ter uma tendência ascendente, o que gera um sinal de compra; ao contrário, quando as médias móveis de curto prazo atravessam a média móvel de longo prazo, indicam que os preços podem começar a ter uma tendência descendente, o que gera um sinal de venda.
A estratégia de cruzamento de duas equiláreas SMA é uma estratégia de negociação quantitativa simples, fácil de entender e adaptável. Utilizando a interseção de diferentes médias móveis periódicas, a estratégia é capaz de capturar efetivamente as mudanças na tendência dos preços, fornecendo sinais de compra e venda para os comerciantes. No entanto, o desempenho da estratégia pode ser sensível à seleção de parâmetros e pode produzir efeitos de negociação e atraso frequentes quando a volatilidade do mercado é grande.
/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA Crossover Strategy with Date Range and Timeframe", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.USD, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0)
// Define the lengths for the short and long SMAs
shortSMA_length = input.int(50, title="Short SMA Length", minval=1)
longSMA_length = input.int(200, title="Long SMA Length", minval=1)
// Define the start and end dates for the backtest
startDate = input(timestamp("2024-06-01 00:00"), title="Start Date")
endDate = input(timestamp("2024-06-05 00:00"), title="End Date")
// Define the timeframe for the SMAs
smaTimeframe = input.timeframe("D", title="SMA Timeframe")
// Request the short and long SMAs from the selected timeframe
dailyShortSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, shortSMA_length))
dailyLongSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, longSMA_length))
// Plot the SMAs on the chart
plot(dailyShortSMA, color=color.blue, title="Short SMA")
plot(dailyLongSMA, color=color.red, title="Long SMA")
// Define the crossover conditions based on the selected timeframe SMAs
buyCondition = ta.crossover(dailyShortSMA, dailyLongSMA)
sellCondition = ta.crossunder(dailyShortSMA, dailyLongSMA)
// Generate buy and sell signals only if the current time is within the date range
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Optional: Add visual buy/sell markers on the chart
plotshape(series=buyCondition and (time >= startDate and time <= endDate), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellCondition and (time >= startDate and time <= endDate), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")