이치모쿠 혼합 균형 테이블 Macd와 Tsi 결합 전략

저자:차오장, 날짜: 2023-11-27 11:50:43
태그:

img

I. 전략 개요

이 전략은 Ichimoku Kinko Hyo, Macd, Chaikin Money Flow 및 Tsi 오시레이터와 같은 기술 지표를 종합적으로 사용하여 단기 거래의 시장 동향의 방향을 정확하게 판단합니다.

II. 전략 원칙

이 전략은 이치모쿠의 텐칸센 라인, 키준센 라인, 센쿠 스판 A 및 센쿠 스판 B 라인을 사용하여 내일 가격 트렌드를 판단합니다. 동시에 Macd의 빠르고 느린 이동 평균 라인 및 돈 흐름 지표 및 오스실레이션 지표의 교차 신호를 결합하여 자금의 유입과 출입을 결정합니다. 여러 지표의 포괄적 인 판단 후에 구매 및 판매 결정이됩니다.

텐칸센 라인이 키준센 라인의 위를 넘을 때, 치코 스판은 0축 위에 있고, 폐쇄 가격은 이치모쿠 클라우드 위에 있으며, 이는 상승 신호입니다. 반대로, 텐칸센 라인이 키준센 라인의 아래를 넘을 때, 치코 스판은 0축 아래에 있으며, 폐쇄 가격은 클라우드 아래에 있으며, 이는 하락 신호입니다. 동시에, 전략은 MACD 히스토그램이 양성인지, 그리고 차킨 돈 흐름 지표와 TSI 오시레이터가 같은 방향으로 양성인지 검출합니다. 지표가 같은 방향으로 상승하고 있다면, 긴 포지션은 구매로 열리고, 지표가 같은 방향으로 하락하고 있다면, 짧은 포지션은 판매로 열립니다.

지표가 이전 지점과 반대 신호를 발산하면 이전 지점을 평평화하기 위해 역거래가 이루어집니다.

III. 전략의 장점

  1. 여러 가지 지표의 조합을 사용하면 판단 정확도가 향상됩니다.

  2. 단기 거래는 실시간으로 시장 변동을 추적합니다.

  3. 수동적인 개입이 필요없고, 완전히 자동화된 알고리즘 거래입니다.

IV. 전략의 위험과 해결책

  1. 여러 지표가 동시에 상승하거나 하락하는 합성 판단은 잘못된 판단의 위험이 있습니다. 일부 판단 기준은 잘못된 판단율을 줄이기 위해 적절하게 완화 될 수 있습니다.

  2. 고 빈도 단기 거래는 상대적으로 높은 수수료가 있으며 추세를 파악하기가 어렵습니다. 비용을 충당하기 위해 과도한 수익을 추구하기 위해 포지션 보유 기간을 적절히 연장 할 수 있습니다.

  3. 스톱 로스 설정이 없어도 더 큰 손실이 발생할 수 있습니다. 적절한 스톱 로스 포인트 또는 이동 스톱 로스는 ATR을 기반으로 설정할 수 있습니다.

V. 전략 최적화의 방향

  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)

더 많은