다중 시간 프레임과 평균 진폭에 기초한 자이로스코피 밴드 전략

저자:차오장날짜: 2023-11-24 17:29:39
태그:

img

전반적인 설명

이 전략은 다중 시간 프레임과 평균 진폭에 기초한 지로스코피 밴드 전략이라고 불린다. 그것의 주요 아이디어는 가격 궤도에 맞는 가격과 입자 사이의 평균 진폭에 기초한 거래 신호를 구성하는 것입니다.

전략 논리

전략은 먼저 가격 궤도에 맞는 입자를 정의합니다. 중력과 관성의 영향으로 입자의 궤도는 가격 주위를 흔들립니다. 그 다음 입자와 가격 사이의 평균 오차를 계산하고 상위 및 하위 대역을 구성하는 데 사용합니다. 가격이 상위 또는 하위 대역을 통과하면 거래 신호가 생성됩니다.

구체적으로, 전략에서 정의된 입자 위치 공식은 다음과 같습니다.

pos:=if pos<close  
     nz(pos[1])+grav+traj
else
     nz(pos[1])-(grav)+traj 

여기grav입자를 가격에 가깝게 만드는 중력 항을 나타냅니다.traj입자의 움직임 추세를 유지하는 관성 항을 나타냅니다. 이 두 항목의 조합은 입자가 가격 주위를 흔들게합니다.

그러면 평균편차를 계산합니다avgdist가격과 입자 사이로, 그리고 그것을 사용 하 여 상부와 하부 대역을 구성 합니다:

bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)  

마지막으로, 가격이 상위 범위를 초과할 때 장거리, 하위 범위를 초과할 때 단거리로 이동하세요.

장점

전통적인 이동 평균 전략에 비해 이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 입자 궤도를 사용하여 가격 변동을 더 잘 시뮬레이션합니다.
  2. 상부와 하부 대역은 역사적인 평균 진폭에 따라 적응적으로 조정할 수 있으며 이는 돌파구를 포착하는 데 도움이 됩니다.
  3. 멀티 타임 프레임 디자인은 더 많은 거래 기회를 잡기 위해 높은 시간 프레임과 낮은 시간 프레임 사이에 전환 할 수 있습니다.

위험성

이 전략에는 또한 몇 가지 위험이 있습니다.

  1. 입자의 움직임에 대한 부적절한 매개 변수 설정은 잘못된 신호 또는 오류 신호를 일으킬 수 있습니다.
  2. 여러 시간 프레임 사이에 전환할 때 신호 충돌이 발생할 수 있습니다.
  3. 상부 및 하부 대역의 돌파 신호는 스톱 로스 위험을 증가시킬 수 있습니다.

이에 대응하는 위험 관리 조치는 다음과 같습니다: 잘못된 신호를 줄이기 위해 매개 변수를 최적화하고, 명확한 시간 프레임 타이밍 규칙을 정의하고, 적절한 스톱 로스 포지션을 설정합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 입자의 움직임과 관련된 매개 변수를 가격 궤도에 맞게 최적화합니다.
  2. 시간 프레임 계층의 수를 늘려 더 높은 시간 프레임에서 신호를 확인합니다.
  3. 시장의 격렬한 변동에 신호를 피하기 위해 변동성 지표를 추가합니다.
  4. 단일 스톱 손실을 줄이기 위해 스톱 손실 전략을 최적화하십시오.

결론

이 전략은 가격 궤도 적합성을 도입하여 이동 평균 전략을 개선합니다. 적응 매개 변수, 멀티 타임 프레임, 스톱 손실 최적화 등과 같은 기능이 있습니다. 핵심은 가격을 시뮬레이션하기 위해 적합한 입자 운동 방정식을 찾는 것입니다. 추가 테스트와 최적화가 필요하지만 기본 아이디어는 실현 가능하며 추가 연구를 할 가치가 있습니다.


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//2 revert
strategy("Jomy's Gyroscopic Bands",precision=8,commission_value=.03,overlay=true,initial_capital =10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,  pyramiding=0)//,calc_on_order_fills= true, calc_on_every_tick=false) 
leverage=input(1,"leverage")
a=0
a:= if volume > -1
    nz(a[1])+1
else
    nz(a)
    
vara=input(4.0,"variable a (10 to the power of __ ",step=.5)
vara:=pow(10,vara)
varb=input(12,"variable b")
pos=0.0
pos:=if a<=5
    close
else
    nz(pos[1])
grav=1/sqrt((close*close))*vara
traj=0.0
traj:=(nz(close[1])-nz(close[2])+nz(traj[1])*varb)/(varb+1)
pos:=if pos<close
    nz(pos[1])+grav+traj
else
    nz(pos[1])-(grav)+traj

plot(pos,color=color.white)
plot(close)

avgdist=abs(close-pos)
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)

plbbh=plot(bbh,color=color.red)
plbbl=plot(bbl,color=color.red)

long = close>pos
short = close<pos

fill(plbbh,plbbl,color=long?color.lime:color.red)
//bgcolor(close>bbh?color.lime:close<bbl?color.red:na,transp=90)

strategy.entry("Long1",strategy.long,when=long,qty=(strategy.equity*leverage/open)) 
strategy.close("Long1",when=not long)
strategy.entry("Short1",strategy.short,when=short,qty=(strategy.equity*leverage/open)) 
strategy.close("Short1",when=not short)


//plot(strategy.equity,color=color.lime,linewidth=4)

더 많은