
이 전략은 하나의 클라우드 그래프 지표와 여러 가지 보조 지표를 결합한 트렌드 추적 전략이다. 주로 하나의 클라우드 그래프를 사용하여 트렌드 방향을 판단하고, MACD, CMF, TSI 등의 지표를 필터링하여 신호 품질을 향상시킵니다. 이것은 여러 요소의 통합 판단의 강력한 트렌드 전략이다.
이 전략은 주로 하나의 구름 도표의 변화를 사용하여 트렌드 방향을 판단한다. 안테나에서 구름 반도를 통과할 때 더하고, 구름 반도를 통과할 때 비어있다. 동시에 예비 타이어 라인, MACD 기둥 도형, CMF 지수 및 실제 힘 지수 TSI를 결합하여 다층 필터링을 수행하여 신호 품질을 보장한다.
특히, 여러 신호를 만드는 데 필요한 조건은 다음과 같습니다.
허공 신호의 촉발 조건은 위의 조건의 반대이다. 이렇게 여러 가지 지표의 통합 판단을 통해 대부분의 가짜 신호를 효과적으로 필터링하여 시장의 주요 추세를 잠금 할 수 있다.
이 전략의 가장 큰 장점은 여러 지표의 조합이 가짜 신호를 제거하고 강력한 추세를 잡는 것입니다. 구체적으로 다음과 같은 몇 가지 장점이 있습니다.
위와 같은 종합적인 판단을 통해, 전략은 주식시장의 중장기 선의 뜨거운 부문을 효과적으로 잡을 수 있으며, 트렌드 추적 중개로 인해 풍부한 초과 수익을 얻을 수 있습니다.
이 전략은 다음과 같은 몇 가지 위험 요소를 가지고 있습니다.
위험성을 줄이는 방법은 다음과 같습니다.
이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.
매개 변수 최적화. 더 많은 재검토 데이터를 통해 매개 변수를 최적화하여 더 좋은 매개 변수 조합을 찾을 수 있다.
스톱 메커니즘을 추가한다. 적당히 진입 조건을 완화하지만 위험을 통제하기 위해 스톱을 설정한다.
이동 상쇄 손실을 증가 시키십시오. 트렌드 추적 상쇄 손실을 사용하여 수익을 고정하고 상쇄 손실을 피하십시오.
필터링 지표를 최적화하십시오. 더 많은 지표를 테스트하여 더 나은 필터링 신호 조합을 찾을 수 있습니다.
자동으로 위조를 감지하는 규칙이 추가됐습니다.
이 전략의 통합 적용 한 클라우드 도표와 여러 보조 지표 판단 효과는 뚜렷하다. 매개 변수 최적화, 스톱 로즈 메커니즘 개선, 지표 최적화 등의 수단을 통해 전략의 안정성을 더욱 강화하고, 신호 품질을 향상시키고, 더 높은 안정적인 수익을 얻을 수 있다. 이 전략은 강력한 실용성을 가지고 있다.
/*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)