윌리엄스 이중 기하급수적 이동 평균과 이치모쿠 킨코 히오 전략

저자:차오장, 날짜: 2024-02-18 16:20:12
태그:

img

전반적인 설명

이 전략은 윌리엄스 이중 기하급수적 이동 평균과 이치모쿠 킨코 호 (Ichimoku Kinkou Hyo) 를 결합하여 각각의 장점을 활용하고 거래 결정의 정확도를 향상시키기 위해 두 가지 기술 지표를 결합합니다. 윌리엄스 이중 기하급수적 이동 평균은 가격 변화의 추세를 완전히 반영 할 수 있으며 이치모쿠 킨코 호 (Ichimoku Kinkou Hyo) 는 트렌드 전환에 대한 조기 경고를 제공할 수 있습니다.

원칙

윌리엄스 이중 기하급수적 이동 평균은 빠른 라인과 느린 라인을 포함합니다. 빠른 라인은 공식으로 계산됩니다: 2 * ((n/2 기간 가중화 이동 평균), 느린 라인은: n 기간 가중화 이동 평균으로 계산됩니다. 빠른 라인이 아래에서 느린 라인의 위를 넘으면 구매 신호입니다. 위에서 아래를 넘으면 판매 신호입니다.

이치모쿠 킨코 호는 네 가지 구성 요소로 구성되어 있습니다. 텐칸 센, 키 센, 선두 라인 및 클라우드 레이어. 텐칸 센과 키 센 사이의 황금 십자가는 구매 신호이며, 죽음의 십자가는 판매 신호입니다. 가격이 클라우드 레이어의 상위 또는 하위 가장자리를 넘거나 밑으로 넘으면 각각 구매 또는 판매를 신호합니다.

이 전략은 두 지표의 강점을 결합합니다. 첫 번째 결정 요소는 윌리엄스 지표의 신호이며 두 번째는 이치모쿠 킨코 히오의 확인이며, 잘못된 신호를 효과적으로 필터링하고 의사 결정 정확도를 향상시킵니다.

장점

  1. 윌리엄스 이중 기하급수적인 이동 평균은 민감하게 반응하고 강력한 트렌드 방향을 결정할 수 있습니다.
  2. 이치모쿠 킨코 히오는 선도적인 판단과 트렌드 반전에 대한 조기 경고를 제공합니다.
  3. 두 지표를 결합하면 서로 검증하고 잘못된 신호를 줄일 수 있습니다.
  4. 매개 변수는 다양한 사이클 길이와 제품에 적응하도록 최적화 할 수 있습니다.

위험 과 최적화

  1. 트렌드가 아닌 시장에서 빈번한 신호가 발생할 수 있습니다. 일부 신호를 필터링하기 위해 매개 변수를 조정할 수 있습니다.
  2. 빠른 라인과 느린 라인의 크로스오버에 약간의 지연이 있을 수 있습니다. 최적의 입구 및 출구 지점을 놓치지 않도록 클라우드 레이어를 참조할 수 있습니다.
  3. 추세 또는 변동성 지표와 결합하여 잘못된 신호를 추가로 피하는 것이 좋습니다.

요약

이 전략은 트렌드 방향을 판단하는 윌리엄스 지표의 능력과 반전 초기 경고를 제공하는 Ichimoku Kinkou Hyo의 능력을 완전히 활용하여 거래 결정의 정확성을 크게 향상시킵니다. 매개 변수 조정 및 다른 지표와 결합하는 등의 추가 최적화는 시장 변화에 적응하기 위해 지속 가능한 개선이 가능합니다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("Hull MA-X + Ichimoku Kinko Hyo", shorttitle="Hi", 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)
SenkouSpanH = max(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
SenkouSpanL = min(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
ChikouSpan = close[displacement-1]

Hullfast=plot(n1,color=c)
Hullslow=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)
sa=plot (SenkouSpanA, offset = displacement, color=green,  title="Senkou Span A", linewidth = 2)
sb=plot (SenkouSpanB, offset = displacement, color=red,  title="Senkou Span B", linewidth = 3)
fill(sa, sb, color = SenkouSpanA > SenkouSpanB ? green : red)

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

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

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

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

더 많은