Эта стратегия отслеживает тенденцию путем вычисления двух динамических скользящих средних значений, 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, Тема длины) EMA3 = EMA ((EMA2, Темпа) TEMA = 3EMA1 - 3ЕМА2 + ЕМА3
Когда TEMA пересекает DEMA, это считается золотым крестом, чтобы пойти длинным. Когда TEMA пересекается ниже DEMA, это считается смертным крестом, чтобы пойти коротким.
Кроме того, стратегия устанавливает delayBars для обеспечения действительности сигналов и предотвращения ложных сигналов.
Наконец, стратегия использует логику двойной проверки, которая позволяет проверить, нужно ли закрыть противоположную позицию перед открытием новых сделок, что позволяет избежать риска двойных позиций.
По сравнению с традиционными EMA и SMA, DEMA и TEMA являются более чувствительными динамическими MAs, которые могут быстро улавливать изменения тренда, тем самым повышая точность суждений о тенденциях рынка.
Параметр delayBars заставляет стратегию ждать некоторое время после появления сигнала, прежде чем вводить позиции.
Проверяя, нужно ли закрыть противоположную позицию перед открытием новых сделок, стратегия позволяет избежать двойных позиций и минимизировать потери от хеджирования сделок.
Эта стратегия основывается в основном на перекрестном использовании между МА, общим техническим показателем, для определения тенденций и сигналов.
На рынке с огромными боковыми колебаниями, MAs могут часто пересекаться и генерировать ложные сигналы, которые вызывают убытки.
Решения заключаются в том, чтобы приостановить стратегию при выявлении боковых тенденций или надлежащим образом скорректировать параметры MA и периоды задержки.
Стратегия исключительно отслеживает ценовые тенденции и не может предсказывать краткосрочные ловушки или изменение тренда, вызванное крупными событиями.
Решение заключается в включении других показателей для оценки рисков или в надлежащем сокращении размеров позиций.
Помимо DEMA и TEMA, тестируйте комбинации SMA, EMA и других улучшенных MAs, чтобы найти наиболее подходящие для этого рынка.
Запустить оптимизацию, чтобы найти оптимальные длины MA и периоды задержки сигнала для более точных торговых сигналов.
Учитывая различные характеристики продукта, найдите подходящие комбинации длин MA, периоды задержки для их колебаний цен и тенденций.
Например, используйте полосы Боллинджера для оценки волатильности и уровня цен, чтобы избежать рыночных сборов.
Это базовый тренд, следующий за стратегией, основанной на динамическом перекрестке MA между 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