Эта стратегия представляет собой следующую стратегию тренда, которая торгуется на основе индикатора Smeared Variability Channel Index (Smeared VCI) по вителоту. Она сочетает в себе суждение о тренде скользящих средних и суждение о перекупе/перепродаже VCI, чтобы поймать основное направление тренда цен. Когда цены попадают в статус перекупленности или перепродажи, обратные операции используются для получения прибыли.
Стратегия использует индикатор VCI для определения направления тренда. Индикатор VCI состоит из трех параметров: быстрая EMA, медленная EMA и период сглаживания. Когда быстрая EMA превышает медленную EMA, она является быстрой, в противном случае она является медленной.
В стратегии установлены два условия:
Пересечение VCI над линией триггера - это длинный сигнал, а пересечение ниже - короткий сигнал.
Торгуйте только в пределах временного окна обратного тестирования.
Когда оба условия выполнены, будет занята длинная или короткая позиция. Выход при запуске стоп-лосса или появлении обратного сигнала.
Преимущества этой стратегии:
Используя индикатор, следующий за тенденцией, он может эффективно отслеживать тенденции.
Процесс сглаживания уменьшает ложные сигналы.
Обратное тестирование в рамках временного окна фокусируется на конкретном периоде.
Стоп-лосс контролирует риск.
Использование параметров показателей для длинного/короткого решения делает правила простыми и ясными.
В этой стратегии также есть некоторые риски:
Оценка тренда может быть неправильной, что приводит к потерям.
Неправильное установление параметров показателей может привести к низкой рентабельности.
Слишком маленькая установка стоп-лосса может привести к быстрому остановке.
Неправильное временное окно обратного тестирования может привести к искаженным результатам тестирования.
Слишком частые длительные/короткие переключения могут привести к давлению комиссии.
Стратегия может быть оптимизирована в следующих аспектах:
Испытайте различные комбинации параметров, чтобы найти оптимальные параметры.
Для повышения точности используйте другие индикаторы для подтверждения.
Оптимизировать алгоритм стоп-лосса для достижения динамического стоп-лосса.
Оптимизировать условия входа, чтобы избежать переоценки.
Проверьте более длительные окна времени для проверки стабильности.
Включите другие факторы, такие как объем, чтобы улучшить точность решения.
В общем, это относительно простая стратегия следования тренду. Он использует индикатор Smeared VCI для определения направления тренда и открытых позиций при генерировании торговых сигналов. Риск контролируется путем остановки потери. Стратегия имеет возможность следования тренду, но также имеет некоторые риски. Дальнейшие улучшения могут быть сделаны посредством оптимизации параметров, оптимизации остановки потери и добавления подтверждающих условий, чтобы сделать ее стабильной и надежной торговой системой.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Smeared VCI Backtest", overlay=false, shorttitle="SVCI Backtest", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5) // Smeared Variability Channel Index // a variation of the VCI indicator of the same author. // The orange line over the lime line is bullish; // The lime line over the orange one is bearish. // // vitelot/yanez/Vts // Feb 2019 // src = close ep1 = input(5, minval=1, title="Fast EMA period") ep2 = input(13, minval=2, title="Slow EMA period") sm = input(34, minval=1, title="Smearing period") tp = input(13, minval=1, title="Trigger line period") fixedSL = input(title="SL Activation", defval=300) trailSL = input(title="SL Trigger", defval=1) fixedTP = input(title="TP Activation", defval=150) trailTP = input(title="TP Trigger", defval=1) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2017) ToMonth = input(defval = 6, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 19, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2030, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window startTimeOk() => time >= start and time <= finish ? true : false // create function "within window of time" if statement true atrP = 96 e1 = ema(src,ep1) e2 = ema(src,ep2) vci = (e1-e2)/atr(atrP) svci = sma(vci,sm) t = sma(svci,tp) plot(svci, color=lime, linewidth=3, transp=0, title="Smeared VCI") plot(t, color=orange, linewidth=3, transp=0, title="Trigger line") hline(0, title="Reference line") long = crossover(svci,t) short = crossover(t,svci) // === STRATEGY - LONG POSITION EXECUTION === strategy.entry("Long", strategy.long, when= long and startTimeOk()) strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.exit("Exit", when= short) // === STRATEGY - SHORT POSITION EXECUTION === strategy.entry("Short", strategy.short, when= short and startTimeOk()) strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.exit("Exit", when= long)