이치모쿠 클라우드 차트에 기초한 트렌드 전략 최적화

저자:차오장, 날짜: 2024-01-19 14:45:21
태그:

img

전반적인 설명

이 전략은 트렌드를 추적하기 위해 이치모쿠 클라우드 차트를 다양한 보조 지표와 결합합니다. 주로 트렌드 방향을 결정하고 신호 품질을 향상시키기 위해 필터링을위한 MACD, CMF, TSI 및 기타 지표를 결정하기 위해 이치모쿠 클라우드를 사용합니다. 이것은 여러 가지 요인에 대한 포괄적인 판단에 기반한 강력한 트렌드 전략입니다.

원칙

이 전략은 주로 트렌드 방향을 판단하기 위해 이치모쿠 클라우드의 변환을 활용합니다. 텐칸센이 클라우드 위에 넘어가면 길게 갈 것이고 텐칸센이 아래로 넘어가면 짧게 갈 것입니다. 한편, 시그널 품질을 보장하기 위해 다층 필터링을 위해 치코 스판, MACD 히스토그램, CMF 및 TSI를 사용합니다.

구체적으로, 긴 신호는 다음과 같은 경우에 작동합니다.

  1. 텐칸센이 구름 위를 지나고
  2. 구름이 넓고 텐칸센은 키준센 위에 있습니다.
  3. 치쿠 스판은 0점 위에 있습니다.
  4. 폐업 가격은 클라우드 위에 있습니다
  5. MACD 히스토그램은 0 이상입니다.
  6. CMF는 0.1보다 크다
  7. TSI는 0 이상입니다

짧은 신호는 위의 조건이 뒤집어지면 발생합니다. 그러한 포괄적인 기준에 의해 대부분의 잘못된 신호를 필터링하고 시장의 주요 추세를 포착 할 수 있습니다.

장점

이 전략의 가장 큰 장점은 여러 가지 지표를 결합함으로써 잘못된 신호를 필터링하고 강한 경향을 감지하는 것입니다. 구체적으로:

  1. 이치모쿠 구름은 주요 트렌드 방향을 결정합니다.
  2. 보조 지표는 신호를 더 잘 필터링하고 위험을 줄입니다.
  3. 보다 신뢰할 수 있는 신호를 위해 여러 시간 프레임을 포괄적으로 고려
  4. 엄격한 규칙으로 고품질의 설정만 거래하고 불안정한 시장을 피합니다.
  5. 트렌드 수익을 극대화하기 위한 트렌드 다음 메커니즘

이러한 판단을 통해 전략은 중장기 핫 섹터를 효과적으로 식별하고 트렌드 거래에서 이익을 얻을 수 있습니다.

위험성

이 전략의 주요 위험은 다음과 같습니다.

  1. 잘못된 신호를 일으키는 잘못된 탈출 위험
  2. 모든 이익 손실로 이어지는 트렌드 역전 위험
  3. 상대적으로 낮은 거래 빈도에서 놓친 기회

해결책:

  1. 거래 빈도를 높이기 위해 필터링 기준을 적절히 완화하십시오.
  2. 손실 크기를 제한하기 위해 손실 중지 조건을 추가합니다.
  3. 신호 정확성을 향상시키기 위해 매개 변수를 최적화

강화

주요 최적화 방향:

  1. 더 나은 매개 변수 조합을 찾기 위해 더 많은 백테스트를 통해 매개 변수 최적화

  2. 리스크 제어에 스톱 로스 메커니즘을 추가합니다.

  3. 수익을 잠금하기 위해 후속 스톱 손실을 추가

  4. 더 나은 필터 조합을 찾기 위해 더 많은 지표를 테스트

  5. 실제 탈출을 구분하는 규칙을 추가합니다.

결론

이 전략은 이치모쿠 클라우드와 여러 보조 지표를 효과적으로 결합합니다. 매개 변수 최적화, 스톱 로스 메커니즘, 지표 선택에 대한 추가 개선은 높은 안정적인 수익을 위해 안정성과 신호 품질을 향상시킬 수 있습니다. 전략은 강력한 실용적 가치를 가지고 있습니다.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-13 14:00:00
period: 1m
basePeriod: 1m
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/
// © exlux99

//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)



//Inputs
ts_bars = input(10, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(30, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)


ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
fast_length = input(title="Fast Length", type=input.integer, defval=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low


//CMF
lengthA = input(8, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)


//TSI
long = input(title="Long Length", type=input.integer, defval=8)
short = input(title="Short Length", type=input.integer, defval=8)
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)



bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0  and mf < -0.1 and tsi_value < 0



strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.entry("Short", strategy.short, when=bearish and short_entry)

strategy.close("Long", when=bearish and not short_entry)
strategy.close("Short", when=bullish and not long_entry)

더 많은