Эта стратегия рассчитывает пользовательский показатель чистой величины для реализации торговой стратегии покупки на золотом кроссовере и продажи на кроссовере смерти.
Основная логика стратегии заключается в расчете пользовательского индикатора чистого объема (NV). Индикатор NV оценивает направление изменения цен. Если положительный, он принимает дневный объем. Если отрицательный, он принимает отрицательное значение дневного объема. Если неизменный, он принимает 0. Это может более четко отражать связь между изменениями цен и объемом.
Стратегия затем рассчитывает 3-дневную простую скользящую среднюю линию индикатора NV, соответственно, как золотую перекрестную линию и смерть перекрестную линию. Когда индикатор NV проходит через золотую перекрестную линию снизу вверх, идти длинный. Когда NV проходит через смерть перекрестную линию сверху вниз, идти короткий.
Кроме того, стратегия также устанавливает параметризированное время начала и окончания торговли.
Самое большое преимущество этой стратегии заключается в том, что стратегия проста и ясна, легко понятна, гибкие параметры, настраиваемые торговые сорта, часы торговли и т. Д. Кроме того, эта стратегия относится к стратегии, следующей за трендом, которая может эффективно улавливать тенденции цен, уменьшать частоту торговли и достигать более высокой доходности.
Основными рисками этой стратегии являются:
Ежедневная стратегия не может быстро реагировать на изменения ценовых тенденций.
Количественный золотой крест сам по себе имеет определенную истерезу, которая может привести к позднему вхождению и усилению потерь.
Неспособны эффективно фильтровать шум рынка и подвержены ловушкам.
Движущиеся средние могут использоваться динамически в сочетании с другими показателями для снижения рисков.
Стратегия может быть оптимизирована в следующих аспектах:
Увеличьте стратегии стоп-лосса для контроля одиночных потерь с перемещающими методами стоп-лосса, ночных стоп-лосса.
Увеличить показатели фильтрации и использовать MACD, KDJ и другие показатели для фильтрации ложных сигналов и улучшения стабильности стратегии.
Оптимизация параметров, итеративный поиск оптимальной комбинации параметров с помощью генетических алгоритмов, цепочек Маркова и других методов.
Стратегический портфель может быть объединен с другими стратегиями, не связанными друг с другом, для дальнейшей диверсификации рисков и повышения общей доходности.
Эта стратегия реализует простую и эффективную тенденцию, следующую за количественными золотыми крестами. Хотя есть определенная степень гистереза, настройки параметров гибкие и легко понятные. Это стратегия, подходящая для новичков. Благодаря постоянной оптимизации эффект стратегии может постепенно улучшаться и снижаться риск.
/*backtest start: 2023-11-14 00:00:00 end: 2023-11-15 03:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="@DankCoins - Customized Net Volume") src = input(defval = close, title = "VA Source") nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume // Inputs // VHigh = input(defval = 50, title = "VHigh Amount") VLow = input(defval = -50, title = "VLow Amount") // === INPUT BACKTEST RANGE === 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 = 2018, title = "From Year", minval = 2012) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2012) MAV1 = sma(volume, 3) MAV2 = -sma(volume, 3) enterShort = crossunder(nv, MAV1) exitShort = crossunder(nv, MAV2) enterLong = crossover(nv, MAV2) exitLong = crossover(nv, MAV1) // Time Function start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" strategy.entry(id="Long Entry", long=true, when=enterLong and window()) strategy.entry(id="Short Entry", long=false, when=enterShort and window()) strategy.exit("Exit Long", from_entry = "Long Entry", when=exitLong and window()) strategy.exit("Exit Short", from_entry = "Short Entry", when=exitShort and window()) // Plot plot(nv, color=blue, title="NV") plot(VHigh, color=red) plot(VLow, color=red) plot(MAV1, color=green) plot(MAV2, color=green)