이치모쿠 탈출 전략

저자:차오장, 날짜: 2023-10-13 16:48:22
태그:

전반적인 설명

이치모쿠 브레이크아웃 전략은 이동 평균의 개념을 활용하고 트렌드 방향을 결정하기 위해 이치모쿠 라인과 가격의 관계를 사용합니다. 트렌드를 따르는 전략에 속합니다. 가격이 라인을 넘어서면 길고 가격이 트렌드를 따라 라인을 넘어서면 짧습니다.

원칙 분석

이 전략의 핵심은 이치모쿠 선의 이론에 기반합니다.donchian()이 함수는 일정 기간 동안의 가장 높은 고위와 가장 낮은 하위 평균을 평형선으로 계산합니다. 그 다음 가격이 거래 신호를 생성하기 위해 이 선을 통과하는지 판단합니다.

구체적으로 전략은 먼저 텐칸선을 계산합니다 (TS) 를 사용하여Ten시기는 기준선으로 간주됩니다. 가격이 선을 넘어서면 트렌드 움직임으로 간주되며 긴 신호를 생성합니다. 가격이 선을 넘어서면 트렌드 반전으로 간주되며 짧은 신호를 생성합니다.

또한 전략은 키 라인을 계산합니다 (KS) 를 사용하여Kij이 기간 동안TS잘못된 신호를 피하기 위한 필터 역할을 합니다.TS위쪽의 십자KS긴 신호가 발사될 것입니다.

코드는 또한 트렌드 방향 판단을 돕기 위해 이치모쿠 클라우드를 그래프화합니다. 치코 라인은 보조 조건으로 가격과의 관계를 결정하기 위해 계산됩니다.

이점 분석

  • 트렌드를 결정하기 위해 이동 평균을 사용합니다. 간단하고 이해하기 쉽습니다.
  • 이치모쿠 클라우드는 정확성을 향상시키기 위해 추가 참조를 제공합니다
  • 치코우 라인은 보조 조건으로 신호를 더 필터합니다.
  • 다양한 매개 변수 조합으로 가능한 유연한 조정

위험 분석

  • 이동 평균 전략은 매개 변수에 민감합니다. 다른 기간은 다양한 결과를 가져올 수 있습니다.
  • 순수한 트렌드를 따라 트렌드와 범위를 판단 할 수 없습니다. 손실 위험이 있습니다.
  • 고집합 기간의 부적절한 처리, 잘못된 신호에 취약
  • 구름 판단이 불안정하고, 오해할 수 있습니다.

트렌드 강도를 위해 MACD와 같은 모멘텀 지표와 결합하는 것을 고려하십시오. 안정성을 향상시키기 위해 여러 이동 평균 시스템을 채택하십시오. 또는 위험을 제어하기 위해 스톱 로스를 통합하십시오.

최적화 방향

  • 트렌드 강도를 결정하기 위해 모멘텀 지표를 추가합니다.
  • 여러 이동 평균 시스템을 고려하십시오. 예를 들어 황금 십자
  • 채널 및 변동성 지표를 추가하여 범위를 감지합니다.
  • 가장 좋은 기간 조합을 찾기 위해 매개 변수를 최적화
  • 거래당 손실을 제한하기 위해 스톱 로스 전략을 포함

결론

이치모쿠 브레이크아웃 전략은 비교적 간단하고 직설적이며, 초보자가 이동평균을 사용하여 트렌드를 이해하기에 적합합니다. 또한 풍부한 시스템에 대한 여러 지표로 확장 될 수 있습니다. 그러나 실제 성능은 라이브 거래, 특히 위험 통제에 적용하기 전에 추가 검증과 최적화를 필요로합니다. 핵심은 시장 조건에 따라 현명하게 적용하는 것이며 맹목적으로 라인을 따르지 않습니다.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Ichimoku Crypto Breakout", shorttitle="Ichimoku Breakout", overlay=true)

Ten = input(18, minval=1, title="Tenkan")
Kij = input(52, minval=1, title="Kijun")
LeadSpan = input(104, minval=1, title="Senkou B")
Displace = input(52, minval=1, title="Senkou A")
SpanOffset = input(52, minval=1, title="Span Offset")

sts = input(true, title="Show Tenkan")
sks = input(true, title="Show Kijun")
ssa = input(true, title="Show Span A")
ssb = input(true, title="Show Span B")

source = close

//Script for Ichimoku Indicator
donchian(len) => avg(lowest(len), highest(len))
TS = donchian(Ten)
KS = donchian(Kij)
SpanA = avg(TS, KS)
SpanB = donchian(LeadSpan)

CloudTop = max(TS, KS)

Chikou = source[Displace]
SpanAA = avg(TS, KS)[SpanOffset]
SpanBB = donchian(LeadSpan)[SpanOffset]

//Kumo Breakout (Long)
SpanA_Top = SpanAA >= SpanBB ? 1 : 0
SpanB_Top = SpanBB >= SpanAA ? 1 : 0

SpanA_Top2 = SpanA >= SpanB ? 1 : 0
SpanB_Top2 = SpanB >= SpanA ? 1 : 0

SpanA1 = SpanA_Top2 ? SpanA : na
SpanA2 = SpanA_Top2 ? SpanB : na

SpanB1 = SpanB_Top2 ? SpanA : na
SpanB2 = SpanB_Top2 ? SpanB : na

