Стратегия следования за трендом, основанная на стандартном отклонении объема


Дата создания: 2023-11-21 11:11:51 Последнее изменение: 2023-11-21 11:11:51
Копировать: 0 Количество просмотров: 706
1
Подписаться
1617
Подписчики

Стратегия следования за трендом, основанная на стандартном отклонении объема

Обзор

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

Стратегический принцип

Основная логика заключается в построении моделей объемов сделок и определении тенденций цен.

  1. Построение модели объема сделок
    • Расчет объема сделок с использованием движущейся средней VAVG длиной 40 циклов в качестве ориентира для объема сделок
    • Расчет объема сделки со стандартным отклонением длиной в 40 циклов vsd как диапазон нормального колебания объема сделки
    • Вычислить объем сделки в качестве последнего уровня объема сделки в виде движущейся средней VAVGN с длиной 5 циклов
    • Настройка минимального количества сделок
    • Установите максимальный uplimit для объема сделки в видеvavg плюс дважды vsd
  2. Определение ценовых тенденций
    • Расчет цены на 20-циклическую длину движущейся средней mavg в качестве индикатора ценовой тенденции
  3. Сигналы торговли
    • Когда mavg пересекает свой предыдущий день, сделайте больше, еслиvavgn выше lowlimit
    • Когда mavg пересекает свой предыдущий день, пустовать в случае, еслиvavgn выше lowlimit
    • Если mavg изменит тренд, то он станет ничтожным

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

Анализ преимуществ стратегии

  1. В сочетании с изменениями в объеме торгов можно определить тенденцию цен, отфильтровать некоторые ложные сигналы и сделать сигналы более надежными.
  2. Использование стандартной разницы в объемах сделок для построения моделей объемов сделок, чтобы избежать влияния экстремальных изменений объемов сделок
  3. Параметры скользящей средней могут быть изменены в зависимости от изменения цены в разных периодах

Анализ стратегических рисков

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

Решение риска:

  1. Применение параметров скользящих средних для оптимизации модели
  2. Присоединение логики стоп-лост, чтобы контролировать одиночные потери

Направление оптимизации стратегии

  1. Добавление дополнительных показателей для определения ценовых тенденций, чтобы сделать сигналы более точными и надежными
  2. Добавление модулей машинного обучения, обучение объемов сделок и параметров ценовой модели на основе данных
  3. Дополнительная логика сдерживания убытков, предотвращающая слишком большие убытки
  4. Оптимизация логики входа, чтобы обеспечить более высокую вероятность захвата тенденции
  5. Автоматическая коррекция стоп-дистанции в сочетании с аналогичными ATR показателями

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © dongyun

//@version=4
strategy("交易量底部标准差系统", overlay=true)

options = input(1,'')
length = input(40,'')
nlow = input(5,'')
factor = input(1.0,'')

vavg = 0.0
vavgn = 0.0
vsd = 0.0
lowlimit = 0.0
uplimit = 0.0
mavg = 0.0
aror = 0.0
adjvol = 0.0
savevol = 0.0


//Find average volume, replacing bad values
adjvol := volume

if (volume != 0)
	savevol := volume
else
	savevol := savevol[1]
	adjvol := savevol


// Replace high volume days because they distort standard deviation
if (adjvol > 2 * factor * nz(vsd[1]))
	adjvol := savevol
else
	adjvol := adjvol[1]

vavg := sma(adjvol,length)
vsd := stdev(adjvol,length)
vavgn := sma(adjvol,nlow)

// Extreme volume limits
lowlimit := vavg - factor * vsd
uplimit := vavg + 2 * factor * vsd

// System rules based on moving average trend
mavg := sma(close,length/2)

// Only enter on new trend signals
if (options == 2)
	if (mavg > mavg[1] and mavg[1] <= mavg[2])
		strategy.entry("Long", strategy.long)
	if (mavg<mavg[1] and mavg[1]>=mavg[2])
		strategy.entry("Short", strategy.short)
else
	if (mavg > mavg[1] and vavgn > lowlimit)
		strategy.entry("Long", strategy.long)
	if (mavg < mavg[1] and vavgn > lowlimit)
		strategy.entry("Short", strategy.short)

// Exit on low volume
if (options != 1)
	if (mavg<mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Long")
	if (mavg>mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Short")
else
	if (mavg < mavg[1])
		strategy.close("Long")
	if (mavg > mavg[1])
		strategy.close("Short")