
Эта стратегия сочетает в себе простое движущееся среднее ((SMA) и рулонную линейную возвратную трендовую линию, устанавливая условия покупки, когда цена закрытия выше SMA и трендовой линии, и условия выхода, когда цена закрытия ниже SMA и трендовой линии. Эта стратегия использует в основном равнолинейные торговые сигналы SMA и поддержку рулонной трендовой линии, входя во время прорыва вверх и выходя во время прорыва вниз.
Стратегия основана на следующих компонентах:
SMA: простая скользящая средняя, рассчитывающая среднее значение цены закрытия за определенный период (smaPeriod) в качестве сигнальной линии.
Прокручивающаяся линия тренда: наилучшее совпадение прямой линии в течение определенного периода (окно) на основе линейной регрессии как сигнал тренда. Метод расчета - наименьшее двоичное умножение.
Условия входа: сделайте дополнительный вход, когда цена закрытия будет выше средней линии SMA и линии ролирования тренда.
Условия выхода: Прямой выход, когда цена закрытия ниже средней линии SMA и линии роллингового тренда.
Таким образом, эта стратегия основывается на входе в прорыв сигналов равнолинейной торговли, а также на выходе из прорыва каналов. Используя свойства среднезначного возврата движущейся средней и среднезначную поддержку линейного возврата каналов, можно реализовать операцию трендового отслеживания прорыва.
Эта стратегия включает в себя двойную фильтрацию средней и трендовой линий, что позволяет эффективно уменьшить ложные прорывы. В то же время, ролирование трендовых линий обеспечивает более точную поддержку канала, что делает торговые решения более надежными. Основные преимущества:
В этой стратегии есть определенные риски, которые сосредоточены на следующем:
Для оптимизации этих рисков можно начать с следующих пунктов:
Эта стратегия может быть оптимизирована в следующих аспектах:
Добавлена функция динамической корректировки параметров циклов SMA и скольжения. Параметры автоматически оптимизируются в различных рыночных условиях.
Повышение гибкости механизмов остановки убытков. Остановка убытков, когда цена превышает определенную пропорцию линии тренда.
В сочетании с другими показателями фильтрует сигналы. Например, показатели количественной способности, показатели силы и слабости. Повышает точность принятия решений.
Разработать обратную версию. Делайте больше, когда цена приближается к дну и прорывает нисходящий канал.
Стратегия объединяет сигналы торговли с подвижными средними и поддержку канала рулевой линии тренда, обеспечивает операцию по отслеживанию тренда. Двойной механизм фильтрации снижает вероятность ложных прорывов и повышает качество принятия решений.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)
// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")
// Calculating SMA
sma = sma(close, smaPeriod)
// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
sumX = 0.0
sumY = 0.0
sumXY = 0.0
sumX2 = 0.0
for i = 0 to window - 1
sumX := sumX + i
sumY := sumY + close[i]
sumXY := sumXY + i * close[i]
sumX2 := sumX2 + i * i
slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / window
slope * (window - 1) + intercept
// Calculating the trendline
trendline = linreg_trendline(window)
// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline
// Strategy logic
if (true)
if (longCondition)
strategy.entry("Long", strategy.long)
if (exitLongCondition)
strategy.close("Long")
// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)