ロガリズムの移動平均収束差異戦略

作者: リン・ハーンチャオチャン開催日:2023年9月21日15時58分
タグ:

概要

この戦略は,Logarithmic MACD指標を使用して取引信号を生成します.市場勢力と機会を測定するために,高速と遅いログリズム移動平均の違いを計算します.

戦略の論理

主な論理は

  • 速対数MA (デフォルト 12) と遅対数MA (デフォルト 26) を計算する

  • ロガリズムMACDは,市場の勢いを表現する,彼らの違いです.

  • シグナルラインはMA (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")

もっと