이치모쿠 혼합 Macd 및 Tsi 결합 전략


생성 날짜: 2023-11-27 11:50:43 마지막으로 수정됨: 2023-11-27 11:50:43
복사: 0 클릭수: 641
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이치모쿠 혼합 Macd 및 Tsi 결합 전략

전략 개요

이 전략은 시시 균형표, Macd 지표, Chaikin 금 흐름 지표 및 Tsi 흔들림 지표와 같은 여러 가지 기술 지표를 종합적으로 사용하여 시장 추세 방향을 정확하게 판단하여 단선 거래를 수행합니다.

2. 전략 원칙

전략은 1차 균형 표의 수평선, 기준선, 선행선 등의 지표를 사용하여 당일 가격 경향을 판단한다. 동시에 Macd의 빠른 느린 평균선 교차 신호, 그리고 금 흐름 지표 및 충격 지표가 자본 유입과 유출을 판단한다. 여러 지표의 통합 판단 후 구매 결정한다.

수평선 상에서 기준선을 통과하면 선행선은 0축 위에 있고, 종결가는 1차 균형표의 구름 위에 있을 때 부자신호이다. 반대로 수평선 아래에서 기준선을 통과하면 선행선은 0축 아래에 있고, 종결가는 구름 끝 아래에 있을 때 부자신호이다. 전략은 동시에 Macd의 직선 도표가 긍정인지, 그리고 Chaikin 금흐름 지표와 흔들림 지표가 동방향 긍정인지 검출한다. 지표가 동방향 부자신호인 경우, 상환을 한다. 지표가 동방향 부자신호인 경우, 공매를 한다.

지표가 이전과 반대되는 신호를 발산할 때, 반전 거래가 평정되기 전의 포지션을 수행한다.

세, 전략적 장점

  1. 여러 지표의 합성 판단을 사용하여 판단의 정확성을 높인다.

  2. 시장의 동요를 실시간으로 추적할 수 있는 단선 조작.

  3. 모든 거래는 자동으로 이루어집니다.

네, 전략적 위험과 해결 방법

  1. 여러 지표가 동방향으로 시상하거나 하락하는 판단은 잘못된 판단의 위험을 초래할 수 있다. 일부 판단 조건을 적절히 완화하여 잘못된 판단의 비율을 줄일 수 있다.

  2. 높은 주파수 단선 거래는 높은 수수료와 트렌드를 잡기 어려운 것이다. 적절히 지분 주기를 연장하여 비용을 상쇄하기 위해 초과 수익을 추구한다.

  3. 무손실 설정은 더 큰 손실을 초래할 수 있다. ATR과 결합하여 적절한 스톱 포인트를 설정하거나 이동 스톱을 설정할 수 있다.

다섯째, 전략적 최적화

  1. 최적화 변수 조합 ᆞ 평균선 변수를 다른 주기 및 품종에 맞게 조정 ᆞ

  2. 손해 방지 장치를 추가한다. ATR 지표와 결합하여 모바일 손해 방지 라인을 동적으로 설정한다.

  3. 포지션 관리를 늘리고, 거래량 비율을 동적으로 조정한다.

  4. 기계 학습 기술을 결합하여 지표와 신호를 최적화합니다.

VI. 결론

이 전략은 여러 가지 기술 지표를 사용하여 트렌드의 실시간 변동을 판단하여 고주파 단선 거래를 한다. 약간의 위험이 있지만, 최적화를 통해 개선할 수 있다. 이 전략은 더 깊은 연구와 실물 검증을 통해 스톱 손실과 포지션 관리를 증가시켜 거래 위험을 줄이는 것이 좋다.

전략 소스 코드
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
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/
// © 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)