
Стратегия является количественной торговой стратегией, основанной на принципе двойной равнолинейной скрещивания. Стратегия производит сигнал покупки при прохождении длинной SMA над краткосрочной SMA и сигнал продажи при прохождении длинной SMA ниже краткосрочной SMA путем вычисления простой скользящей средней за два различных периода. Код стратегии также вводит настройки диапазона дат и временных рамок, которые позволяют гибко отслеживать и оптимизировать стратегию.
Ключевым принципом этой стратегии является использование перекрестных связей между движущимися средними за различные периоды, чтобы зафиксировать изменения в ценовой тенденции. Движущаяся средняя - это часто используемый технический индикатор, который отсеивает краткосрочные колебания и отражает общую тенденцию цен, делая средние за предыдущий период времени.
Стратегия SMA является простой, легко понятной и адаптивной стратегией количественного трейдинга. Используя перекрестные отношения между различными периодическими движущимися средними, стратегия может эффективно улавливать изменения в ценовых тенденциях, предоставляя трейдерам сигналы для покупки и продажи. Однако, эффективность стратегии может быть более чувствительной к выбору параметров и может приводить к частым сделкам и задержкам при значительной волатильности на рынке. Для дальнейшей оптимизации стратегии можно рассмотреть возможность введения других технических показателей, выбора оптимальных параметров, увеличения условий перехода, динамического корректирования параметров и включения мер по управлению рисками.
/*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")