이치모쿠 긴코 효에 기반한 트렌드 추종 전략


생성 날짜: 2023-10-12 17:29:46 마지막으로 수정됨: 2023-10-12 17:29:46
복사: 0 클릭수: 665
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 이치모쿠 킨코 히오 지표의 변환 라인, 베이스 라인 및 라인 클라우드의 전과 후 경로를 사용하여 가격의 트렌드 방향을 식별하고 트렌드 추적 거래를 구현합니다. 가격이 클라우드 상점을 돌파 할 때 더 많이하고, 클라우드 하단을 돌파 할 때 공백을 만들고, 기본 수익률 정지점에 도달하고, 기본 손실 비율 정지점에 도달합니다.

전략 원칙

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

  • 변환 라인 (Tenkan-sen): 변환 라인, 단기 트렌드를 나타내는, 9주기 최고 가격과 최저 가격의 평균
  • Base Line (Kijun-sen): 중간 추세를 나타내는 기준선, 26주기 최고 가격과 최저 가격의 평균
  • Leading Span A (Senkou Span A): 선행선 A, 전환선과 기준선의 평균
  • Leading Span B (Senkou Span B): 선도 B, 52주기 최고 가격과 최저 가격의 평균

가격이 상향으로 전방위 구름을 통과하면 더 많이 하고, 가격이 하향으로 전방위 구름을 통과하면 공백을 한다. ConfigEntry와 ExitReason은 각각 구름 꼭대기와 구름 바닥을 돌파할 때 포지션을 열고, 이익과 손실 비율을 달성할 때 평점 포지션을 한다.

우위 분석

  • 이치모쿠 지표를 사용하여 트렌드 방향을 파악하고 시장의 흔들림에 의해 오해받지 마십시오.
  • 트렌드 전환점을 식별하고 거래 효율성을 높이기 위해 클라우드 상단/아래를 뚫는 방법을 사용합니다.
  • 스톱 스톱 손실을 설정하여 수익 기회를 잡고 위험을 제어합니다.

위험 분석

  • 이치모쿠 지표는 트렌드 전환의 최적의 지점을 놓칠 수 있습니다.
  • 합리적으로 설정된 변수주기가 필요하며, 변환선, 기준선 등의 주기 설정이 잘못되면 가짜 신호가 발생할 수 있다.
  • 스톱포인트 설정이 너무 작아서 조기 종료될 수 있습니다. 설정이 너무 커서 손실이 확대될 위험이 있습니다.

최적화 방향

  • 다른 지표와 결합하여 트렌드를 파악하여 정확도를 높이는 것을 고려하십시오.
  • 동적으로 최적화 변수 주기, 다른 주기 및 시장 환경에 적응
  • 스톱 트래킹을 설정하여 스톱 포인트를 가격 변동에 따라 조정하여 조기 스톱을 방지합니다.
  • 시장의 변동성에 따라 스톱포드를 지능적으로 조정하는 자동 스톱포드 전략을 개발하는 것을 고려하십시오.

요약하다

이 전략은 이치모쿠 클라우드 인식 트렌드 방향을 활용하여 간단하고 효과적으로 트렌드 추적 거래를 수행한다. 약간의 지연과 잘못된 신호의 위험이 있지만, 매개 변수 최적화, 상쇄 기술 개선, 다른 지표와 결합하여 개선 할 수 있다. 이 전략은 이해하기 쉽고 구현, 초보자 학습에 적합하며 다른 전략 참조로도 사용할 수 있다. 지속적인 테스트와 최적화를 통해 전략 매개 변수와 규칙을 더 완벽하게 만들고 실장에서의 더 나은 성능을 얻을 수 있다.

전략 소스 코드
/*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)