動力方向の差異戦略

作者: リン・ハーンチャオチャン開催日:2023年12月27日15時37分31秒
タグ:

img

概要

モメント・ディレクション・ディバージェンス・ストラテジー (Momentum Direction Divergence Strategy) は,ウィリアム・ブラウが著書"モメント・ディレクション・ディバージェンス (Momentum, Direction and Divergence) "で説明した技術の一つである.この戦略はモメント・ディレクション・ディバージェンス (Momentum, Direction and Divergence) の3つの重要な側面に焦点を当てている.トレーダーになる前に電気工学者であったブラウは,価格とモメントの関係を徹底的に調べる.この基礎から,彼は他の振動器の欠陥を見て,ストカスティクスに関する新しい曲折を含むいくつかの革新的な技術を導入する.方向性問題については,ADXの複雑さを分析し,トレンドとトレンドでない期間を定義するのに役立つユニークなアプローチを提供しています.

この戦略は 騒音をフィルタリングするために エルゴティック・CSIと 滑らかなラインを計画しています

戦略の論理

このコードは,アダプティブ・ディレクション・インデックス (ADX) 関数 fADX を定義し,パラメータ Len をスムージング・ピリオドとする.この関数は,True Range (TR) の RMA を分母として計算し,アップサイド・モメントとダウンサイド・モメントの RMA を分母として計算し,それらを分割して上下相対強さを示す比率を得ます.最後に,ADX は,アップサイド・強さとダウンサイド・強さを組み合わせることで得られます.

その後戦略パラメータが定義されます. rはATRのスムージングパラメータ,長さはADXの長さ,BigPointValueは大きなポイント値,SmthLenはCSIのスムージング長さ,SellZoneとBuyZoneは基準を満たす販売と購入ゾーンです.逆は取引信号を逆にするかどうかを示します.

CSI計算の鍵となる論理は,まずATRとADXが計算される.その後,大きなポイント値,ATRとADXの考慮を組み込み,ペナルティ係数Kが計算される.標準化された残留nResは,ATR,ADXと閉値からの情報を組み合わせる.最後にCSI値が得られ,SMAが計算される.

CSIのSMA値によって取引方向が決定される.BuyZone以上ならロング,SellZone以下ならショート.CSI曲線とSMAをプロットし,異なる取引ゾーンをカラーコードする.

利点分析

この戦略は,動力指標ATRとトレンド指標ADXの利点を組み合わせ,市場の変動性とトレンド強度の両方を考慮し,ATRまたはADX単独の使用の制限を回避する.ペナルティ系数Kの設計は,これらの指標とビッグポイント価値の関係を巧みに統合する.

標準化残留 nRes は価格情報を含み,動向傾向だけでなく,典型的な振動器とは異なる絶対価格レベルにも注意を払い,戦略のパフォーマンスを向上させる.

調整プロセスとゾーン決定は,実用的な取引のための明確な取引信号を提供します.

リスク分析

この戦略は,ATRとADXの期間,大きなポイント値などのパラメータ設定に非常に敏感で,パフォーマンスに影響を与える可能性があります.適切なパラメータ組み合わせを決定するには広範なバックテストが必要です.

新しく提案された振動器として,CSIの有効性は,より多様な市場で検証する必要がある.CSIのパフォーマンスが低下すると戦略の収益性が損なわれる.

ストップ・ロスのメカニズムはありません. CSI信号ごとに直接ロングまたはショートです.ストップ・ロスを組み込むことで軽減する必要があるリスクがあります.

オプティマイゼーションの方向性

比較的普遍的な設定を見つけるために 異なる市場におけるパラメータの組み合わせをテストします

市場状況に基づいて ADX パラメータを調整する動的 ADX 期間メカニズムを導入する.

戦略をより堅牢にするためにエントリーと出口を決定するために他の振動指標を組み込む. 底差,上差のような効果は有用である.

ストップ・ロスのメカニズムを追加して 戦略を完了します

概要

モメント・ディレクション・ディバージェンス・ストラテジーは,複数の指標の利点を統合し,価格,モメント,トレンドの次元を利用して,CSIインジケーターを取引のために設計する.柔軟なパラメータ設定と強力な能力により,戦略はさらなるテストと最適化に値し,有益な定量的な取引ツールになることができます.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2018
// This is one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

strategy(title="Ergodic CSI Backtest")
r = input(32, minval=1)
Length = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.004, minval=0.00001)
BuyZone = input(0.024, minval=0.001)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
source = close
K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
xTrueRange = atr(1) 
xADX = fADX(Length)
xADXR = (xADX + xADX[1]) * 0.5
nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
xCSI = iff(close > 0,  nRes / close, 0)
xSMA_CSI = sma(xCSI, SmthLen)
pos = iff(xSMA_CSI > BuyZone, 1,
       iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xCSI, color=green, title="Ergodic CSI")
plot(xSMA_CSI, color=red, title="SigLin")

もっと