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


Дата создания: 2023-12-08 15:45:47 Последнее изменение: 2023-12-08 15:45:47
Копировать: 0 Количество просмотров: 673
1
Подписаться
1621
Подписчики

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

Обзор

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

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

Эта стратегия основана на пересечении двух динамических равновесных линий DEMA и TEMA для определения направления тренда.

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

DEMA = 2*EMA(CLOSE,N) - EMA(EMA(CLOSE,N),N)

Здесь N - это Demalength.

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

EMA1 = EMA(CLOSE,Temalength)
EMA2 = EMA(EMA1,Temalength)
EMA3 = EMA(EMA2,Temalength)
TEMA = 3*EMA1 - 3*EMA2 + EMA3

Когда TEMA пересекает DEMA, рассматривается как золотой форк, сделайте больше; когда TEMA пересекает DEMA, рассматривается как мертвый форк, сделайте пустоту.

Кроме того, в стратегии также установлены delayBars, чтобы гарантировать эффективность сигнала и предотвратить появление ложного сигнала. Он требует непрерывного цикла для запуска после запуска GoldFork или DeadFork.

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

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

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

DEMA и TEMA - динамические равнолинии, более чувствительные по сравнению с традиционными EMA и SMA, способные быстрее улавливать изменения в тренде, что повышает точность оценки движения рынка.

  1. Настройка определенного периода задержки для фильтрации фальшивых сигналов

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

  1. Двойная проверка снижает риск

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

  1. Сильная универсальность

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

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

  1. “Очень легко поддаться на рыночные колебания”

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

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

  1. Невозможность распознать ловушку или внезапное событие

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

Решение заключается в сочетании с другими показателями для оценки рискового фона или в соответствующем сокращении размеров позиций.

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

  1. Испытание большего количества среднелинейных показателей

Помимо DEMA и TEMA, можно также тестировать комбинации SMA, EMA и других улучшенных средних линий, чтобы найти средние показатели, которые лучше соответствуют рынку.

  1. Оптимизация параметров MA и циклов задержки

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

  1. Различные сорта подходят под разные параметры

В зависимости от особенностей разновидности, найдите комбинацию параметров средней линии и задержки цикла, подходящих для их диапазона колебаний и тенденций.

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

Например, индикаторы Bollinger Bands определяют волатильность и положение цен, чтобы избежать попадания в шок-ловушку; в сочетании с энергетическими показателями оценки надежности тренда.

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

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

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

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jacobdickson255

strategy("Crypto Bull Run Tracker", overlay=true, pyramiding=0)

//Dema Scripting
Demalength = input.int(230, minval=1)
src = close
e1 = ta.ema(src, Demalength)
e2 = ta.ema(e1, Demalength)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=#43A047)

//Tema Scripting
Temalength = input.int(210, minval=1)
ema1 = ta.ema(close, Temalength)
ema2 = ta.ema(ema1, Temalength)
ema3 = ta.ema(ema2, Temalength)
tema = 3 * (ema1 - ema2) + ema3
plot(tema, "TEMA", color=#2962FF)

delayBars = input(5, title="Bar Delay")
var int lastTradeBar = na

longCondition = ta.crossover(tema, dema) 
longExit = ta.crossunder(tema, dema)
shortCondition = ta.crossunder(tema, dema)
shortExit = ta.crossover(tema, dema)

// Exit conditions should be checked before entry conditions
// Close short position if a long condition is present
if ((shortExit and strategy.position_size < 0)) // If conditions for exiting the short are met, and there is a balance in the short direction, exit the short
    strategy.close("Short")
   

// Close long position if a short condition is present
if ((longExit and strategy.position_size > 0))
    strategy.close("Long")
   
// Now check for entry conditions
if (longCondition)
    strategy.entry("Long", strategy.long)
    lastTradeBar := bar_index

if (shortCondition)
    strategy.entry("Short", strategy.short)
    lastTradeBar := bar_index