Esta estratégia adota um sistema de média móvel de vários prazos, combinado com o RSI e outros indicadores técnicos, para alcançar a mudança automática entre posições longas e curtas.
Os principais indicadores desta estratégia são o sistema de média móvel. A estratégia usa múltiplos indicadores de média móvel, como JMA, TEMA, DEMA, para calcular as tendências de preços em diferentes períodos, como 15min, 30min, 60min. Por exemplo, a tendência MA calculada pela JMA no prazo de 15min representa o julgamento da tendência de preço dentro desse prazo. Em seguida, a estratégia compara as tendências de preços entre diferentes prazos para identificar divergências entre tendências mais longas e mais curtas. Se divergências significativas forem detectadas, serão gerados sinais de negociação. Além disso, a estratégia também incorpora outros indicadores como RSI e Tendência de onda para garantir a confiabilidade dos sinais de negociação.
Especificamente, as variáveis tendência, tendência2 e tendência3 na estratégia representam tendências de preços dos intervalos de tempo de 15min, 30min e 60min, respectivamente. Se houver uma inversão de preço de 15min, enquanto 30min e 60min ainda não se inverteram, ela é julgada como uma divergência entre tendências mais curtas e mais longas, produzindo assim um sinal de negociação. Não serão gerados sinais se as tendências de todos os intervalos de tempo forem consistentes.
Ao comparar as relações entre vários prazos e filtrar alguns sinais falsos, sinais de negociação mais confiáveis podem ser gerados
As principais vantagens desta estratégia são:
Há também alguns riscos com esta estratégia:
Podemos tomar as seguintes medidas para mitigar os riscos acima:
A estratégia pode ser melhorada:
Esta estratégia compara as tendências de preços de vários prazos para identificar relações de longo prazo versus de curto prazo e gera sinais de negociação através da análise de múltiplos indicadores
/*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)