Количественная стратегия "Золотого креста"

Автор:Чао Чжан, Дата: 2023-11-22 14:39:33
Тэги:

img

Обзор

Эта стратегия рассчитывает пользовательский показатель чистой величины для реализации торговой стратегии покупки на золотом кроссовере и продажи на кроссовере смерти.

Принцип стратегии

Основная логика стратегии заключается в расчете пользовательского индикатора чистого объема (NV). Индикатор NV оценивает направление изменения цен. Если положительный, он принимает дневный объем. Если отрицательный, он принимает отрицательное значение дневного объема. Если неизменный, он принимает 0. Это может более четко отражать связь между изменениями цен и объемом.

Стратегия затем рассчитывает 3-дневную простую скользящую среднюю линию индикатора NV, соответственно, как золотую перекрестную линию и смерть перекрестную линию. Когда индикатор NV проходит через золотую перекрестную линию снизу вверх, идти длинный. Когда NV проходит через смерть перекрестную линию сверху вниз, идти короткий.

Кроме того, стратегия также устанавливает параметризированное время начала и окончания торговли.

Преимущества стратегии

Самое большое преимущество этой стратегии заключается в том, что стратегия проста и ясна, легко понятна, гибкие параметры, настраиваемые торговые сорта, часы торговли и т. Д. Кроме того, эта стратегия относится к стратегии, следующей за трендом, которая может эффективно улавливать тенденции цен, уменьшать частоту торговли и достигать более высокой доходности.

Риски стратегии

Основными рисками этой стратегии являются:

  1. Ежедневная стратегия не может быстро реагировать на изменения ценовых тенденций.

  2. Количественный золотой крест сам по себе имеет определенную истерезу, которая может привести к позднему вхождению и усилению потерь.

  3. Неспособны эффективно фильтровать шум рынка и подвержены ловушкам.

Движущиеся средние могут использоваться динамически в сочетании с другими показателями для снижения рисков.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Увеличьте стратегии стоп-лосса для контроля одиночных потерь с перемещающими методами стоп-лосса, ночных стоп-лосса.

  2. Увеличить показатели фильтрации и использовать MACD, KDJ и другие показатели для фильтрации ложных сигналов и улучшения стабильности стратегии.

  3. Оптимизация параметров, итеративный поиск оптимальной комбинации параметров с помощью генетических алгоритмов, цепочек Маркова и других методов.

  4. Стратегический портфель может быть объединен с другими стратегиями, не связанными друг с другом, для дальнейшей диверсификации рисков и повышения общей доходности.

Заключение

Эта стратегия реализует простую и эффективную тенденцию, следующую за количественными золотыми крестами. Хотя есть определенная степень гистереза, настройки параметров гибкие и легко понятные. Это стратегия, подходящая для новичков. Благодаря постоянной оптимизации эффект стратегии может постепенно улучшаться и снижаться риск.


/*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)

Больше