
이 전략은 여러 기술 지표에 기반한 통합 트렌드 추적 시스템으로, 주로 1시간 시간 주기에서 사용된다. 이동 평균, 운동 지표 및 충격 지표를 결합하여, 현재 가격에 대한 여러 지표의 위치를 계산하여 시장의 흐름을 판단한다. 전략의 핵심 아이디어는, 대부분의 지표가 호불호 신호를 표시할 때 구매를 하고, 대부분의 지표가 호불호 신호를 표시할 때 판매를 하는 것이다. 이 방법은 강력한 시장 흐름을 포착하는 동시에 여러 지표의 통합을 통해 가짜 신호의 위험을 줄이는 것을 목표로 한다.
이 전략의 핵심은 여러 기술 지표의 현재 가격에 대한 위치를 계산하고, 이 지표의 통합 신호에 따라 거래 결정을 내리는 것이다. 구체적으로:
이동 평균: 6개의 다른 주기 (10, 20, 30, 50, 100, 200) 의 EMA와 SMA를 계산하여 그들이 종결 가격 위에 있거나 아래에 있는지 판단합니다.
RSI: 14주기 RSI를 사용하여, RSI가 50보다 크면 호불호 신호로 간주되며, 50보다 작은 것은 하향 신호로 간주한다.
무작위 지표: 14주기 무작위 지표를 사용하여, K선 80보다 큰 것은 낙점 신호로 간주하고, 20보다 작은 것은 낙점 신호로 간주한다.
CCI: 20주기 CCI를 사용하며, 100보다 큰 것은 보이스 신호로, 100보다 작은 것은 보이스 신호로 간주한다.
동력 지표: 계산 10주기 동력,正值은 부양 신호로,負值은 하락 신호로 본다.
MACD: 12-26-9 변수를 사용하는 MACD, 기둥 모양의 도표는 긍정적으로 볼 때 호불호 신호이며, 부정적으로 볼 때 하향 신호이다.
전략은 모든 시상 신호의 수를 계산하고, 모든 시상 신호의 수를 계산한 다음, 그 차이점을 계산한다. 이 차이점은 주요 거래 신호로 사용된다:
이 방법은 전략이 여러 지표의 통합 신호에 따라 시장 추세의 강도와 방향을 판단하여 더 안정적인 거래 결정을 내릴 수 있습니다.
다중 지표 통합 분석: 여러 기술 지표를 결합하여 전략은 시장 추세를 보다 포괄적으로 평가하고, 단일 지표로 인해 발생할 수 있는 잘못된 신호의 위험을 줄일 수 있습니다.
적응력: 전략은 다양한 유형의 지표 (트렌드 추적, 동력 및 충격 지표) 를 사용하여 다양한 시장 환경에서 유효성을 유지할 수 있습니다.
유연한 파라미터 설정: 사용자는 자신의 위험 선호와 시장 관점에 따라 입출금 및 출금 마이너스를 조정하여 전략을 더욱 개인화 할 수 있습니다.
트렌드 추적 능력: 여러 지표의 신호를 통합하여 전략은 강력한 시장 추세를 포착하여 상당한 수익을 얻을 수 있습니다.
위험 관리: 전략은 평지 논리를 포함하고 있으며, 시장 추세가 역전될 때 적시에 퇴출할 수 있어 위험을 통제하는데 도움이 된다.
시각화: 전략은 above_count와 below_count의 차이를 차트에 그려서 거래자가 시장 추세의 강도를 직관적으로 볼 수 있도록합니다.
지연성: 여러 개의 이동 평균과 다른 지연 지표를 사용했기 때문에, 전략은 트렌드 반전 시 반응이 느려서 진입이나 출퇴근이 지연될 수 있다.
과도한 거래: 불안한 시장에서, 지표는 종종 모순된 신호를 제공하여 과도한 거래와 거래 비용을 증가시킬 수 있습니다.
가짜 돌파 위험: 가로 변동 시장에서, 지표는 작은 변동을 트렌드 시작으로 오해하여 잘못된 거래 신호로 이어질 수 있습니다.
매개 변수 감수성: 전략의 성능은 입시 및 출구 값의 설정에 매우 민감할 수 있으며, 부적절한 매개 변수 설정은 전략의 부적절한 성능을 초래할 수 있다.
중단 장치의 부재: 현재 전략에는 명확한 중단 장치가 없으며, 극단적인 시장 조건에서 큰 손실이 발생할 수 있습니다.
근본적인 요소를 무시한다: 전략은 기술적인 지표에 전적으로 기초하고, 시장에 영향을 미칠 수 있는 기본적인 요소를 고려하지 않는다.
적응 파라미터를 도입한다: 적응 메커니즘을 사용하여 다양한 시장 환경에 적응하기 위해 진입 및 출구 마이너스를 동적으로 조정하는 것을 고려할 수 있다. 이것은 역사적 변동률을 분석하거나 기계 학습 알고리즘을 사용하여 수행 할 수 있다.
손해 제도를 도입: ATR 또는 고정 비율을 기반으로 한 손해 제도를 도입하여 단일 거래의 최대 손실을 제한하고 위험 관리 능력을 향상시킵니다.
최적화 지표 포지션: 특징 선택 알고리즘을 사용하여 가장 효과적인 지표 포지션을 확인하고, 불필요한 또는 효과가없는 지표를 제거하여 전략의 효율성을 높일 수 있습니다.
시간 필터 도입: 시간 필터를 추가하는 것을 고려하여 시장의 변동성이 적은 시간 동안 거래하는 것을 피하십시오. 예를 들어 시장 개장 후 첫 몇 시간 동안만 거래 할 수 있습니다.
시장 감정 지표 통합: 시장 분위기를 더 잘 판단하고 전략의 적응성을 높이기 위해 VIX 지수 또는 거래량과 같은 시장 감정 지표를 도입하십시오.
이동 평균 주기를 최적화: 다른 이동 평균 주기의 조합을 사용하거나, 다양한 시간 프레임에 대한 전략의 적응력을 높이기 위해 적응형 이동 평균을 사용할 수 있습니다.
트렌드 강도 필터를 추가: ADX와 같은 트렌드 강도 지표를 도입하여 트렌드가 충분히 강할 때만 거래하여 흔들리는 시장에서 잘못된 신호를 줄인다.
부분 포지션 관리를 구현합니다: 신호 강도에 따라 포지션 크기를 조정할 수 있습니다. 단순한 전체 포지션 출입이 아니라, 위험을 더 잘 관리하고 자금 사용량을 최적화 할 수 있습니다.
EMA/SMA 다중 지표 종합 트렌드 추적 전략은 여러 기술 지표를 기반으로 한 종합 거래 시스템으로, 여러 지표의 종합 신호를 분석하여 시장 추세를 포착하기 위해 고안되었습니다. 이 전략의 주요 장점은 다양한 시장 환경에 적응할 수 있는 포괄적 인 시장 분석 능력과 유연한 매개 변수 설정입니다. 그러나, 전략에는 지연 및 과도한 거래의 가능성과 같은 잠재적인 위험도 있습니다.
이러한 전략의 안정성과 수익성을 더 높일 수 있는 방법은, 자율적 변수를 도입하고, 위험 관리 메커니즘을 강화하고, 지표 포지션을 최적화하는 등, 제안된 방향의 최적화를 실행하는 것입니다. 궁극적으로, 이 전략은 거래자에게 포괄적인 시장 분석 도구를 제공하지만, 성공적인 적용은 여전히 거래자의 경험과 지속적인 최적화 노력이 필요합니다.
/*backtest
start: 2024-05-28 00:00:00
end: 2024-06-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA/SMA Above-Below Close with Multiple Indicators", overlay=true)
// EMA and SMA calculations
ema10 = ta.ema(close, 10)
sma10 = ta.sma(close, 10)
ema20 = ta.ema(close, 20)
sma20 = ta.sma(close, 20)
ema30 = ta.ema(close, 30)
sma30 = ta.sma(close, 30)
ema50 = ta.ema(close, 50)
sma50 = ta.sma(close, 50)
ema100 = ta.ema(close, 100)
sma100 = ta.sma(close, 100)
ema200 = ta.ema(close, 200)
sma200 = ta.sma(close, 200)
// Indicators calculations
rsi = ta.rsi(close, 14)
stochK = ta.stoch(close, high, low, 14)
stochD = ta.sma(stochK, 3)
cci = ta.cci(close, 20)
momentum = ta.mom(close, 10)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
macdHist = macdLine - signalLine
bullPower = high - ta.ema(close, 13)
bearPower = low - ta.ema(close, 13)
// Calculate the number of plots above and below close
above_count = (ema10 > close ? 1 : 0) + (sma10 > close ? 1 : 0) +
(ema20 > close ? 1 : 0) + (sma20 > close ? 1 : 0) +
(ema30 > close ? 1 : 0) + (sma30 > close ? 1 : 0) +
(ema50 > close ? 1 : 0) + (sma50 > close ? 1 : 0) +
(ema100 > close ? 1 : 0) + (sma100 > close ? 1 : 0) +
(ema200 > close ? 1 : 0) + (sma200 > close ? 1 : 0) +
(rsi > 50 ? 1 : 0) + (stochK > 80 ? 1 : 0) + (cci > 100 ? 1 : 0) +
// (adx > 25 and close > open ? 1 : 0) + (ao > 0 ? 1 : 0) +
(momentum > 0 ? 1 : 0) + (macdHist > 0 ? 1 : 0)
// (stochRsi > 0.8 ? 1 : 0) + (willr > -20 ? 1 : 0) +
// (bullPower > 0 ? 1 : 0) + (uo > 50 ? 1 : 0)
below_count = (ema10 < close ? 1 : 0) + (sma10 < close ? 1 : 0) +
(ema20 < close ? 1 : 0) + (sma20 < close ? 1 : 0) +
(ema30 < close ? 1 : 0) + (sma30 < close ? 1 : 0) +
(ema50 < close ? 1 : 0) + (sma50 < close ? 1 : 0) +
(ema100 < close ? 1 : 0) + (sma100 < close ? 1 : 0) +
(ema200 < close ? 1 : 0) + (sma200 < close ? 1 : 0) +
(rsi < 50 ? 1 : 0) + (stochK < 20 ? 1 : 0) + (cci < -100 ? 1 : 0) +
// (adx > 25 and close < open ? 1 : 0) + (ao < 0 ? 1 : 0) +
(momentum < 0 ? 1 : 0) + (macdHist < 0 ? 1 : 0)
// (stochRsi < 0.2 ? 1 : 0) + (willr < -80 ? 1 : 0) +
// (bearPower < 0 ? 1 : 0) + (uo < 50 ? 1 : 0)
// Plot the difference between above_count and below_count
plot(below_count - above_count, title="Above-Below Count", color=color.orange, linewidth=2)
// Zero line
hline(0, "Zero Line", color=color.red, linewidth=2)
// Strategy
entry_long = input(12, title="entry long")
entry_short = input(-12, title="entry short")
close_long = input(-9, title="close long")
close_short = input(9, title="close short")
if (below_count - above_count > close_short)
strategy.close("Sell")
if (below_count - above_count < close_long)
strategy.close("Buy")
// Buy signal
if (below_count - above_count > entry_long)
// strategy.close("Sell")
strategy.entry("Buy", strategy.long)
// Sell (or close short) signal
if (below_count - above_count < entry_short)
// strategy.close("Buy")
strategy.entry("Sell", strategy.short)