Многоуровневая стратегия пересечения скользящей средней для квантовых мастеров

Автор:Чао Чжан, Дата: 2024-01-12 12:11:02
Тэги:

img

Обзор

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

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

Стратегия использует три набора скользящих средних: быстрый скользящий средний MAshort, средний скоростной скользящий средний MAmid и медленный скользящий средний MAlong. MAshort имеет параметр 9, отвечает самым быстрым и используется для захвата краткосрочных сигналов; MAmid имеет параметр 50, имеет среднюю скорость и используется для подтверждения тренда; MAlong имеет параметр 100, отвечает самым медленным и используется для определения долгосрочного направления тренда.

Конкретная логика торговли стратегии заключается в следующем: когда линия средней скорости MAmid пересекает линию медленной скользящей средней MAlong, это указывает на то, что формируется подъемный импульс цены акции. В это время стратегия идет на длинный; когда быстрая скользящая средняя MAshort пересекает линию MAmid ниже средней скорости, это указывает на то, что произошло краткосрочное изменение тренда, и стратегия выходит из своей позиции в это время.

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

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

Преимущества этой стратегии:

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

Анализ рисков

Эта стратегия также сопряжена со следующими рисками:

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

Для решения этих рисков мы будем расширять применение стратегии, контролируя максимальное снижение с помощью методов стоп-лосса.

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

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

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

Резюме

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


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 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/
// © Coinrule

//@version=4
strategy(shorttitle='Multi Moving Average Crossing',title='Multi Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//MA inputs and calculations
inlong=input(100, title='MAlong')
inmid=input(50, title='MAmid')
inshort=input(9, title='MAfast')

MAlong = sma(close, inlong)
MAshort= sma(close, inshort)
MAmid= sma(close, inmid)


//Entry 
bullish = crossover(MAmid, MAlong)

strategy.entry(id="long", long = true, when = bullish and window())

//Exit
bearish = crossunder(MAshort, MAmid)

strategy.close("long", when = bearish and window())

plot(MAshort, color=color.orange, linewidth=2)
plot(MAmid, color=color.red, linewidth=2)
plot(MAlong, color=color.blue, linewidth=2)


Больше