この戦略は,トレンド指数 (DMI) と移動平均を組み合わせ,トレンド指向を特定し,取引信号を生成します.DMIが価格がトレンド状態にあり,移動平均がトレンド指向を確認すると,購入および販売信号を生成します.
この戦略は2つの主要指標に基づいています.
DMI+とDMI−を含むDMIは,トレンドの存在と方向性を特定するために使用されます.DMI+がDMI−を超えると上昇傾向が現れます.DMI−がDMI+を超えると下落傾向が現れます.
移動平均は,通常15〜50日で設定され,価格傾向の方向性を決定するために使用されます.価格が移動平均以上 (以下) にあるとき,上昇傾向 (ダウントレンド) が示されます.
この戦略は,まずDMI+,DMI-,および移動平均値を計算する.DMIがトレンド状態 (DMI+がDMI以上またはその逆) を表示し,移動平均値が方向性を確認すると,取引信号が生成される.具体的には:
DMI+が DMI以上,価格が MA以上になると,ロングする.
DMI+を超えて価格がMAを下回るとショートします
逆入力オプションも含まれています.有効化すると,長信号と短信号が逆になります.
DMIのようなトレンドフォローインジケーターと 移動平均値のようなトレンドインジケーターを組み合わせることで 両方の強みを活用することで 信号の信頼性が向上します
DMIの利点は,新興トレンドの迅速な識別である.移動平均値はノイズをフィルターし,トレンド方向を確認するのに役立ちます.両方を一緒に使用すると,トレンドではない市場で誤った信号を回避しながら,早期トレンドエントリが可能です.
逆のオプションは,トレンドと逆のトレンドとの取引にも柔軟性を追加します.
この戦略の主なリスクは,
トレンド移行の周りに誤った信号が発生し,損失につながる可能性があります.パラメータを調整したりストップを使用することで,このリスクを制御できます.
トレンド形成には時間がかかる.その間,価格変動は誤った信号を生む可能性がある.DMIとMA期間を延長することで,この騒音をフィルタリングすることができます.
リバース・トレーディングは,不利な動きで損失のリスクが大きい.リバース・オプションでは,損失の大きさは制限され,利益をロックするためにトレーリング・ストップを使用する必要があります.
パラメータは異なる製品や時間枠に再最適化する必要があります. パラメータを直接コピーするとうまく機能しない可能性があります.
この戦略の可能な最適化には,以下が含まれます.
異なる移動平均期間のテストをすることで,トレンド移行に最適な時期を見つけることができます.
DMIの平滑期をテストし,トレンド内の短い逆転をフィルタリングする.
逆のオプションとデフォルトの傾向の影響を評価し,過去のバックテストでより良いアプローチを選択する.
ストップ・ストップやタイム・ストップやブレイク・ストップなどのストップ・戦略を組み込み 損失の大きさを制限します
異なる製品や時間枠のパラメータ性能を評価し,パラメータを最適化する.
RSIのようなフィルターを追加して 局所的な極端な状態で 誤った信号を回避します
この戦略は,トレンドをフォローするDMIと移動平均指標の強みを組み合わせて,不安定な市場でのストップを避けながらトレンドを早期に入力する.逆のオプションはまた柔軟性も追加する.パラメータの最適化,ストップ,および追加のフィルターとの組み合わせから安定性のさらなる向上がもたらされる.しかし,パラメータは,異なる製品とタイムフレームに適用性のために再テストする必要があります.
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 03/03/2017 // The related article is copyrighted material from Stocks & Commodities Aug 2009 // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Combining DMI And Moving Average For A EUR/USD Trading System") Length_MA = input(30, minval=1) Length_DMI = input(14, minval=1) reverse = input(false, title="Trade reverse") xMA = sma(close, Length_MA) up = change(high) down = -change(low) trur = rma(tr, Length_DMI) xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur) xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur) nPDI = xPDI nNDI = xNDI nMA = xMA nPDI_1 = xPDI[1] nNDI_1 = xNDI[1] nMA_1 = xMA[1] bMDILong =iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) bMALong = iff(close > nMA and close[1] < nMA_1, true, iff(close < nMA and close[1] > nMA_1, false, false)) bMAShort = iff(close > nMA and close[1] < nMA_1, false, iff(close < nMA and close[1] > nMA_1, true, false)) pos = iff(bMDILong and bMALong, 1, iff(bMDIShort and bMAShort, -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(nPDI, color=green, title="DMI Plus") plot(nNDI, color=red, title="DMI Minus")