SMA 이치모쿠 크로스오버 전략은 일반적인 거래 전략이다. 이 전략은 이치모쿠 클라우드와 SMA 매끄러운 이동 평균과 결합하여 이동평균의 골드 크로스 및 데드 크로스 원리를 사용하여 비교적 완전한 거래 시스템을 형성합니다. 이 전략은 자동으로 주식 포지션을 열고 닫을 수 있습니다.
이 전략은 주로 이치모쿠 지표의 전환선과 기본선과 단기 및 장기 SMA 이동 평균의 크로스오버를 비교하여 주식 구매 및 판매를 판단합니다.
구체적으로, 코드는 이치모쿠 지표의 변환선, 기본선, 선도 스펜 1 및 선도 스펜 2를 정의합니다. 동시에 장기 SMA 이동 평균 ma1 및 단기 SMA 이동 평균 ma2가 정의됩니다.
구매를 판단할 때, 전환선은 기본선보다 낮아야 하고, 단기 이동 평균은 장기 이동 평균보다 낮아야 합니다. 즉, 황금 십자가가 발생합니다.
판매를 판단할 때, 전환선은 기본선보다 높아야 하고, 단기 이동평균은 장기 이동평균보다 높아야 합니다. 즉, 죽은 십자가가 발생합니다.
또한, 코드는 지난 날보다 높은 폐쇄 가격과 기울기를 판단하기 위해 이동 평균 값의 차이와 분수를 사용하여 기울기를 결정하는 것과 같은 몇 가지 보조 조건을 정의합니다. 이것은 이동 평균 크로스오버의 추진력과 방향을 결정할 수 있습니다.
이 전략은 여러 가지 기술 지표의 장점을 결합하고 다음과 같은 장점을 가지고 있습니다.
이치모쿠 클라우드 자체는 트렌드 판단을 포함하고 있으며, SMA 이동 평균과 결합하면 강력한 트렌드 판단을 형성할 수 있습니다.
SMA 이동 평균 자체는 가격 추세와 동력을 결정할 수 있습니다. 빠른 MA를 가로질러 느린 MA는 거래 지점을 결정할 수 있습니다.
닫기 가격 판단을 추가하면 불필요한 포지션 개척과 폐쇄를 피할 수 있습니다.
이동평균 기울기의 계산은 이동평균 교차점의 운동량에 대한 판단을 높이고 잘못된 교차점을 필터링할 수 있습니다.
전체적으로, 이 전략은 상대적으로 정확한 트렌드 판단을 가지고 있으며, 불필요한 거래를 줄일 수 있으며, 최적화할 수 있는 여지가 있습니다.
이 전략에는 또한 몇 가지 위험이 있습니다.
이치모쿠와 SMA 모두 시간이 지남에 따라 가격 변화를 반영하지 못할 수 있습니다.
여러 조건의 조합은 복잡성과 오류의 가능성을 증가시킵니다.
이 전략은 기술적인 지표에만 기반을 두고 있으며 주요 뉴스의 영향을 판단할 수 없습니다.
이 전략은 손실을 막는 조건을 설정하지 않으며 손실이 커질 위험이 있습니다.
이 전략은 통합과 같은 특별한 시장 조건을 고려하지 않습니다.
잘못된 매개 변수 설정도 전략 성능에 영향을 줄 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
손실이 커지면 자동으로 손실을 중지하도록 중지 손실 조건을 설정합니다.
주요 뉴스 이벤트에 대한 판단을 높여 그 영향을 피하십시오.
거래 범위를 늘리거나 매개 변수를 조정하는 것과 같은 특별한 시장 조건에 대한 판단을 강화하십시오.
최적의 매개 변수를 찾기 위해 매개 변수 조합을 테스트하고 최적화합니다.
매개 변수 최적화 및 시장 판단을 위한 기계 학습 알고리즘을 도입합니다.
거짓 파장을 피하기 위해 추진력 표시기를 추가합니다.
부피의 변화와 같은 더 많은 기본 요소를 결합합니다.
요약하자면, 이 SMA 이치모쿠 크로스오버 전략은 이치모쿠와 SMA 이동 평균의 장점을 통합하여 비교적 완전한 주식 거래 전략을 형성합니다. 이 전략은 트렌드를 결정하는 강력한 능력을 가지고 있으며 트렌드 기회를 효과적으로 포착 할 수 있습니다. 그러나 지연, 높은 복잡성, 스톱 손실 부족과 같은 문제도 있습니다. 이것은 이 전략을 최적화하는 데 큰 공간을 제공합니다. 스톱 손실을 설정하고 주요 뉴스 이벤트를 판단하고 매개 변수를 최적화하여이 전략을 지속적으로 개선하여 안정적이고 신뢰할 수있는 양적 거래 전략이 될 수 있습니다.
/*backtest start: 2023-09-15 00:00:00 end: 2023-10-15 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy("Ichimoku+SMAsmoothed", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) // conversionPeriods = input(9, minval=1, title="Conversion Line Periods"), basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"), displacement = input(26, minval=1, title="Displacement") SMA1=input(title="SMA LONG",defval=21) SMA2=input(title="SMA SHORT",defval=19) p=ohlc4[1] donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //plot(conversionLine, color=#0496ff, title="Conversion Line") //plot(baseLine, color=#991515, title="Base Line") //plot(close, offset = -displacement, color=#459915, title="Lagging Span") //p1 = plot(leadLine1, offset = displacement, color=green, // title="Lead 1") //p2 = plot(leadLine2, offset = displacement, color=red, // title="Lead 2") //fill(p1, p2, color = leadLine1 > leadLine2 ? green : red) ma1=sma(p, SMA1) ma2=sma(p, SMA2) p_a = ma1*2 p_b = ma1 p_c = p_a - p_b p_d = p_c/24 p_e = ma2*2 p_f = ma2 p_g = p_e - p_f p_h = p_g/24 closelong = ohlc4<ohlc4[SMA1] and ohlc4<ohlc4[1]// and leadLine1<leadLine2 and p_h<p_d if (closelong) strategy.close("Long") closeshort = ohlc4>ohlc4[SMA1] and ohlc4>ohlc4[1]// and leadLine1>leadLine2 and p_h>p_d if (closeshort) strategy.close("Short") longCondition = ohlc4>ohlc4[1] and leadLine1>leadLine2 and p_h>p_d if (longCondition) strategy.entry("Long",strategy.long) shortCondition = ohlc4<ohlc4[1] and leadLine1<leadLine2 and p_h<p_d if (shortCondition) strategy.entry("Short",strategy.short)