
Стратегия - это система отслеживания трендов, основанная на перекрёстке двух равнозначных линий, которая улавливает рыночные тенденции с помощью перекрёстков краткосрочных и долгосрочных движущихся средних, а также управляет риском торгов с использованием соотношения риска и прибыли в размере 1: 3. Стратегия использует фиксированные цели по остановке потерь и прибыли, в то же время использует механизм перемещения потерь для защиты прибыли.
Стратегия использует краткосрочную скользящую среднюю ((Short SMA) 74 циклов и долгосрочную скользящую среднюю ((Long SMA) 70 циклов в качестве основных показателей. Система генерирует многосигналы, когда краткосрочная средняя линия вверх пересекает долгосрочную среднюю линию; система генерирует сигналы заикания, когда краткосрочная средняя линия вниз пересекает долгосрочную среднюю линию.
Это целостная, логически ясная стратегия отслеживания тенденций. Она подходит для торговли на средне- и долгосрочной перспективе путем скрещивания тенденций, с использованием строгого управления рисками и контроля позиций. Несмотря на существующие врожденные недостатки, такие как отставание от равномерной линии, ожидается дальнейшее повышение стабильности и прибыльности стратегии с помощью рекомендуемого направления оптимизации, в частности, внедрения динамической корректировки параметров и фильтрации рыночной среды.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bitcoin Strategy by Jag", overlay=true)
// Input Parameters
shortSMALength = input.int(74, title="Short SMA Length")
longSMALength = input.int(70, title="Long SMA Length")
trailStopOffset = input.float(353, title="Trailing Stop Offset (USD)") // Trailing Stop Loss Offset in USD
tradeSize = input.float(1, title="Trade Size")
// Automatically set Take Profit as 3 times Stop Loss
fixedTakeProfit = trailStopOffset * 3
// Backtesting Date Range
startDate = timestamp(2025, 02,13, 0, 0)
endDate = timestamp(2025, 03, 31, 23, 59)
withinDateRange = true
// Indicators
shortSMA = ta.sma(close, shortSMALength)
longSMA = ta.sma(close, longSMALength)
// Crossover Conditions
longCondition = withinDateRange and ta.crossover(shortSMA, longSMA)
shortCondition = withinDateRange and ta.crossunder(shortSMA, longSMA)
// Entry Logic
if (strategy.position_size == 0) // Only allow new trades if no position is open
if (longCondition)
strategy.entry("Long", strategy.long, tradeSize)
if (shortCondition)
strategy.entry("Short", strategy.short, tradeSize)
// Exit Logic for Long Position
if (strategy.position_size > 0)
strategy.exit("Long exit", "Long", stop=strategy.position_avg_price - trailStopOffset, limit=strategy.position_avg_price + fixedTakeProfit) // Using stop and limit
// Exit Logic for Short Position
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=strategy.position_avg_price + trailStopOffset, limit=strategy.position_avg_price - fixedTakeProfit) // Using stop and limit
// Plot Moving Averages
plot(shortSMA, color=color.blue, title="Short SMA")
plot(longSMA, color=color.black, title="Long SMA")
// Visual Signals
plotshape(series=longCondition and strategy.position_size == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=shortCondition and strategy.position_size == 0, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)