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


Дата создания: 2024-02-27 16:06:30 Последнее изменение: 2024-02-27 16:06:30
Копировать: 1 Количество просмотров: 780
1
Подписаться
1617
Подписчики

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

Обзор

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

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

В стратегии используются два типа скользящих средних, быстрое и медленное. В частности, длина скользящих средних по умолчанию составляет 25 циклов, а длина медленно движущихся средних по умолчанию составляет 62 цикла. Стратегия позволяет выбирать различные типы скользящих средних, включая SMA, EMA, WMA, RMA и VWMA.

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

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

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

Эта стратегия имеет следующие преимущества:

  1. Простые, понятные и реалистичные идеи
  2. Гибкая параметровая настройка, периодичность и тип медленно-промежуточных настроек
  3. Достоверный индикатор, быстрое и медленное пересечение средних линий для точного определения ценовых тенденций
  4. Автоматизация, без человеческих суждений, снижение психологических факторов
  5. Подходит для нескольких разновидностей, широко используется для таких разновидностей, как биржевые индексы, иностранные валюты, криптовалюты
  6. Легко оптимизируемый, с возможностью настройки параметров в поисках лучшей конфигурации
  7. Расширяемость, используемая в сочетании с другими показателями или стратегиями

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

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

Однако есть и потенциальные риски этой стратегии:

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

Эти риски можно контролировать и улучшать следующими способами:

  1. Фильтрация в сочетании с другими показателями, чтобы избежать ошибочных сообщений, таких как отклонение от показателя
  2. Настройка параметров средней линии, чтобы найти оптимальную комбинацию и снизить вероятность ошибочной сделки
  3. “Стойкость” в условиях кризиса, чтобы избежать больших колебаний
  4. Уменьшение ненужных убытков
  5. Проверка многообразия, оценка риска, предотвращение переоптимизации

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

Основными направлениями оптимизации стратегии являются:

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

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

  3. Комбинации с другими индикаторами или стратегиями: можно попробовать комбинацию с индикаторами волатильности, индикаторами цены или стратегией отслеживания тенденций для повышения эффективности

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

  5. Поддержка моделей ИИ: алгоритмы машинного обучения для анализа больших объемов данных и автоматического поиска оптимальных правил торговли

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

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

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

Исходный код стратегии
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

initial_balance = 100
strategy(title='Fast v Slow Moving Averages Strategy', shorttitle = 'Fast v Slow', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)

//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------

fastBars = input.int(25, "Fast moving average length", minval=1)
slowBars = input.int(62, "Slow moving average length", minval=1)
strategy = input.string("EMA", "MA type", options = ["EMA", "VWMA", "SMA", "RMA", "WMA"])

redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')

startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')

endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')

//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

inDateRange = true

maMomentum = switch strategy
    "EMA" => (ta.ema(close, fastBars) >= ta.ema(close, slowBars)) ? 1 : -1
    "SMA" => (ta.sma(close, fastBars) >= ta.sma(close, slowBars)) ? 1 : -1
    "RMA" => (ta.rma(close, fastBars) >= ta.rma(close, slowBars)) ? 1 : -1
    "WMA" => (ta.wma(close, fastBars) >= ta.wma(close, slowBars)) ? 1 : -1
    "VWMA" => (ta.vwma(close, fastBars) >= ta.vwma(close, slowBars)) ? 1 : -1
    =>
        runtime.error("No matching MA type found.")
        float(na)

fastMA = switch strategy
    "EMA" => ta.ema(close, fastBars)
    "SMA" => ta.sma(close, fastBars)
    "RMA" => ta.rma(close, fastBars)
    "WMA" => ta.wma(close, fastBars)
    "VWMA" => ta.vwma(close, fastBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)
        
slowMA = switch strategy
    "EMA" => ta.ema(close, slowBars)
    "SMA" => ta.sma(close, slowBars)
    "RMA" => ta.rma(close, slowBars)
    "WMA" => ta.wma(close, slowBars)
    "VWMA" => ta.vwma(close, slowBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)

//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(maMomentum, 0)
    if inDateRange
        strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
    if inDateRange
        strategy.close('long')

//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(series = maOn == "On" ? fastMA : na, title = "Fast Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
plot(series = maOn == "On" ? slowMA : na, title = "Slow Moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)