Chiến lược trung bình động ATR và T3

Tác giả:ChaoZhang, Ngày: 2023-09-17 18:30:48
Tags:

Tổng quan

Chiến lược này kết hợp ATR và trung bình động T3 để xác định và theo dõi xu hướng. ATR tạo thành các kênh giá để đánh giá hướng xu hướng tổng thể.

Chiến lược logic

  1. ATR tạo thành các kênh giá, hướng kênh xác định xu hướng chính.

  2. Trung bình di chuyển T3 giúp xác định thời gian nhập khẩu cụ thể, mua trên đường phá giá T3.

  3. Giá phá vỡ dưới dải dưới sẽ kích hoạt thoát khỏi lỗ dừng; phá vỡ trên dải trên sẽ mang lại lợi nhuận.

  4. Tùy chọn giao dịch chỉ dài hoặc hai hướng.

  5. Tối ưu hóa tham số kết hợp với bản chất chỉ số để tìm các thiết lập tối ưu.

Phân tích lợi thế

  1. Các kênh ATR cung cấp xác định xu hướng và hướng rõ ràng.

  2. Các thông số T3 có thể điều chỉnh để ghi lại xu hướng ở các cấp độ khác nhau.

  3. Các quy tắc dừng lỗ và lấy lợi nhuận nhất quán tránh các lối ra tùy ý.

  4. Tần suất giao dịch thấp phù hợp với các chiến lược nắm giữ dài hạn.

Phân tích rủi ro

  1. Sự khác biệt chỉ số có thể gây ra các giao dịch sai.

  2. Không xem xét các mô hình biến động cổ phiếu cá nhân có nguy cơ quá phù hợp.

  3. Tần suất giao dịch thấp có nguy cơ mất cơ hội và tiềm năng lợi nhuận hạn chế.

  4. Việc nắm giữ các vị trí lớn mang lại rủi ro trượt cuối ngày.

Hướng dẫn tối ưu hóa

  1. Thêm các chỉ số khác để đảm bảo tính hợp lệ của giao dịch.

  2. Điều chỉnh tham số cho các sản phẩm khác nhau cải thiện khả năng thích nghi.

  3. Tối ưu hóa kích thước vị trí để cân bằng tần suất và rủi ro.

  4. Hãy xem xét động dừng lỗ và lợi nhuận để mở rộng không gian lợi nhuận.

  5. Thêm các bộ lọc cấp chiến lược để cải thiện độ bền.

Tóm lại

Chiến lược tích hợp ATR và T3 trung bình động để theo dõi xu hướng đơn giản và hiệu quả.


/*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)



Thêm nữa