이치모쿠 클라우드 로컬 트렌드 식별 전략

저자:차오장, 날짜: 2024-03-19 15:10:59
태그:

img

전반적인 설명

이 전략은 이치모쿠 클라우드 지표와 피보나치 비율을 결합한 트렌드 식별 및 거래 전략이다. 이치모쿠 클라우드 지표에서 변환 라인, 기본 라인, 쿠모 클라우드 및 Lagging Span을 사용하여 현재 시장 트렌드를 결정하고 1.618 및 0.618 피보나치 비율을 통합하여 스톱 로스 수준을 설정하고 옆 시장을 식별합니다. 또한 전략은 잘못된 신호를 필터링하기 위해 두 가지 추가 중간 라인을 도입합니다.

전략 원칙

이치모쿠 클라우드 지표는 전환선, 기본선, 쿠모 클라우드, 그리고 후퇴 스판 (Lagging Span) 이라는 네 가지 구성 요소로 구성된다. 전환선과 기본선은 다양한 기간 동안 가장 높은 최고와 가장 낮은 최저의 평균을 사용하여 계산된다. 쿠모 클라우드는 기본선을 26 기간 앞으로 이동시키면서 형성되며, 후퇴 스판은 26 기간 뒤로 이동된 종료 가격이다.

이 전략의 장기 입시 조건은 다음과 같습니다.

  1. 래거 스판은 구름 위에 있습니다.
  2. 전환선은 기본선보다 크다
  3. 종료 가격은 1.618 스톱 로스 레벨 이상입니다.
  4. 0.618 라인은 1.618 스톱 로스 레벨 이상입니다.
  5. 폐업 가격은 클라우드 위에 있습니다

짧은 입시 조건은 긴 입시 조건의 반대입니다.

스톱 로스 레벨은 1.618 및 0.618 피보나치 비율을 사용하여 설정됩니다. 긴 포지션의 경우 스톱 로스는 클라우드의 상단 마이너스 1.618 배 상단과 하단 사이의 거리에 해당합니다. 짧은 포지션의 경우 그 반대입니다. 0.618 라인은 옆 시장을 식별하는 데 사용됩니다. 클라우드가 녹색이고 0.618 라인이 1.618 스톱 로스 레벨 아래에있을 때 시장은 옆 상태에 있다고 간주됩니다.

이치모쿠 클라우드 지표 외에도, 전략은 잘못된 신호를 추가로 필터링하기 위해 두 개의 중간선을 도입합니다. 중간선은 다양한 시간 동안 가장 높은 최고와 가장 낮은 최저의 평균을 사용하여 계산됩니다.

이점 분석

  1. 가격 및 트렌드 지표를 모두 사용함으로써 전략은 현재 시장 트렌드를 더 잘 파악할 수 있습니다.
  2. 피보나치 비율을 도입하여 동적으로 스톱 로스 레벨을 설정하면 위험을 제어 할 수 있습니다.
  3. 0.618 라인은 측면 시장을 효과적으로 식별하고 범위 시장에 자주 진입하는 것을 피할 수 있습니다.
  4. 두 개의 추가 중간 선은 잘못된 신호를 더 잘 필터링하고 신호 품질을 향상시킬 수 있습니다.
  5. 매개 변수들은 조절이 가능하여 전략은 다양한 시장과 시간대에 적합합니다.

위험 분석

  1. 강한 상승 추세 또는 하락 추세와 같은 극단적인 시장 조건에서 추세 지표가 실패하여 왜곡된 신호로 이어질 수 있습니다.
  2. 스톱 로스 레벨은 클라우드의 거리에 따라 결정됩니다. 클라우드가 매우 얇으면 스톱 로스가 엔트리 가격에 너무 가깝게 될 수 있습니다.
  3. 스톱 로스 및 0.618 라인을 사용 하 여 사이드웨이 시장을 판단 하는 방법 은 이론적 지원이 부족하고 모든 시장에 적용 될 수 없습니다.
  4. 매개 변수 최적화는 실제 시장에서 과도한 적합성과 저성능으로 이어질 수 있습니다.

