로그리듬 이동 평균 컨버전스 디버전스 전략

저자:차오장, 날짜: 2023-09-21 15:38:05
태그:

전반적인 설명

이 전략은 로그아리듬 MACD 지표를 사용하여 거래 신호를 생성합니다. 시장 동력과 기회를 측정하기 위해 빠르고 느린 로그아리듬 이동 평균 사이의 차이를 계산합니다.

전략 논리

가장 중요한 논리는

  • 빠른 로가리듬 MA를 계산합니다. (디폴트 12) 느린 로가리듬 MA를 계산합니다. (디폴트 26)

  • 로가리듬 MACD는 시장 동력을 나타내는 차이입니다.

  • 신호 라인은 MACD의 MA를 평평하게 합니다. (디폴트 9)

  • MACD가 아래로부터 신호를 넘을 때 길게 이동합니다.

  • MACD가 상위로부터 신호 아래를 넘을 때 단위로 이동합니다.

  • 히스토그램으로 표시된 MACD 신호 차이

간단한 MACD와 비교하면 로그아리듬 MACD는 기하급수적 성장 추세를 더 잘 강조 할 수 있습니다. 로그 변환은 차트에 변동적인 값의 비교성을 유지합니다.

장점

  • 로그아리듬 변환을 사용하여 기하급수적인 가격 움직임을 감지합니다.

  • 로그 MACD는 가격 변동 정보를 강조합니다.

  • 신호선은 MACD를 거래 신호로 부드럽게합니다.

  • MACD 히스토그램은 직관적으로 트렌드 방향을 보여줍니다.

위험성

  • 로그 변환은 가격 소음을 증폭시킬 수 있습니다.

  • 빈번한 신호, 과도한 거래 위험

  • 스톱 로스 관리가 없거나 위험 통제가 불완전하다

완화:

  • 신호 주파수를 줄이기 위해 매개 변수를 조정

  • 필터를 추가 하 여 흔들리는 조건에서 신호를 피합니다.

  • 거래 당 손실을 제어하기 위해 Stop Loss를 구현합니다.

더 나은 기회

  • 안정성을 위한 매개 변수를 최적화

  • 지수적 이동 평균과 같은 다른 변환을 시도해보세요

  • 화면 신호에 트렌드 필터를 추가합니다

  • 스톱 로스 전략

  • 신호 신뢰성을 판단하기 위해 기계 학습을 사용

결론

로그아리듬 변환은 초기 트렌드 검출에 대한 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")

더 많은