이치모쿠 균형선 트렌드 추적 전략

저자:차오장, 날짜: 2023-10-12 17:29:46
태그:

전반적인 설명

이 전략은 트렌드 방향을 파악하고 트렌드 추적 거래를 구현하기 위해 이치모쿠 킨코 히오 지표의 변환 라인, 베이스 라인 및 클라우드 경계를 사용합니다. 가격이 클라우드 상단에 넘어가면 길고 가격이 클라우드 하단에 넘어가면 짧습니다. 미리 설정된 이익 비율이 달성되면 이익이 발생합니다. 미리 설정된 손실 비율이 달성되면 손실이 절감됩니다.

전략 논리

이 전략은 주로 다음과 같은 이치모쿠 지표선을 사용합니다.

  • 전환선 (Tenkan-sen): 지난 9 기간 동안 가장 높은 최고와 가장 낮은 최저의 평균으로 계산된 단기 트렌드를 나타냅니다.
  • 기본선 (키준센): 지난 26개 기간 동안 가장 높은 최고와 가장 낮은 최저의 평균으로 계산된 중장기 트렌드를 나타냅니다.
  • 선도 스판 A (Senkou Span A): 변환 및 기본 라인의 평균
  • 리딩 스판 B (Senkou Span B): 지난 52 기간 동안 가장 높은 최고와 가장 낮은 최저의 평균

가격이 클라우드 위를 넘을 때 길고, 가격이 클라우드 아래를 넘을 때 짧습니다. 가격은 각각 클라우드 상위와 하단에 넘을 때 엔트리 및 엑시트 이유가 유발됩니다. 이익 또는 손실 비율이 도달하면 출입이 유발됩니다.

이점 분석

  • 이치모쿠를 사용하여 트렌드 방향을 파악하고 시장 소음으로부터 잘못된 신호를 피합니다.
  • 구름 위/아래를 깨는 것은 트렌드 반전 지점을 효율적으로 식별합니다.
  • 수익을 취하고 손실을 멈추는 지점은 수익을 고정하고 위험을 제어하는 데 도움이됩니다.

위험 분석

  • 이치모쿠는 지연이 있고 가장 좋은 입구점을 놓칠 수도 있습니다.
  • 컨버션 라인 같은 선의 잘못된 매개 변수 조정은 잘못된 신호를 일으킬 수 있습니다
  • 스톱 로스 설정 너무 긴 위험 조기 출출; 너무 느린 위험 큰 손실

최적화 방향

  • 정확도를 높이기 위해 다른 지표를 결합하는 것을 고려하십시오.
  • 서로 다른 기간과 시장에 대한 매개 변수를 동적으로 최적화
  • 가격 동작에 따라 정지를 조정하고 조기 출출을 피하기 위해 후속 스톱 손실을 사용합니다.
  • 변동성에 기초한 점수를 지능적으로 조정하기 위한 자동화 수익/손실 전략을 개발

요약

이 전략은 트렌드를 식별하고 간단한 트렌드 추적을 구현하기 위해 이치모쿠 클라우드를 사용합니다. 일부 지연 및 잘못된 신호에도 불구하고 매개 변수, 정지 및 기타 지표를 사용하여 최적화하면 개선 될 수 있습니다. 이해하기 쉽고 구현하기 쉽고, 다른 전략을 개발할 때 초보자도 배우고 참조하는 것이 좋습니다. 지속적인 테스트와 최적화는 더 나은 라이브 성능을위한 매개 변수 및 규칙을 개선합니다.


/*backtest
start: 2023-10-04 00:00:00
end: 2023-10-08 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Estratégia com Ichimoku" , pyramiding=0, calc_on_every_tick = true, initial_capital = 20000, commission_type = strategy.commission.cash_per_order, commission_value = 10.00)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////Ichimoku Clouds////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////(VERSÃO 40.0)//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

periodoLinhaDeConversao = input(defval=9, title="Tenkan-sen (Linha de Conversão)",  minval=1)
periodoLinhaBase = input(defval=26, title="Kijun-sen (Linha Base)",  minval=1)
periodoNivelAdiantadoB = input(defval=52, title="Senkou Span B (Nível adiantado B)",  minval=1)
deslocamento = input(defval=26, title="Deslocamento",  minval=1)

linhaDeConversao = (highest(high,periodoLinhaDeConversao)+lowest(low,periodoLinhaDeConversao))/2
linhaBase = (highest(high,periodoLinhaBase)+lowest(low,periodoLinhaBase))/2
nivelAdiantadoA = (linhaDeConversao + linhaBase)/2
nivelAdiantadoB = (highest(high,periodoNivelAdiantadoB)+lowest(low,periodoNivelAdiantadoB))/2

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy.initial_capital = 50000
//Hardcoded quantity - strategy.entry(qty=)
capitalInicial = strategy.initial_capital
lotes = (strategy.initial_capital - (strategy.initial_capital % (open*100)))/open

//Percentage input goal - strategy.exit(profit=)
percentGoal = input (defval = 5.0, title = "Goal (%)", type = float, minval=0.0, step=0.1)
longGoal = (strategy.position_avg_price * (percentGoal/100)) * 100
shortGoal = (strategy.position_avg_price - (strategy.position_avg_price / (1+(percentGoal/100)))) * 100

//Percentage input stop - strategy.exit(loss=)
percentStop = input (defval = 0.5, title = "Stop (%)", type = float, minval=0.0, step=0.1)
longStop = (strategy.position_avg_price * (percentStop/100)) * 100
shortStop = (strategy.position_avg_price * (percentStop/100)) * 100

strategy.entry('entryLong', strategy.long, lotes, when = strategy.position_size == 0 and crossover(close,max(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.entry('entryShort', strategy.short, lotes, when = strategy.position_size == 0 and crossunder(close,min(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.exit('exitLong', 'entryLong', profit = longGoal, loss = longStop)
strategy.exit('exitShort', 'entryShort', profit = shortGoal, loss = shortStop)

plot(strategy.equity, title="Variação de capital", color=white)
//plot(strategy.position_size, color=red)

더 많은