
La stratégie est une stratégie de trading quantitative basée sur le principe de la bi-homogénéité croisée. La stratégie génère un signal d’achat lorsque le SMA court court est traversé par le SMA long et un signal de vente lorsque le SMA court est traversé par le SMA long. Le code de la stratégie introduit également des paramètres de date et de période permettant de mesurer et d’optimiser la stratégie de manière flexible.
Le principe central de cette stratégie est d’utiliser la relation croisée entre les moyennes mobiles de différentes périodes pour capturer les changements de tendance des prix. Les moyennes mobiles sont un indicateur technique couramment utilisé qui permet d’éliminer les fluctuations à court terme et de refléter la tendance générale des prix en prenant une moyenne sur une période de temps passée.
La stratégie SMA bi-homogène est une stratégie de trading quantitatif simple, facile à comprendre et adaptable. En utilisant la relation de croisement de différentes moyennes mobiles périodiques, la stratégie est capable de capturer efficacement les changements de tendance des prix et de fournir aux traders des signaux d’achat et de vente. Cependant, la performance de la stratégie peut être plus sensible à la sélection des paramètres et peut entraîner des effets de négociation fréquents et de retard lorsque les fluctuations du marché sont importantes.
/*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")