//plot for Tenkan and Kijun (Current Timeframe)
p1= plot(sts and TS ? TS : na, title="Tenkan", linewidth = 2, color = gray)
p2 = plot(sks and KS ? KS : na, title="Kijun", linewidth = 2, color = black)
p5 = plot(close, title="Chikou", linewidth = 2, offset=-Displace, color = orange)

//Plot for Kumo Cloud (Dynamic Color)
p3 = plot(ssa and SpanA ? SpanA : na, title="SpanA", linewidth=2, offset=Displace, color=green)
p4 = plot(ssb and SpanB ? SpanB : na, title="SpanB", linewidth=2, offset=Displace, color=red)

p8 = plot(ssa and SpanA1 ? SpanA1 : na, title="Span A1 above", style=linebr, linewidth=1, offset=Displace, color=green)
p9 = plot(ssa and SpanA2 ? SpanA2 : na, title="Span A2 above", style=linebr, linewidth=1, offset=Displace, color=green)
p10 = plot(ssb and SpanB1 ? SpanB1 : na, title="Span B1 above", style=linebr, linewidth=1, offset=Displace, color=red)
p11 = plot(ssb and SpanB2 ? SpanB2 : na, title="Span B2 above", style=linebr, linewidth=1, offset=Displace, color=red)

fill(p8, p9, color = lime, transp=70, title="Kumo Cloud Up")
fill (p10, p11, color=red, transp=70, title="Kumo Cloud Down")

LongSpan = (SpanA_Top and source[1] < SpanAA[1] and source > SpanAA) or (SpanB_Top and source[1] < SpanBB[1] and source > SpanBB) ? 1 : 0
cupSpan = LongSpan  == 1 ? LongSpan : 0

//Kumo Breakout (Long)
//plotarrow(cupSpan, title="Kumo Breakout Long", colorup=green, maxheight=50)

//Kumo Breakout (Long) Alerts
Long_Breakout = (SpanA_Top ==1 and crossover(source, SpanAA)) or (SpanB_Top ==1 and crossover(source, SpanBB))
//Long_Breakout = ((SpanA_Top ==1 and crossover(KS, SpanAA)) or (SpanB_Top ==1 and crossover(KS, SpanBB))) and TS >= KS
//alertcondition(Long_Breakout, title="Kumo Breakout Long", message="Kumo Long")

//Kumo Breakout (Short)
ShortSpan = (SpanB_Top and source[1] > SpanAA[1] and source < SpanAA) or (SpanA_Top and source[1] > SpanBB[1] and source < SpanBB) ? 1 : 0
cdnSpan = ShortSpan == 1 ? ShortSpan : 0

//Kumo Breakout (Short)
//plotarrow(cdnSpan*-1, title="Kumo Breakout Short", colordown=red, maxheight=50)

//Kumo Breakout (Short) Alerts
Short_Breakout = (SpanA_Top ==1 and crossunder(source, SpanBB)) or (SpanB_Top ==1 and crossunder(source, SpanAA))
//alertcondition(Short_Breakout, title="Kumo Breakout Short", message="Kumo Short")

//Kumo Twist
Kumo_Twist_Long = SpanA[1] < SpanB[1] and SpanA > SpanB ? 1 : 0
Kumo_Twist_Short = SpanA[1] > SpanB[1] and SpanA < SpanB ? 1 : 0

cupD = Kumo_Twist_Long == 1 ? Kumo_Twist_Long : 0
cdnD = Kumo_Twist_Short == 1 ? Kumo_Twist_Short : 0

//Kumo Twist (Long/Short)
//plotarrow(cupD, title="Kumo Twist Long", colorup=green, maxheight=50)
//plotarrow(cdnD*-1, title="Kumo Twist Short", colordown=red, maxheight=50)

//Kumo Twist (Long/Short) Alerts
KumoTwistLong_Cross = crossover(SpanA, SpanB)
//alertcondition(KumoTwistLong_Cross, title="Kumo Twist Long", message="Kumo Twist Long")
KumoTwistShort_Cross = crossunder(SpanA, SpanB)
//alertcondition(KumoTwistShort_Cross, title="Kumo Twist Short", message="Kumo Twist Short")

//Kumo Twist (Long/Short) - Bar Color
BarColor = Kumo_Twist_Long ? green : Kumo_Twist_Short ? red : na
barcolor(BarColor)

//Chikou above/below Price
Chikou_Above = close > Chikou
Chikou_Below = close < Chikou

//Kumo Twist (Long/Short) - Plot Character on location of Chikou to Price & Price to Kumo
//plotchar(Kumo_Twist_Long and Chikou_Above, title="Kumo Twist Long and Chikou above Price", char="A", location=location.abovebar, color=green)
//plotchar(Kumo_Twist_Long and Chikou_Below, title="Kumo Twist Long and Chikou below Price", char="B", location=location.abovebar, color=red)
//plotchar(Kumo_Twist_Short and Chikou_Above, title="Kumo Twist Short and Chikou above Price", char="A", location=location.belowbar, color=green)
//plotchar(Kumo_Twist_Short and Chikou_Below, title="Kumo Twist Short and Chikou below Price", char="B", location=location.belowbar, color=red)

//Base and Conversion Line Cross
//long = cross(TS, KS) and TS>KS

long = (cross(TS, SpanA) or cross(TS, SpanB)) and TS>SpanA and TS>SpanB and TS>=KS
short = cross(TS, KS) and KS >= TS

strategy.entry("long", strategy.long, when=Long_Breakout)
strategy.entry("short", strategy.short, when=Short_Breakout)
//strategy.exit("bracket", when=short)

더 많은