이 전략은 트렌드를 결정하고 추적하기 위해 ICHIMOKU 클라우드 차트 패턴 지표와 STOCH 무작위 지표에 기반합니다. 전략 이름은
이 전략은 주로 ICHIMOKU 클라우드 차트와 STOCH 지표를 통해 현재 트렌드 방향과 과잉 구매/ 과잉 판매 상황을 판단합니다.
전환선이 기본선을 넘어서서 스톡 지표가 과잉판매 영역에서 다시 반격하면 상승 추세로 간주되며 전략은 상승 방향을 취합니다. 전환선이 기본선을 넘어서서 스톡 지표가 과잉판매 영역에서 다시 떨어지면 하락 추세로 간주되며 전략은 하락 방향을 취합니다.
코드에서 전환선은 마지막 N1 바의 가장 높고 가장 낮은 가격의 평균으로 정의됩니다. 기본선은 마지막 N2 바의 가장 높고 가장 낮은 가격의 평균으로 정의됩니다. 전환선이 기본선을 넘을 때 상승 신호가 생성됩니다.
스톡 지표는 과잉 구매 및 과잉 판매 임계선을 정의하고, 평형 매개 변수 K 및 D를 정의합니다. 스톡 지표가 과잉 판매 영역에서 반등할 때 상승 신호가 생성되며, 과잉 구매 영역에서 다시 떨어질 때 하락 신호가 생성됩니다.
두 가지 지표를 결합함으로써 전략은 트렌드 방향을 결정합니다.
이 전략은 그래프 패턴 지표와 과잉 구매/ 과잉 판매 지표를 결합하여 트렌드 방향을 효과적으로 결정합니다.
단일 트렌드 판단 지표를 사용하는 것과 비교하면 이 전략은 트렌드와 초과 상황을 모두 포괄적으로 고려하고 진입 시기를 더 정확하게 결정할 수 있습니다.
이치모쿠 클라우드 차트는 중장기 트렌드를 식별 할 수 있으며, 스톡 지표는 단기 과반 구매/ 과반 판매 상황을 발견 할 수 있습니다. 두 가지가 체계적인 판단을 형성하기 위해 상호 보완합니다.
이 전략의 주요 위험은 다음과 같습니다.
블랙 스완 사건의 경우 지표 장애의 위험.
트렌드의 일부를 놓칠 수도 있고 오픈 포지션을 역전시킬 수도 있는 약간의 지연이 있습니다.
복수 요인 판단의 조합은 어떤 주관성을 가지고 있으며, 부적절한 매개 변수 설정은 오류를 일으킬 수 있습니다.
높은 거래 빈도는 거래 비용으로 인해 이익에 영향을 줄 수 있습니다.
그에 따른 최적화 조치:
주요 정책 사건 중 맹목적 거래를 피하기 위해 뉴스 이벤트를 결합하십시오.
적당하게 사이클 매개 변수를 짧게 하여 지연 확률을 줄이십시오.
과학적 설정을 개선하기 위해 백테스팅을 통해 매개 변수를 최적화합니다.
적당하게 수익을 취하고 손실을 멈추는 범위를 높여 거래 빈도를 줄이십시오.
이 전략의 주요 최적화 방향은 다음과 같습니다.
다양한 시장 특성에 더 잘 맞게 ICHIMOKU 변환 라인과 기본 라인의 사이클 매개 변수를 최적화합니다.
K,D 평형 매개 변수 및 스톡 지표의 과잉 구매/ 과잉 판매 임계 값을 최적화합니다.
다른 지표를 늘려서 다인자 모델을 형성하고 시스템 신뢰성을 향상시켜야 합니다.
이윤을 취하고 손실을 멈추는 지점을 최적화하여 수익성을 보장하면서 거래 빈도를 줄이십시오.
비상 상황을 판단하고 큰 사건 중 실패를 피하기 위해 모듈을 추가합니다.
이 전략은 이치모쿠 클라우드 차트와 스톡 지표를 결합하여 트렌드 방향과 과잉 구매/ 과잉 판매 상황을 종합적으로 판단하여 트렌드 시장을 효과적으로 추적할 수 있다. 차트 패턴과 양적 지표를 고려함으로써 전략은 더 체계적이다. 향후 최적화는 매개 변수를 조정하고, 다른 지표를 추가하고, 긴급 판단 모듈을 추가하는 등이 포함될 수 있다.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ICHI + STOCH V1", overlay=true) length = input.int(20, minval=1) smoothK = input(5) smoothD = input(3) OverBought = input(25) OverSold = input(65) Profit = input(1800) Stop = input(1200) k = ta.sma(ta.stoch(close, high, low, length), smoothK) d = ta.sma(k, smoothD) co = ta.crossover(k,d) cu = ta.crossunder(k,d) conversionPeriods = input.int(9, minval=1, title="Conversion Line Length") basePeriods = input.int(26, minval=1, title="Base Line Length") laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length") displacement = input.int(1, minval=1, title="Lagging Span") conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods)) baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods)) leadLine1 = math.avg(conversionLine, baseLine) leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods)) TREND = ta.ema(math.avg(leadLine1,leadLine2),displacement) //plot(conversionLine, color=#2962FF, title="Conversion Line") //plot(baseLine, color=#B71C1C, title="Base Line") //plot(close, offset = -displacement + 1, color=#43A047, title="Lagging Span") plot(TREND, color=#2962FF, title="TREND") p1 = plot(leadLine1,style=plot.style_line, offset = displacement - 1, color=#A5D6A7, title="Leading Span A") p2 = plot(leadLine2,style=plot.style_line, offset = displacement - 1, color=#EF9A9A, title="Leading Span B") fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90)) close_price = ta.sma(close,1) pc = plot(close_price,style=plot.style_line, color=#2a0ab9, title="Price Close") if (not na(k) and not na(d)) if (co and k < OverSold)and(close_price > TREND) strategy.entry("BUY order", strategy.long, comment="BUY order") strategy.exit("exitBUY", "BUY order", profit = Profit, loss = Stop) if (cu and k > OverBought)and(close_price < TREND) strategy.entry("SELL order", strategy.short, comment="SELL order") strategy.exit("exitSELL", "SELL order", profit = Profit, loss = Stop) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)