이 전략은 다주기 자율적 이동 평균과 오차 리스크 평가 지표를 사용하여 시장 운영의 분형 지점과 결합하여 움직임 예측과 거래 신호 출력을 수행한다. 이 전략은 ?? 다주기 자율적 움직임 예측 전략 ?? 이라고 불린다.
전략의 핵심 논리는 두 개의 주선으로 나다. 첫 번째 주선은 다양한 파라미터를 이용한 자기 적응 이동 평균 (nAMA) 을 이용한 다주기 필터링 판단 시스템을 구축하는 것이고, 두 번째 주선은 다양한 파라미터를 이용한 오프라인 위험 평가 시스템 (out) 을 이용한 다주기 위험 평가 시스템을 구축하는 것이다. 마지막으로 두 가지 주선을 조합하여, 짧은 주기 주기선이 긴 주기선을 초과할 때 구매 신호를 발생시킨다. 짧은 주기선보다 낮은 긴 주기선에서 판매 신호를 발생시킨다.
구체적으로, 첫 번째 메인 라인에서는 각각 10주기 및 4.24 변수의 적응 이동 평균을 설정한다. 두 번째 메인 라인에서는 각각 7주기 및 4.300 변수의 오차 리스크 평가 라인을 설정한다. 마지막으로 첫 번째 메인 라인에서의 10주기 라인을 두 번째 메인 라인에서의 31주기 라인과 비교하여 거래를 형성한다. 신호는 10주기 라인 상에서 31주기 라인을 통과하면 구매 신호를 발생시킨다.
또한, 전략에는 양값 확인 모듈이 설정되어 있습니다. 거래량이 6주기 평균 거래량보다 크면 거래 신호가 유효합니다. 이것은 허위 신호를 어느 정도 필터링 할 수 있습니다. 마지막으로, 전략에는 다양한 주기 레벨의 분류 포인트가 표시되어 참조 신호입니다.
이 전략의 가장 큰 장점은 다중주기 자조 구조의 사용에 있다. 시장의 운행에 따라 자조한 파라미터, 동적으로 조정하는 사이클을 사용할 수 있다. 트렌드 장이나 충격 영역에서든 적절한 파라미터 사이클 조합을 찾을 수 있어 전략의 트렌드 캡처 능력을 향상시킬 수 있다.
또한, 전략은 분기선 위험 평가 시스템을 사용하여 다중 주기 연립 필터링을 수행하여 거래 위험을 효과적으로 제어하고 고위험 단계에서 포지션을 구축하는 것을 피할 수 있습니다. 또한, 전략은 양이 부족하면 잘못된 신호를 발생하지 않도록 양 가격 필터링 조건을 설정합니다.
이 전략의 가장 큰 위험은 여러 주기선들의 동방향 판단이 필요하기 때문에 단기 reversing market에 대한 포착 능력이 떨어진다. 짧은 주기선과 긴 주기선들이 동시에 변할 때 불분명한 신호가 발생하기 쉽다. 파라미터 사이클을 줄임으로써 최적화할 수 있다.
또한, 적응형 이동 평균과 오차 리스크 평가 시스템의 주력 주기는 대盘에 비해 짧고, 더 긴 수준의 드라이브 아래에는 약간의 지연성이 존재한다. 주력 주기를 적절히 연장하여 지연성을 줄일 수 있다.
이동 평균과 오차 리스크 평가 선에 적응하는 주력 주기 변수를 줄여서 5주기 및 20주기로 변경하여 단기 시장 반전의 포착을 향상시킵니다.
주력 사이클 파라미터를 20 사이클과 50 사이클로 늘리고, 더 높은 수준의 시장 주도 하에서의 지연성을 줄인다.
거래 통로 파라미터를 최적화하여 0.5배의 ATR 통로로 변경하여 노이즈 거래의 가능성을 줄였습니다.
MACD와 같은 결과 검증 지표를 추가하여 신호의 신뢰도를 높인다.
이 전략은 적응형 이동 평균, 사각지대 위험 평가 및 측량 분석과 같은 여러 가지 기술 지표를 종합적으로 적용하여 다주기 적응형 거래 의사 결정 시스템을 구축합니다. 매개 변수의 최적화된 조정을 통해 다양한 유형의 시장에 적용할 수 있으며, 트렌드 및 지역을 자동으로 식별합니다. 전략 논리는 명확하고, 가치가 채굴 가능하며, 권장되는 계량화 방법입니다.
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Best Rabbit Strategy", shorttitle="Rabbit God",overlay=true)
Length = input(10, minval=1)
xPrice = close
xvnoise = abs(xPrice - xPrice[1])
Fastend = input(2)
Slowend = input(30)
nfastend = 2/(Fastend + 1)
nslowend = 2/(Slowend + 1)
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
Length2 = input(10, minval=1)
xPrice2 = close
xvnoise2 = abs(xPrice2 - xPrice2[1])
Fastend2 = input(4)
Slowend2 = input(24)
nfastend2 = 2/(Fastend2 + 1)
nslowend2 = 2/(Slowend2 + 1)
nsignal2 = abs(xPrice2 - xPrice2[Length2])
nnoise2 = sum(xvnoise, Length2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2)
nAMA2 = nz(nAMA2[1]) + nsmooth2 * (xPrice2 - nz(nAMA2[1]))
price = input(hl2)
len = input(defval=7,minval=1)
FC = input(defval=4,minval=1)
SC = input(defval=300,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price
price2 = input(hl2)
len2 = input(defval=31,minval=1)
FC2 = input(defval=40,minval=1)
SC2 = input(defval=300,minval=1)
len12 = len2/2
w2 = log(2/(SC2+1))
H12 = highest(high,len12)
L12 = lowest(low,len12)
N12 = (H1-L1)/len12
H22 = highest(high,len2)[len12]
L22 = lowest(low,len2)[len12]
N22 = (H22-L22)/len12
H32 = highest(high,len2)
L32 = lowest(low,len2)
N32 = (H32-L32)/len2
dimen12 = (log(N12+N22)-log(N32))/log(2)
dimen2 = iff(N12>0 and N22>0 and N32>0,dimen12,nz(dimen12[1]))
alpha12 = exp(w*(dimen2-1))
oldalpha2 = alpha12>1?1:(alpha12<0.01?0.01:alpha12)
oldN2 = (2-oldalpha2)/oldalpha2
N4 = (((SC2-FC2)*(oldN2-1))/(SC2-1))+FC2
alpha_2 = 2/(N4+1)
alpha2 = alpha_2<2/(SC2+1)?2/(SC2+1):(alpha_2>1?1:alpha_2)
out2 = (1-alpha2)*nz(out2[1]) + alpha2*price2
tf = input(title="Resolution", defval = "current")
vamp = input(title="VolumeMA", defval=6)
vam = sma(volume, vamp)
up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3]
down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3]
fractalup = up ? high[3] : fractalup[1]
fractaldown = down ? low[3] : fractaldown[1]
fuptf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractalup)
fdowntf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractaldown)
plot(fuptf, "FractalUp", color=lime, linewidth=1, style=cross, transp=0, offset =-3, join=false)
plot(fdowntf, "FractalDown", color=red, linewidth=1, style=cross, transp=0, offset=-3, join=false)
buyEntry= nAMA[0]>nAMA2[0] and out[0]>out2[0]
sellEntry= nAMA[0]<nAMA2[0] and out[0]<out2[0]
if (buyEntry)
strategy.entry("Buy", strategy.long, comment="Long Position Entry")
if (sellEntry)
strategy.entry("Sell", strategy.short, comment="Short Position Entry")