ATRとT3移動平均戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-17 18:30:48
タグ:

概要

この戦略は,トレンド決定と追跡のためにATRとT3移動平均を組み合わせます.ATRは全体的なトレンド方向を判断するための価格チャネルを形成します.T3移動平均はエントリー信号とストップ損失出口ポイントを提供します.この戦略は安定した利益を求めるトレンドフォロワーに適しています.

戦略の論理

  1. ATRは価格チャネルを形成し,チャネル方向は主要なトレンドを決定します.

  2. 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)



もっと