対数移動平均収束と発散戦略


作成日: 2023-09-21 15:38:05 最終変更日: 2023-09-21 15:38:05
コピー: 4 クリック数: 929
1
フォロー
1617
フォロワー

概要

この戦略は,対数移動平均集散波指数 (Logarithmic MACD) に基づいて取引信号を生成する.それは,速いと遅い対数移動平均の差値を計算して,市場の傾向と機会を判断する.

戦略原則

この戦略の主な論理は:

  • 素直関数移動平均 ((デフォルト12日) と素直関数移動平均 ((デフォルト26日) を計算する

  • 対数MACDは市場動力を表す2つの差値です.

  • 信号線は 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")