Strategi ini menghasilkan isyarat perdagangan menggunakan penunjuk MACD Logaritma. Ia mengira perbezaan antara purata bergerak logaritma cepat dan perlahan untuk mengukur momentum dan peluang pasaran.
Logik utama ialah:
Mengira MA logaritma pantas (default 12) dan MA logaritma perlahan (default 26)
Logaritma MACD adalah perbezaan mereka, menyatakan momentum pasaran
Garis isyarat dihaluskan MA MACD (default 9)
Pergi panjang apabila MACD melintasi isyarat di atas dari bawah
Pergi pendek apabila MACD melintasi di bawah isyarat dari atas
Perbezaan isyarat MACD digambarkan sebagai histogram
Berbanding dengan MACD yang mudah, MACD logaritmik dapat lebih menonjolkan trend pertumbuhan eksponensial.
Mengesan pergerakan harga eksponensial menggunakan transformasi logaritma
Log MACD menonjolkan maklumat turun naik harga
Garis isyarat meluruskan MACD ke dalam isyarat perdagangan
Histogram MACD secara intuitif menunjukkan arah trend
Transformasi log boleh memperkuat bunyi harga
Isyarat kerap, risiko perdagangan berlebihan
Tiada pengurusan stop loss, kawalan risiko yang tidak lengkap
Pengurangan:
Sesuaikan parameter untuk mengurangkan kekerapan isyarat
Tambah penapis untuk mengelakkan isyarat dalam keadaan bergelombang
Melaksanakan stop loss untuk mengawal kerugian setiap perdagangan
Mengoptimumkan parameter untuk kestabilan
Cuba transformasi lain seperti purata bergerak eksponensial
Tambah penapis trend kepada isyarat skrin
Menggabungkan strategi stop loss
Gunakan pembelajaran mesin untuk menilai kebolehpercayaan isyarat
Transformasi logaritma meningkatkan kepekaan MACD untuk pengesanan trend awal. Tetapi kekerapan perdagangan harus dikawal. Dengan pengoptimuman dalam parameter, pengurusan risiko dll, strategi ini boleh menjadi sistem kuantitatif yang stabil dan unik.
/*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")