이 전략은 이치모쿠 클라우드 트레이딩 전략이다. 전환선이 기본선을 넘을 때 길어지고, 전환선이 전환선을 넘을 때 포지션을 닫는다. 또한, 포지션을 열거나 닫을 때 Lagging Span을 점검하여 클라우드 위에 있거나 아래에 있는지 확인한다.
이 전략은 이치모쿠 지표의 여러 라인을 사용합니다.
전환선: 지난 9일 동안의 최고와 최저의 평균, 단기 트렌드 전환을 나타냅니다.
기본선: 지난 26일 동안의 최고와 최저의 평균, 그 기간 동안의 평균 가격 움직임을 나타냅니다.
리딩 스판 A: 변환 및 기본 라인의 평균.
리딩 스판 B: 지난 52일 동안의 최고와 최저의 평균, 중장기 트렌드의 주요 지표입니다.
뒤떨어진 기간: 트렌드의 추진력을 나타내는 26일 뒤떨어진 폐쇄 가격.
포지션을 열기 위해서는 전환선이 기본선 위에 넘어가야 하고 Lagging Span가 구름 위에 있어야 합니다. 이것은 단기 및 중장기 모두 상승 추세를 나타냅니다.
포지션을 닫기 위해서는 베이스 라인이 변환 라인 아래를 넘어야 하고 Lagging Span이 구름 아래를 넘어야 합니다. 이것은 트렌드 역전 신호이며 포지션에서 빠져나가는 것을 제안합니다.
이치모쿠 클라우드를 사용하여 트렌드 방향을 정확하게 결정합니다.
여러 라인을 결합하면 잘못된 신호를 피할 수 있습니다.
장기적인 동전은 대부분의 암호화폐의 장기적인 상승 추세와 일치합니다.
엄격한 상태 필터링은 고품질 신호를 제공합니다.
전체 위치 또는 평면만 허용, 위치 크기를 조정할 수 없습니다.
황금시장에서는 매우 좋은 성적을 거뒀지만, 곰시장에서는 큰 손실을 감수할 수 있습니다.
암호화폐에 맞춰진 기본 매개 변수는 다른 자산에 대한 조정이 필요할 수 있습니다.
거래 신호가 줄어들면 기회를 놓칠 수 있습니다.
지점 크기를 조정하는 기능을 추가하여 손실이 임계치에 도달하면 지점의 일부를 닫습니다.
손실을 줄이기 위해 주요 지원 레벨이 깨지면 단축 판매 신호를 추가합니다.
매개 변수를 최적화해서 더 많은 기호에 맞게 하고 안정성을 높여
손실이 하락 위험을 억제할 수 있는 수준에 도달하면 손해를 멈추는 것을 추가합니다.
이치모쿠 전략은 장기적인 전략으로서 여러 이치모쿠 라인을 결합하여 트렌드 역전을 안정적으로 결정합니다. 특히 암호화폐와 같은 지속적인 상승 추세를 보이는 자산에 잘 작동합니다. 스톱 손실 및 포지션 사이징과 같은 위험 관리에 대한 추가 개선은이 다른 시장 환경과 자산 유형에 걸쳐 이 전략을 더 견고하게 만들 수 있습니다.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // Simple long-only Ichimoku Cloud Strategy // Enter position when conversion line crosses base line up, and close it when the opposite happens. // Additional condition for open / close the trade is lagging span, it should be higher than cloud to open position and below - to close it. //@version=4 strategy("Ichimoku Cloud Strategy Long Only", shorttitle="Ichimoku Cloud Strategy (long only)", overlay=true ) conversion_length = input(9, minval=1, title="Conversion Line Periods"), base_length = input(26, minval=1, title="Base Line Periods") lagging_length = input(52, minval=1, title="Lagging Span 2 Periods"), delta = input(26, minval=1, title="Delta") average(len) => avg(lowest(len), highest(len)) conversion_line = average(conversion_length) // tenkan sen - trend base_line = average(base_length) // kijun sen - movement lead_line_a = avg(conversion_line, base_line) // senkou span A lead_line_b = average(lagging_length) // senkou span B lagging_span = close // chikou span - trend / move power plot(conversion_line, color=color.blue, linewidth=2, title="Conversion Line") plot(base_line, color=color.white, linewidth=2, title="Base Line") plot(lagging_span, offset = -delta, color=color.purple, linewidth=2, title="Lagging Span") lead_line_a_plot = plot(lead_line_a, offset = delta, color=color.green, title="Lead 1") lead_line_b_plot = plot(lead_line_b, offset = delta, color=color.red, title="Lead 2") fill(lead_line_a_plot, lead_line_b_plot, color = lead_line_a > lead_line_b ? color.green : color.red) // Strategy logic long_signal = crossover(conversion_line,base_line) and ((lagging_span) > (lead_line_a)) and ((lagging_span) > (lead_line_b)) short_signal = crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b)) strategy.entry("LONG", strategy.long, when=strategy.opentrades == 0 and long_signal, alert_message='BUY') strategy.close("LONG", when=strategy.opentrades > 0 and short_signal, alert_message='SELL') // === Backtesting Dates === thanks to Trost testPeriodSwitch = input(true, "Custom Backtesting Dates") testStartYear = input(2021, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0) testStopYear = input(2021, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(1, "Backtest Stop Day") testStopHour = input(0, "Backtest Stop Hour") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0) testPeriod() => true testPeriod_1 = testPeriod() isPeriod = testPeriodSwitch == true ? testPeriod_1 : true // === /END if not isPeriod strategy.cancel_all() strategy.close_all()