Стратегия движущихся средних ATR и T3

Автор:Чао Чжан, Дата: 2023-09-17 18:30:48
Тэги:

Обзор

Эта стратегия сочетает в себе движущуюся среднюю ATR и T3 для определения и отслеживания тренда. ATR формирует ценовые каналы для оценки общего направления тренда.

Логика стратегии

  1. ATR формирует ценовые каналы, направление канала определяет основной тренд.

  2. Движущаяся средняя T3 помогает определить конкретное время входа, покупая на ценовой линии T3.

  3. Прорыв цены ниже нижнего диапазона запускает выход стоп-лосса; прорыв выше верхнего диапазона приводит к прибыли.

  4. Опционы на длинную или двунаправленную торговлю.

  5. Оптимизация параметров в сочетании с характером индикатора для поиска оптимальных настроек.

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

  1. ATR-каналы дают четкое определение тренда и направления.

  2. Регулируемые параметры T3 для отслеживания тенденций на разных уровнях.

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

  4. Низкая частота торговли подходит для долгосрочных стратегий хелдинга.

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

  1. Дивергенция показателей может привести к неправильным сделкам.

  2. Если не учитывать индивидуальные модели волатильности акций, то возникает риск перенастройки.

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

  4. Большие позиции приводят к риску сдвига в конце дня.

Руководство по оптимизации

  1. Добавить другие показатели для обеспечения действительности торговли.

  2. Настройка параметров для различных продуктов улучшает адаптивность.

  3. Оптимизируйте размер позиций, чтобы сбалансировать частоту и риск.

  4. Подумайте о динамическом стоп-лосе и получении прибыли для расширения возможности получения прибыли.

  5. Добавить фильтры на уровне стратегии для повышения надежности.

Резюме

Стратегия объединяет движущиеся средние ATR и T3 для простого и эффективного отслеживания тренда.


/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-16 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Author - CryptoJoncis
strategy("ATR and T3 strategy", shorttitle="AT3S_CryptoJoncis", overlay=true)

shorting = input(false, title="shorts on?")
precentage_diff = input(5,title="Precantage")/100
Lengthx = input(25, title="Lenght of T3")

//For best results use 0.7 or 0.618
Vfactx = input(0.72, minval=0.01,step=0.01, title="Volume Factor of T3 with HA source")

Source_of_T3_Normal = close
Source_of_T3 =  Source_of_T3_Normal 
FirstEMAx = ema(Source_of_T3, Lengthx)
SecondEMAx = ema(FirstEMAx, Lengthx)
ThirdEMAx = ema(SecondEMAx, Lengthx)
FourthEMAx = ema(ThirdEMAx, Lengthx)
FifthEMAx = ema(FourthEMAx, Lengthx)
SixthEMAx = ema(FifthEMAx, Lengthx)

//Doing all the calculations which are from 
c1x = -Vfactx*Vfactx*Vfactx
c2x = 3*Vfactx*Vfactx + 3*Vfactx*Vfactx*Vfactx
c3x = -6*Vfactx*Vfactx -3*Vfactx -3*Vfactx*Vfactx*Vfactx
c4x = 1 + 3*Vfactx + Vfactx*Vfactx*Vfactx + 3*Vfactx*Vfactx

//Assigning EMAS to T3 Moving average
T3MAx = c1x * SixthEMAx + c2x * FifthEMAx + c3x * FourthEMAx + c4x * ThirdEMAx

color_of_Tilson_Moving_Average = T3MAx > T3MAx[1] ? lime : red
plot(T3MAx, title="Tilson Moving Average(ema)", color=color_of_Tilson_Moving_Average)

t_up = T3MAx + (T3MAx * precentage_diff)
t_dn = T3MAx - (T3MAx * precentage_diff)

x=plot(t_up, color=color_of_Tilson_Moving_Average)
z=plot(t_dn, color=color_of_Tilson_Moving_Average)
fill(x,z, color= T3MAx[1] < T3MAx ? lime : gray)

Factor=input(5, minval=1)
Pd=input(5, minval=1)
//

Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))


TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

linecolor = Trend == 1 ? green : red
//
b=plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "")

Factor1=input(1, minval=1)
Pd1=input(1, minval=1)
//

Up1=hl2-(Factor1*atr(Pd1))
Dn1=hl2+(Factor1*atr(Pd1))


TrendUp1=close[1]>TrendUp1[1]? max(Up1,TrendUp1[1]) : Up1
TrendDown1=close[1]<TrendDown1[1]? min(Dn1,TrendDown1[1]) : Dn1

Trend1 = close > TrendDown1[1] ? 1: close< TrendUp1[1]? -1: nz(Trend1[1],1)
Tsl1 = Trend1==1? TrendUp1: TrendDown1

linecolor1 = Trend1 == 1 ? green : red
//
a=plot(Tsl1, color = linecolor1 , style = line , linewidth = 2,title = "")

long = (close > Tsl and close > Tsl1 and close > T3MAx)

short = (close < Tsl and close < Tsl1 and close < T3MAx)

if(shorting==true)
    strategy.entry("MacdSE", strategy.short, comment="Open Short", when=short)
    strategy.entry("MacdLE", strategy.long, comment="Open Long", when=long)
    strategy.close("MacdLE", when=hl2 < t_dn)
    strategy.close("MacdSE", when=hl2 > t_up)
if(shorting==false)
    strategy.entry("MacdLE", strategy.long, comment="Open Long", when=long)
    strategy.close("MacdLE", when=hl2 < t_dn)
fill(a,b,color=linecolor)



Больше