
この戦略は,DMI指標に基づいて構築され,+DIと-DIの交差をモニタリングすることによって株価のトレンド方向を判断し,ADX指標と連携してトレンドの強さを識別し,トレンド追跡を実現します.
この戦略は,DMI指標の2つの構成要素を使用します. +DIと-DI。+DIは上昇の勢いを測定し, +DIは上下する. -DIは買い手の上昇の勢いが強まっていることを示す。-DIは下下する勢いを測定し, -DIは下下する. +DIは売り手の下下する勢いが強まっていることを示す。
+DIがDIを貫く時,上昇傾向が形成され,多頭入場策が作られる.入場後,線形移動ストップは最高価格の一定割合を追跡する.価格が反転したとき,ストップ価格はそれに伴って下降し,ある程度以前の利益をロックする.
−DIが+DIを突破すると,下降トレンドが置き換えられ,戦略は平仓する.傾向の強さや弱さをADX指標で識別できる.ADXが高くなるほど,株価の傾向がより顕著になる.したがって,戦略はADXを補助判断指標として採用し,ADXが特定の区間の内にある場合にのみ入場する.
総じて,この戦略は株価のトレンドの転換点を捉え,移動平均のトレンドを追跡する.
この戦略の利点は主に3つあります.
DMI指標を使用して,株価の傾向方向を正確に判断できます.DMIは,単純移動平均などの指標よりもトレンドの転換を正確に判断できます.
ADX指標を活用してトレンドの強みや弱みを特定し,波動的な状況で頻繁に取引を避ける.戦略をより安定させる.
線形移動ストップメカニズムで,ストップポジションを動的に調整し,トレンドが逆転したときに早期にストップし,利益の一部をロックし,リスクを効果的に制御する.
戦略はシンプルでわかりやすく,理解しやすく,実行しやすく,量的な取引に適しています.
この戦略の主なリスクは
DMI指標は,特定の市場での失効の可能性.DMIはすべての市場に適用されません.トレンドが不明である場合,誤ったシグナルが生じる可能性があります.
株価が急落し,ストップポイントを超えた後に再び下落するリスクがある.このリスクを軽減するために,ある程度の緩衝の余地がある.
ADXパラメータの設定不適切なリスク.ADXパラメータは,戦略のタイミングの結果に直接影響し,設定が大きすぎたり小さすぎたりすると,パフォーマンスに影響する.
線形移動の止損法を使用しているため,急速な上昇で止損出場に容易なリスクがあります.この場合,特定の状況に応じて止損追跡パラメータを調整できます.
パラメータ調整,厳格な止損,最適化手順の枠組みなどにより,リスクをさらに低減することができる.
この戦略は以下の点で最適化できます.
MACD,KDJなどの他の指標を用いて,戦略の安定性を高めるための補助判断を行う.
曲線移動止損,時間移動止損などの異なる止損方法をテストする.
ポジション管理の仕組みを増やし,トレンドの方向性を確認した後に徐々にポジションを上げ,利率を上げる.
高周波因子,機械学習などの方法と組み合わせて,DMIとADXのパラメータを動的に最適化して,戦略をより賢くする.
プログラム化された風力制御モジュールを追加し,リスク予算などの方法を使用して最大撤退を厳密に制御する.
戦略の効率性,安定性,安全性を向上させるには,多種多様な手段を活用する.
この戦略は,全体的な動作の論理が明確で分かりやすく,DMI指標を使用して株価のトレンド方向を判断し,ADX指標はトレンドの強さを判断するのに補助し,線形移動ストップ方式はリスクを効果的に制御する.戦略のパフォーマンスは比較的安定しているが,まだ一定のリスクを予防する必要がある.継続的な最適化テストによって,戦略の安定性と効率を徐々に改善する.この戦略は,移動平均を追跡するタイプの戦略の優れた代表者になる可能性が高いと信じています.
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=5
//1.0 - 240202 @caddjax
strategy(title = "+DI Crossover", overlay=false)
//DMI + ADX Chart w/ overlay
// © jrregencia
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(6, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adxmax = input.int(50, title="ADX Max Buying Area", minval=1, maxval=100)
adxmin = input.int(0, title="ADX Min Buying Area", minval=0, maxval=99)
//DI cross alert
DIPcross = ta.crossover(plus, minus) ? plus : na
plotshape(DIPcross, style = shape.cross , color=color.white, location=location.absolute)
plot(adx, color=color.rgb(255, 238, 0, 23), title="ADX", linewidth=2)
p1 = plot(plus, color=color.rgb(16, 137, 0, 31), title="+DI", linewidth=1)
p2 = plot(minus, color=color.rgb(143, 82, 255, 25), title="-DI", linewidth=1)
adxmaxl = hline(adxmax, title="ADX MaxLine", color=color.silver, linestyle=hline.style_solid)
adxminl = hline(adxmin, title="ADX MinLine", color=color.silver, linestyle=hline.style_solid)
fill(p1, p2, title="Cloud Fill", color = plus > minus ? color.teal : color.red, transp=50)
fill(adxmaxl, adxminl, title="ADX Fill", color=color.silver, transp=90)
// Configure trail stop level with input options (optional)
longTrailPerc = input.float(3, title="Trail Long Loss (%)",
minval=0.0, step=0.1) * 0.01
// Determine trail stop loss prices
longStopPrice = 0.0
// Determine entry condition
enterLong = ta.crossover(plus, minus) ? plus : na
longStopPrice := if strategy.position_size > 0
stopValue = high[1] * (1 - longTrailPerc)
math.max(stopValue, longStopPrice[1])
else
0
// Submit entry orders
if enterLong
strategy.entry("EL", strategy.long)
// Submit exit orders for trail stop loss price
if strategy.position_size > 0
strategy.exit("XL TRL STP", stop=longStopPrice)