확률적 오실레이터 전략


생성 날짜: 2023-11-06 09:30:27 마지막으로 수정됨: 2023-11-06 09:30:27
복사: 1 클릭수: 575
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

확률적 오실레이터 전략

개요

무작위적인 흔들림 전략은 평균선 교차, MACD 지표, 그리고 헐 이동 평균과 같은 여러 가지 기술 지표를 통합하여 비교적 과학적이고 체계적인 거래 의사 결정 시스템을 형성합니다. 이 전략은 흔들림 상황에서 트렌드 전환점을 포착하여 잠재적인 기회를 발견하고 포착합니다.

전략 원칙

먼저, 이 전략은 동시에 보내진 전환선과 기준선 지표를 사용한다. 이 중 전환선은 9주기 동안의 최고 가격과 최저 가격의 평균을 계산하고, 기준선은 24주기 동안의 최고 가격과 최저 가격의 평균을 계산한다. 가격이 기준선 아래에서 통과하면 구매 신호가 되고, 기준선 위에서 아래로 통과하면 판매 신호가 된다.

둘째, MACD는 중요한 트렌드 추적 지표로서 이 전략에 사용되기도 한다. MACD는 단기 엠마 (12일) 와 장기 엠마 (24일) 의 차이를 계산하여 신호선을 계산한다. MACD가 아래에서 위로 신호선을 통과하면 구매 신호가 되고, 위에서 아래로 신호선을 통과하면 판매 신호가 된다.

또한, Hull 이동 평균은 이동 평균의 지연을 줄이고 가격 전환 신호의 민감성을 높이기 위해 이 전략에 도입되었습니다. 계산 방법은: 반 주기의 WMA를 2로 곱하고, 전체 주기의 WMA를 빼고, 다시 오픈 주기의 WMA를 계산합니다. 빠른 Hull MA와 느린 Hull MA의 교차는 보조적인 구매 신호로 사용됩니다.

마지막으로, 이 전략은 위 여러 지표의 결과를 통합하여 신뢰할 수 있는 거래 의사 결정 시스템을 형성한다. 한 지표, MACD 및 Hull MA와 같은 여러 지표가 동방향 신호를 발산할 때 실제 구매 및 판매 작업이 발생합니다.

전략적 이점

  • 다중 지표 조합, 통합적으로 1개, MACD 및 Hull MA의 3가지 지표를 사용하여 강력한 의사결정력을 형성한다.

  • 잘못된 신호를 줄이고, 다른 지표들 사이에 검증을 할 수 있으며, 단일 지표의 오해를 줄일 수 있다.

  • 거래의 효율성을 높이고, 여러 지표가 일치할 때만 거래하고, 자주 거래하는 것을 피한다.

  • 조정 가능한 매개 변수, 지표 매개 변수는 시장에 따라 조정할 수 있으며, 전략의 적응성을 높일 수 있다.

  • 지연을 줄이기 위해, Hull MA는 이동 평균 계산을 개선하여 가격 변화를 더 빨리 잡을 수 있습니다.

전략적 위험

  • “공중 혼동 전투의 위험은 높고, 잘못된 신호가 발생하기 쉽다”.

  • 지표 변수 설정이 잘못되면 정책 성능에도 영향을 미칠 수 있다.

  • 지표 반전 신호에 너무 집중하면 트렌드를 놓칠 수 있다.

  • Hull MA는 새로운 지표이며, 장기적인 효과는 검증되어야 한다.

  • 거래 빈도가 낮아 모든 기회를 잡을 수 없습니다.

최적화 방향

  • 볼린저 밴드 (Bollinger Bands) 와 같은 다른 지표를 추가하여 의사 결정 시스템을 더 최적화 할 수 있습니다.

  • 지표 변수를 조정하여 최적의 변수 조합을 찾을 수 있습니다.

  • 단편적 손실을 제어하기 위해 동적 손실 제도를 도입할 수 있다.

  • 트렌드를 판단하는 지표와 결합하여 트렌드 기회를 놓치지 않도록하십시오.

  • 포지션 관리를 최적화하고, 다른 시장에서 거래 빈도와 포지션을 조정한다.

요약하다

무작위적인 흔들림 전략은 여러 지표와 기술적 분석 방법을 통합하여 흔들림 상황에서 거래 기회를 찾습니다. 지표 포트폴리오의 장점, 가짜 신호의 감소, 운영 효율성의 향상 등의 특징이 있습니다. 그러나 더 넓은 시장 상황에 적응하고 위험과 이익 사이의 최적의 균형을 찾기 위해 추가 테스트 및 최적화가 필요한 특정 위험이 있습니다.

전략 소스 코드
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Ichimoku Kinko Hyo + HULL-MA_X + MacD", shorttitle="@m", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)

keh=input(title="Double HullMA",defval=12, minval=1)

n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green

TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods")
KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods")
SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods")
displacement = input(24, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
TenkanSen = donchian(TenkanSenPeriods)
KijunSen = donchian(KijunSenPeriods)
SenkouSpanA = avg(TenkanSen, KijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)
LS=close, offset = -displacement

MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(24)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)

a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 3)
plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2)
plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3)
plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2)
p1=plot (SenkouSpanA, offset = displacement, color=green,  title="Senkou Span A", linewidth = 2)
p2=plot (SenkouSpanB, offset = displacement, color=red,  title="Senkou Span B", linewidth = 3)
fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red)

closelong = n1<n2 and close<n2 and (MACD<aMACD or TenkanSen<KijunSen or close<KijunSen)
if (closelong)
    strategy.close("Long")

closeshort = n1>n2 and close>n2 and (MACD>aMACD or TenkanSen>KijunSen or close>KijunSen)
if (closeshort)
    strategy.close("Short")

longCondition = n1>n2 and close>n2 and MACD>aMACD and (TenkanSen>KijunSen or close>KijunSen) 
if (longCondition)
    strategy.entry("Long",strategy.long)

shortCondition = n1<n2 and close<n2 and MACD<aMACD and (TenkanSen<KijunSen or close<KijunSen)
if (shortCondition)
    strategy.entry("Short",strategy.short)