
이 전략은 궤적의 평균 진동에 기반한 다중 시간 거래 전략이라고 불린다. 그것의 주요 아이디어는 가격 궤도에 맞는 입자를 도입하여, 입자와 가격 사이의 평균 진동에 기반한 거래 신호를 구축하는 것이다.
이 전략은 우선 가격 궤도에 부합하는 입자를 정의한다. 이 입자는 중력과 관성의 영향을 받으며, 그것의 운동 궤도는 가격을 중심으로 변동한다. 그리고는 입자와 가격 사이의 평균 오차 거리를 계산하고, 이를 바탕으로 상하 궤도를 구성한다. 가격이 상하 궤도를 돌파할 때 거래 신호를 발산한다.
구체적으로, 정책에서 정의된 입자 위치 공식은:
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)
마지막으로, 가격이 상단선보다 높을 때 더 많이 하고, 하단선보다 작을 때 더 적게 한다.
전통적인 이동 평균 전략에 비해 이 전략은 다음과 같은 장점이 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이에 대응하는 위험 관리 조치에는 가짜 신호를 줄이기 위해 파라미터를 최적화하고, 명확한 시간 프레임워크 선택 규칙을 정의하고, 적절한 스톱 포지션을 설정하는 등이 포함됩니다.
이 정책은 다음과 같은 부분에서 최적화될 수 있습니다.
이 전략은 가격 궤도 모형을 도입함으로써 이동 평균 전략을 개선하고, 변수 자조, 다중 시간 프레임, 스톱 로즈 최적화 등의 특징을 가지고 있다. 그것의 핵심은 가격을 모의하기 위해 적절한 입자 운동 방정식을 찾는 데 있다. 추가 테스트와 최적화가 필요하지만, 기본 아이디어는 실행 가능하며, 추가 연구를 할 가치가 있다.
/*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)