시장 잠재력 이치모쿠 상승 구름 전략

저자:차오장, 날짜: 2024-02-02 16:57:46
태그:

img

전반적인 설명

이 전략은 이치모쿠 클라우드 트레이딩 전략이다. 전환선이 기본선을 넘을 때 길어지고, 전환선이 전환선을 넘을 때 포지션을 닫는다. 또한, 포지션을 열거나 닫을 때 Lagging Span을 점검하여 클라우드 위에 있거나 아래에 있는지 확인한다.

전략 논리

이 전략은 이치모쿠 지표의 여러 라인을 사용합니다.

  1. 전환선: 지난 9일 동안의 최고와 최저의 평균, 단기 트렌드 전환을 나타냅니다.

  2. 기본선: 지난 26일 동안의 최고와 최저의 평균, 그 기간 동안의 평균 가격 움직임을 나타냅니다.

  3. 리딩 스판 A: 변환 및 기본 라인의 평균.

  4. 리딩 스판 B: 지난 52일 동안의 최고와 최저의 평균, 중장기 트렌드의 주요 지표입니다.

  5. 뒤떨어진 기간: 트렌드의 추진력을 나타내는 26일 뒤떨어진 폐쇄 가격.

포지션을 열기 위해서는 전환선이 기본선 위에 넘어가야 하고 Lagging Span가 구름 위에 있어야 합니다. 이것은 단기 및 중장기 모두 상승 추세를 나타냅니다.

포지션을 닫기 위해서는 베이스 라인이 변환 라인 아래를 넘어야 하고 Lagging Span이 구름 아래를 넘어야 합니다. 이것은 트렌드 역전 신호이며 포지션에서 빠져나가는 것을 제안합니다.

전략 의 장점

  1. 이치모쿠 클라우드를 사용하여 트렌드 방향을 정확하게 결정합니다.

  2. 여러 라인을 결합하면 잘못된 신호를 피할 수 있습니다.

  3. 장기적인 동전은 대부분의 암호화폐의 장기적인 상승 추세와 일치합니다.

  4. 엄격한 상태 필터링은 고품질 신호를 제공합니다.

전략 의 위험

  1. 전체 위치 또는 평면만 허용, 위치 크기를 조정할 수 없습니다.

  2. 황금시장에서는 매우 좋은 성적을 거뒀지만, 곰시장에서는 큰 손실을 감수할 수 있습니다.

  3. 암호화폐에 맞춰진 기본 매개 변수는 다른 자산에 대한 조정이 필요할 수 있습니다.

  4. 거래 신호가 줄어들면 기회를 놓칠 수 있습니다.

개선

  1. 지점 크기를 조정하는 기능을 추가하여 손실이 임계치에 도달하면 지점의 일부를 닫습니다.

  2. 손실을 줄이기 위해 주요 지원 레벨이 깨지면 단축 판매 신호를 추가합니다.

  3. 매개 변수를 최적화해서 더 많은 기호에 맞게 하고 안정성을 높여

  4. 손실이 하락 위험을 억제할 수 있는 수준에 도달하면 손해를 멈추는 것을 추가합니다.

요약

이치모쿠 전략은 장기적인 전략으로서 여러 이치모쿠 라인을 결합하여 트렌드 역전을 안정적으로 결정합니다. 특히 암호화폐와 같은 지속적인 상승 추세를 보이는 자산에 잘 작동합니다. 스톱 손실 및 포지션 사이징과 같은 위험 관리에 대한 추가 개선은이 다른 시장 환경과 자산 유형에 걸쳐 이 전략을 더 견고하게 만들 수 있습니다.


/*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()

더 많은