Количественная торговая стратегия на основе нормализованного MACD


Дата создания: 2023-09-14 20:01:07 Последнее изменение: 2023-09-14 20:01:07
Копировать: 1 Количество просмотров: 1118
1
Подписаться
1617
Подписчики

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

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

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

  1. Вычислить краткосрочные и долгосрочные Hull Moving Averages, чтобы оценить тенденции в зависимости от их перекрестных связей;

  2. вычислить разницу в MACD;

  3. унификационная обработка показателей MACD в течение определенного цикла;

  4. Вычислить среднюю линию для унифицированного MACD, образуя триггер для сделки;

  5. При унифицированном MACD сверху триггер должен быть выровнен, а снизу пуст.

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

  7. Установка стоп-лосс-ограничений, чтобы контролировать риски по отдельным сделкам.

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

Второе: стратегические преимущества

Наибольшим преимуществом этой стратегии является унифицированная обработка, которая позволяет эффективно снизить погрешность MACD и повысить точность сигнала.

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

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

Третье, потенциальные риски

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

Во-первых, параметры сложнее оптимизировать, неправильная настройка может привести к переизмеримости.

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

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

Четвертое содержание.

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

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

//@version=2
// Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420
strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) 
p=input(ohlc4)
jah=input(title="HullMA cross",defval=21)
tsp = input(34,title='Trigger')
np = input(50,title='Normalize')
SL = input(defval=-420.00, title="Stop Loss in $", step=1)
TP = input(defval=31.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(p,round(jah/2))
nma=wma(p,jah)
diff=n2ma-nma
sqn=round(sqrt(jah))
n2ma1=2*wma(p[2],round(jah/2))
nma1=wma(p[2],jah)
diff1=n2ma1-nma1
sqn1=round(sqrt(jah))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
sh=n1
lon=n2
ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist =(MacNorm2-Trigger)
Hist2= Hist>1?1:Hist<-1?-1:Hist
teh=MacNorm2+MacNorm2[2]-MacNorm2[1]
closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1]
if (closelong)
    strategy.close("Long")
closeshort = strategy.openprofit<SL or strategy.openprofit>TP or  teh[1]>Trigger[1] and n1>n2[1]
if (closeshort)
    strategy.close("Short")
longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot 
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot 
if (shortCondition)
    strategy.entry("Short",strategy.short)