Стратегия Double HULL скользящей средней


Дата создания: 2023-09-15 16:39:48 Последнее изменение: 2023-09-15 16:43:45
Копировать: 0 Количество просмотров: 1525
1
Подписаться
1617
Подписчики

Принцип стратегии:

Двойная HULL-движущаяся средняя стратегия - это торговая стратегия, основанная на показателе HULL-движущейся средней, созданном Аланом HULL. Эта стратегия использует два HULL-движущихся средних, одну долгосрочную и одну краткосрочную, для определения времени покупки и продажи.

Формула расчета HULL Moving Average выглядит следующим образом:

HmaL = wma(2*wma(close, round(PDL/2)) - wma(close, PDL), round(sqrt(PDL)))
HmaS = wma(2*wma(close, round(PDS/2)) - wma(close, PDS), round(sqrt(PDS)))

В них PDL обозначает длительный период, а PDS - короткий период. Стратегия определяет условия покупки и продажи, сравнивая значения короткой и долгой линий.

Анализ силы:

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

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

  1. Рыночные потрясения: в период рыночных потрясений, скользящие средние могут часто пересекаться, что приводит к частым сигналам о покупке и продаже, что может привести к ошибочным сигналам, что приводит к частым сделкам и потерям.
  2. Скольжение и задержка: исполнение стратегии подвержено скольжению и задержке, особенно в высокочастотных сделках, что может привести к тому, что цена исполнения не будет соответствовать ожидаемой цене, что повлияет на результаты торгов.
  3. Зависимость от одного показателя: стратегия опирается только на показатель HULL Moving Average, который не может быть полностью захвачен изменениями и тенденциями рынка без использования других технических показателей или рыночной информации.

В заключение:

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

Исходный код стратегии
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Credit Indicator from KIVANC
// author and idea: KIVANC @fr3762 on twitter
// creator: Alan HULL
// 
strategy("Double HULL Moving Average Strategy", overlay=true)
PDL=input(title="LongerPeriod", defval=21, minval=1,maxval=500)
PDS=input(title="ShorterPeriod",  defval=8, minval=1,maxval=500)

// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

HmaL=wma(2*wma(close,round(PDL/2))-wma(close,PDL),round(sqrt(PDL)))
HmaS=wma(2*wma(close,round(PDS/2))-wma(close,PDS),round(sqrt(PDS)))
plot(HmaL,color=red, linewidth=2)
plot(HmaS,color=blue, linewidth=2)

Buy = HmaS > HmaL
Sell = HmaS < HmaL

strategy.entry("Buy",true,when=window() and Buy)
strategy.close_all(when=window() and Sell)