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

Автор:Чао Чжан, Дата: 2023-11-21 11:11:51
Тэги:

img

Обзор

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

Логика стратегии

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

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

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

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

  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")

Больше