
Стратегия представляет собой усовершенствованную торговую систему, основанную на индикаторе Supertrend, сочетающую в себе множественные механизмы подтверждения сигналов и динамическое управление позициями. Суть стратегии заключается в расчете линии Supertrend через ATR (средний истинный диапазон) и генерации торговых сигналов на основе ценовых трендов и временных интервалов удержания для достижения разумного захвата рыночных трендов.
Стратегия использует трехуровневый механизм фильтрации сигналов:
С точки зрения управления капиталом, стратегия использует 15% от капитала счета в качестве объема единой транзакции. Этот консервативный контроль позиций помогает в управлении рисками.
Это стратегия отслеживания тренда с полной структурой и строгой логикой. Она имеет хорошую практическую ценность применения благодаря многочисленным механизмам подтверждения сигнала и полной системе управления рисками. Стратегия обладает высокой масштабируемостью, а ее стабильность и прибыльность могут быть дополнительно улучшены за счет рекомендуемых направлений оптимизации.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Strategy", overlay=true)
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step=0.01)
// Compute supertrend values
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
var float direction = na
if not na(supertrendDirection[1]) and supertrendDirection[1] != supertrendDirection
direction := supertrendDirection > 0 ? 1 : -1
// Variables to track conditions
var int lastShortTime = na
var int lastLongTime = na
// Detecting short and long entries
if direction == -1
strategy.entry("My Short Entry Id", strategy.short)
lastShortTime := bar_index
if direction == 1
strategy.entry("My Long Entry Id", strategy.long)
lastLongTime := bar_index
// Custom signal logic
bool bullishSignal = false
bool bearishSignal = false
// Define bullish signal conditions
if not na(lastShortTime) and (bar_index - lastShortTime >= 15 and bar_index - lastShortTime <= 19)
if close > open and close[1] > open[1] and close[2] > open[2]
bullishSignal := true
// Define bearish signal conditions
if not na(lastLongTime) and (bar_index - lastLongTime >= 15 and bar_index - lastLongTime <= 19)
if close < open and close[1] < open[1] and close[2] < open[2]
bearishSignal := true
// Plot signals
if bullishSignal
strategy.entry("Bullish Upward Signal", strategy.long)
label.new(bar_index, close, text="Bullish", style=label.style_circle, color=color.green, textcolor=color.white)
if bearishSignal
strategy.entry("Bearish Downward Signal", strategy.short)
label.new(bar_index, close, text="Bearish", style=label.style_circle, color=color.red, textcolor=color.white)
// Optionally plot the strategy equity
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)