
Chiến lược này sử dụng hệ thống đường trung bình của nhiều axis thời gian, kết hợp với các chỉ số kỹ thuật khác như chỉ số RSI, để thực hiện chuyển đổi tự động nhiều khoảng. Chiến lược được gọi là Multi-Timeframe Moving Average System Trading Strategy.
Các chỉ số trung bình của chiến lược này là hệ thống đường trung bình. Chiến lược sử dụng nhiều chỉ số đường trung bình như JMA, TEMA, DEMA để tính toán xu hướng giá trong các chu kỳ khác nhau như 15 phút, 30 phút, 60 phút. Ví dụ, sử dụng đường trung bình được tính toán bởi JMA trong chu kỳ 15 để đánh giá xu hướng giá trong chu kỳ đó.
Cụ thể, các biến trend, trend2 và trend3 trong chiến lược đại diện cho xu hướng giá 15 phút, 30 phút và 60 phút. Nếu giá đảo ngược trong 15 phút và 30 phút và 60 phút chưa đảo ngược, thì tín hiệu giao dịch sẽ được tạo ra khi phân biệt giữa đường ngắn và đường dài. Nếu tất cả các xu hướng chu kỳ đều đồng nhất, tín hiệu giao dịch sẽ không được tạo ra.
Bằng cách so sánh mối quan hệ giữa nhiều chu kỳ, lọc ra một số tín hiệu giả tạo, tạo ra tín hiệu giao dịch đáng tin cậy hơn, đó là ý tưởng cốt lõi của chiến lược.
Chiến lược này có những lợi thế chính như sau:
Chiến lược này cũng có một số rủi ro:
Đối với những rủi ro trên, chúng ta có thể làm những điều sau đây để giảm thiểu chúng:
Chiến lược này có thể được tối ưu hóa hơn nữa:
Chiến lược này thông qua việc so sánh xu hướng giá theo chiều dài và chiều ngắn, kết hợp với phân tích tổng hợp nhiều chỉ số để tạo tín hiệu giao dịch, thực hiện chuyển đổi tự động nhiều đầu trống, hiệu quả đo lường lại tốt hơn. Chúng tôi cũng thấy rằng có một số không gian cải tiến cho chiến lược này, và trong tương lai có thể tối ưu hóa bằng cách giới thiệu các phương pháp học máy, điểm trượt thích ứng, xác nhận giá và các phương pháp khác để nâng cao hiệu quả thực tế của chiến lược.
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Drexel Strategy", overlay=true )
Length1=7
Length2=9
Multiplier=input(1.5,"Multiplier")
jma(src,length) =>
beta = 0.45*(length-1)/(0.45*(length-1)+2)
alpha = beta
tmp0 = (1-alpha)*src + alpha*nz(tmp0[1])
tmp1 = (src - tmp0[0])*(1-beta) + beta*nz(tmp1[1])
tmp2 = tmp0[0] + tmp1[0]
tmp3 = (tmp2[0] - nz(tmp4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(tmp3[1])
tmp4 = nz(tmp4[1]) + tmp3[0]
JMA = tmp4
JMA
rsx(src,length) =>
f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0
f8 = 100.0*(src)
f18 = 3.0 / (length + 2.0)
f20 = 1.0 - f18
f10 = nz(f8[1])
v8 = f8 - f10
f28 = f20 * nz(f28[1]) + f18 * v8
f30 = f18 * f28 + f20 * nz(f30[1])
vC = f28 * 1.5 - f30 * 0.5
f38 = f20 * nz(f38[1]) + f18 * vC
f40 = f18 * f38 + f20 * nz(f40[1])
v10 = f38 * 1.5 - f40 * 0.5
f48 = f20 * nz(f48[1]) + f18 * v10
f50 = f18 * f48 + f20 * nz(f50[1])
v14 = f48 * 1.5 - f50 * 0.5
f58 = f20 * nz(f58[1]) + f18 * abs(v8)
f60 = f18 * f58 + f20 * nz(f60[1])
v18 = f58 * 1.5 - f60 * 0.5
f68 = f20 * nz(f68[1]) + f18 * v18
f70 = f18 * f68 + f20 * nz(f70[1])
v1C = f68 * 1.5 - f70 * 0.5
f78 = f20 * nz(f78[1]) + f18 * v1C
f80 = f18 * f78 + f20 * nz(f80[1])
v20 = f78 * 1.5 - f80 * 0.5
f0 = ((f88 >= f90_) and (f8 != f10)) ? 1.0 : 0.0
f90 = ((f88 == f90_) and (f0 == 0.0)) ? 0.0 : f90_
v4_ = ((f88 < f90) and (v20 > 0.0000000001)) ? (v14 / v20 + 1.0) * 50.0 : 50.0
rsx = ((v4_ > 100.0) ? 100.0 : (v4_ < 0.0) ? 0.0 : v4_)-50
rsx
xPrice=open
emaA = ema(xPrice, Length2)
Xprice = rsx(open,14)
XPrice = high, xprice = low
xe1 = jma(xPrice, Length1)
xe11 = jma(Xprice[1],Length1)
xe111 = jma(XPrice[1],Length1)
xe1111=jma(xprice[1],Length1)
xe2 = jma(xe1, Length1)
xe21 = jma(xe111, Length1)
xe3 = jma(xe2, Length1)
xe31 = jma(xe1111,Length2)
xe3a = jma(xe2,Length1)
xe4 = jma(xe3, Length1)
xe5 = jma(xe4, Length1)
xe6 = jma(xe5, Length1)
b = 0.7
c1 = -b*b*b
c2 = 3*b*b+3*b*b*b
c3 = -6*b*b-3*b-3*b*b*b
c3a = nz(c3a[1])
c4 = 1+3*b+b*b*b+3*b*b
TEMA = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
DEMA = 2 * emaA - ema(emaA, Length2)
Length(mod)=>(mod*c3a)+Length2
Trend1=TEMA/DEMA
a=rsx(open,Length(2))
b1=rsx(open,Length(3))
c=rsx(open,Length(5))
d=rsx(open,Length(8))
e=rsx(open,Length(13))
f=rsx(open,Length(21))
g=rsx(open,Length(34))
h=rsx(open,Length(55))
i=rsx(open,Length(89))
j=rsx(open,Length(144))
trend1 = (((a-b1)+(c-d)+(e-f)+(g-h)+(i-j))/10)
trend = trend1>0?avg(a,b,c4,c2):trend1==0?XPrice:avg(rsx(open,24),jma(open,24),rsx(jma(open,24),24))
trend2 = trend1>0?avg(d,e,c2,c1):trend1==0?XPrice:avg(rsx(open,48),jma(open,48),rsx(jma(open,48),48))
trend3 = trend1>0?avg(d,e,c2,c1):trend1==0?xprice:avg(rsx(open,96),jma(open,96),rsx(jma(open,96),96))
bc=request.security(syminfo.tickerid,'15',trend)
bc1=request.security(syminfo.tickerid,'15',trend2)
bc2=request.security(syminfo.tickerid,'15',trend3)
bd=request.security(syminfo.tickerid,'30',trend)
bd1=request.security(syminfo.tickerid,'30',trend2)
bd2=request.security(syminfo.tickerid,'30',trend3)
be=request.security(syminfo.tickerid,'60',trend)
be1=request.security(syminfo.tickerid,'60',trend2)
be2=request.security(syminfo.tickerid,'60',trend3)
bf=request.security(syminfo.tickerid,'120',trend)
bf1=request.security(syminfo.tickerid,'120',trend2)
bf2=request.security(syminfo.tickerid,'120',trend3)
bg=request.security(syminfo.tickerid,'240',trend)
bg1=request.security(syminfo.tickerid,'240',trend2)
bg2=request.security(syminfo.tickerid,'240',trend3)
bh=request.security(syminfo.tickerid,'D',trend)
bh1=request.security(syminfo.tickerid,'D',trend2)
bh2=request.security(syminfo.tickerid,'D',trend3)
Trend=((bc-bc1)+(bd-bd1)+(be-be1)+(bf-bf1)+(bg-bg1)+(bh))
Trend11=((bc-bc1)+(bd-bd1)+(be-be1)+(bf-bf1)+(bg-bg1)+(bh1))
Trend33 = max(min(min(min(bc2,bd2),min(be2,bf2)),bg2),bh2)
AverageTrend=sma(Trend1,1000)
StdDev=Multiplier*stdev(Trend1,1000)
TopBand=AverageTrend+StdDev
BotBand=AverageTrend-StdDev
ap=open
n1=10
n2=21
esa1 = jma(ap, n1)
d1 = jma(abs(ap - esa1), n1)
x1 = trend3==Trend33
y1 = trend2==Trend11
ci = (ap - esa1) / (0.015 * d1)
tci = jma(ci, n2)
wt1=tci
wt2=sma(wt1,4)
fast=jma(open,5)
slow=jma(open,13)
macd=fast-slow
signal=sma(macd,4)
WaveTrend1=wt1-wt2
JMACD1=macd-signal
rsi = (((rsi(open,6))-50)*3)
g1=rsi>Trend1 and WaveTrend1>Trend1 and JMACD1>Trend1
h1=g1?tci*c3a:nz(h[1])
strategy.entry("Long",true,when=x1)
strategy.close("Long",y1)
strategy.entry("Short",false,when=y1)
strategy.close("Short",x1)