최적화 방향

  1. 신호 품질을 더 향상시키기 위해 이동 평균, MACD 등과 같은 더 많은 트렌드 확인 지표를 도입하는 것을 고려하십시오.
  2. 스톱 로스 레벨의 설정은 ATR 및 변동성과 같은 더 많은 요소를 고려하여 더 역동적이고 개인화 할 수 있습니다.
  3. 측면 시장을 식별하려면 ADX 트렌드 강도 지표와 같은 다른 방법을 시도 할 수 있습니다.
  4. 유전 알고리즘과 같은 기계 학습 방법은 매개 변수 최적화를 위해 사용할 수 있으며 과잉 적합성을 피하기 위해 샘플 외부 테스트를 수행해야합니다.
  5. 포지션 크기와 위험 관리 모듈이 추가될 수 있습니다. 예를 들어 켈리 기준과 고정 위험, 전략의 안정성과 신뢰성을 향상시키기 위해서입니다.

결론

이 전략은 이치모쿠 클라우드 지표와 피보나치 비율을 혁신적으로 결합하여 완전한 트렌드 식별 및 거래 시스템을 형성합니다. 필터링을 위해 추가 중간 라인을 도입하면 신호 품질을 어느 정도 향상시킬 수 있습니다. 전략의 장점은 트렌딩 및 범위 시장 조건에 잘 적응하고 동적 스톱 로스를 통해 위험을 제어 할 수있는 능력에 있습니다. 그러나 전략에는 이론적 지원 부족 및 파라미터 최적화에 대한 잠재적 인 과잉 적합성과 같은 몇 가지 단점도 있습니다. 미래에 더 많은 지표를 도입하고, 스톱 로스를 최적화하고 포지셔닝 사이즈를 최적화하고, 파라미터 최적화를 위해 기계 학습을 사용하여 전략을 개선 할 수 있습니다. 전반적으로이 전략은 혁신적인 접근 방식을 가지고 있으며 참조 할 가치가 있지만 실제 적용을 위해 추가 테스트와 최적화가 필요합니다.


/*backtest
start: 2023-03-13 00:00:00
end: 2024-03-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © manoharbauskar

//@version=5
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © manoharbauskar

//@version=5
strategy("Advanced_Ichimoku_Cloud_Strategy", overlay=true, margin_long=100, margin_short=100)
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpanPeriods = input.int(52, minval=1, title="Leading Span B Length")
pivotPeriods1 = input.int(17,minval = 1,title = "PPL1")
pivotPeriods2 = input.int(39,minval = 1,title = "PPL2")
displacement = input.int(26, minval=1, title="Lagging Span")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
midLine1 = donchian(pivotPeriods1)
midLine2 = donchian(pivotPeriods2)
midLine3 = donchian(laggingSpanPeriods)
leadLine1 = math.avg(conversionLine, baseLine, midLine1)
leadLine2 = math.avg(midLine2 , midLine3)


plot(conversionLine, color=#2962FF, title="Conversion Line")
plot(baseLine, color=#B71C1C, title="Base Line")

plot(close, offset = -displacement + 1, color=color.yellow, title="Lagging Span")
p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
	 title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")
   
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Upper Line", display = display.none) 
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Lower Line", display = display.none) 
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))

//stoploss calculating
mult1 = input.float(1.618, "Mult1")
mult2 = input.float(0.618, "Mult2")
stoploss1 = leadLine1 - (leadLine1 - leadLine2)*mult1
stoploss2 = leadLine1 - (leadLine1 - leadLine2)*mult2
plot(stoploss1,"Sl", color = color.fuchsia, linewidth = 2, style = plot.style_line, offset = displacement - 1)
plot(stoploss2,"S2", color = color.lime, linewidth = 2, style = plot.style_line, offset = displacement - 1)

longCondition = leadLine1 > leadLine2 
if (longCondition)
    strategy.entry("Buy", strategy.long)

shortCondition = leadLine1 < leadLine2
if (shortCondition)
    strategy.entry("Sell", strategy.short)


더 많은