Эта стратегия использует индикатор VIDYA (Variable Index Dynamic Average) для определения направления тренда на рынках криптовалют и торгов на основе тренда.
Стратегия сначала рассчитывает индикатор VIDYA. Индикатор VIDYA основан на динамике цен и может быстрее реагировать на изменения тренда. В частности, он сочетает в себе Осиллятор импульса Чанде (CMO) и Простую скользящую среднюю (SMA). CMO измеряет разницу между динамикой вверх и вниз, чтобы измерить силу тренда. SMA сглаживает ценные данные. VIDYA динамически корректирует взвешивание SMA на основе значений CMO, придавая больше веса CMO в начале изменений тренда и больше веса SMA после установления тренда. Таким образом, VIDYA может быстро реагировать на изменения тренда, одновременно сохраняя плавный отслеживание тренда.
После вычисления VIDYA, стратегия оценивает направление тренда на основе кривой VIDYA.
VIDYA быстро реагирует и может зафиксировать изменения тренда раньше, чем традиционные индикаторы, такие как SMA.
Сочетая силу и направление тренда, он может эффективно различать сильные и слабые тенденции и избегать ложных тенденций на различных рынках.
Опираясь исключительно на VIDYA, стратегия становится простой. Нет противоречивых или вводящих в заблуждение сигналов от нескольких индикаторов.
Более длинные настройки VIDYA позволяют отслеживать долгосрочные тенденции и фиксировать основное направление тренда.
Хорошие результаты обратных тестов с положительными ожидаемыми доходами.
VIDYA может отстать в ответе на внезапные рыночные события и упустить краткосрочные торговые возможности.
Длинные настройки VIDYA делают его менее чувствительным к краткосрочным изменениям тренда и могут привести к большему снижению.
Чистое следование тренду плохо работает на нестабильных рынках.
Ограниченные данные обратного теста не могут полностью подтвердить надежность. Параметры нуждаются в итеративной оптимизации и тестировании в режиме реального времени.
Высокая волатильность на крипторынках. Размер позиций и стоп-лосс должны быть тщательно контролированы для строгого управления рисками.
Проверка показателей объема добавления или волатильности для повышения чувствительности к изменениям тренда.
Попробуйте комбинировать VIDYA с другими индикаторами тренда для эффекта ансамбля.
Оптимизируйте стратегию стоп-лосса, чтобы выйти раньше, когда тренд изменится.
Оптимизировать динамическое размещение позиций на основе рыночных условий.
Проверка надежности в разных криптовалютах и временных рамках.
В целом это количественный тренд после стратегии. Он использует индикатор VIDYA для определения направления тренда, просто и эффективно захватывая крипто-тенденции. Но у него также есть некоторые ограничения, которые требуют дальнейшей оптимизации стоп-лосса, размещения позиций и т. Д., Чтобы сделать стратегию более надежной и практически жизнеспособной.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // @version=5 // Author = TradeAutomation strategy(title="VIDYA Trend Strategy", shorttitle="VIDYA Trend Strategy", process_orders_on_close=true, overlay=true, pyramiding=25, commission_type=strategy.commission.percent, commission_value=.075, slippage = 1, initial_capital = 1000000, default_qty_type=strategy.percent_of_equity, default_qty_value=4) // Backtest Date Range Inputs // StartTime = input(defval=timestamp('01 Jan 2000 08:00'), group="Date Range", title='Start Time') EndTime = input(defval=timestamp('01 Jan 2099 00:00'), group="Date Range", title='End Time') InDateRange = true // Strategy Inputs // len = input.int(title="VIDYA Length", defval=50, step=5,group="Trend Settings") src = input.source(title="VIDYA Price Source",defval=ohlc4, group="Trend Settings") // VIDYA Calculations // valpha=2/(len+1) vud1=src>src[1] ? src-src[1] : 0 vdd1=src<src[1] ? src[1]-src : 0 vUD=math.sum(vud1,9) vDD=math.sum(vdd1,9) vCMO=nz((vUD-vDD)/(vUD+vDD)) var VIDYA = 0.0 VIDYA := na(VIDYA[1]) ? ta.sma(src, len) : nz(valpha*math.abs(vCMO)*src)+(1-valpha*math.abs(vCMO))*nz(VIDYA[1]) plot(VIDYA, title="VIDYA",color=(VIDYA > VIDYA[1]) ? color.green : (VIDYA<VIDYA[1]) ? color.red : (VIDYA==VIDYA[1]) ? color.gray : color.black, linewidth=2) // Entry & Exit Signals // if (InDateRange) strategy.entry("Long", strategy.long, when = VIDYA>VIDYA[1]) strategy.close("Long", when = VIDYA<VIDYA[1]) if (not InDateRange) strategy.close_all()