이 전략은 상수 이동 평균 집적 분산 파동 지표 ((Logarithmic MACD) 를 기반으로 거래 신호를 생성한다. 그것은 빠른 및 느린 상수 이동 평균의 차이를 계산하여 시장 추세와 기회를 판단한다.
이 전략의 주요 논리는 다음과 같습니다.
빠른 대수학적 이동 평균을 계산하기 (기본 12일) 그리고 느린 대수학적 이동 평균을 계산하기 (기본 26일)
대수 MACD는 두 가지의 차이고, 시장의 동력을 나타냅니다.
신호선은 MACD의 평평한 이동 평균 (기본 9일)
MACD 라인이 아래에서 신호 라인을 뚫을 때 더 많은
MACD 라인이 위쪽에서 신호 라인을 넘어갈 때 공백
기둥 그래프 형식으로 MACD와 신호선 차이를 표현
단순 이동 평균 MACD에 비해, 대칭 MACD는 지수 성장 시장의 변화 경향을 강조할 수 있다. 대칭 변환 후, 변동이 큰 수치는 차트에 상대적으로 비교성을 유지할 수 있다.
인수 변환을 사용하여 지수 수준의 가격 변화를 감지할 수 있습니다.
대수 MACD 하이라이트 가격 변동 정보
신호선은 MACD를 평평하게 하고 거래 신호를 형성한다.
기둥형 MACD는 트렌드 방향을 직관적으로 표현합니다.
수직 변환은 가격 변동을 확대할 수 있다.
신호가 빈번하고 거래가 과다하다.
위험관리가 부족하고 손실관리가 고려되지 않았다.
대응책:
변수를 조정하여 신호 주파수를 낮추기
필터 조건을 추가하여 진동 중 신호를 피합니다.
단편적 손실을 통제하기 위한 전략 설정
최적화 매개 변수, 안정성
다른 지수 변환 방법을 시도해 보세요.
트렌드 지표와 결합된 필터 신호
더 많은 손실을 막는 전략
기계학습을 통해 신호의 신뢰성을 판단하는 방법
이 전략은 대수 변환을 적용하여 MACD 지표의 민감성을 향상시켜 트렌드 변화를 더 일찍 발견할 수 있다. 그러나 거래 주파수를 제어하는 데 주의를 기울여야 한다. 매개 변수 최적화, 풍력 제어 등의 향상으로 이 전략은 안정적이고 개성있는 정량 거래 시스템이 될 수 있다.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Logarithmic Moving Average Convergence Divergence Strategy", shorttitle="LMACD Strategy")
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", defval=false)
sma_signal = input(title="Simple MA(Signal Line)", defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// 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)
lmacd = log(fast_ma) - log(slow_ma)
signal = sma_signal ? sma(lmacd, signal_length) : ema(lmacd, signal_length)
hist = lmacd - signal
plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(lmacd, title="LMACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
if (crossover(hist, 0))
strategy.entry("Long", strategy.long, comment="LMACD long")
if (crossunder(hist, 0))
strategy.entry("Short", strategy.short, comment="LMACD short")