DMIと移動平均収束取引戦略


作成日: 2023-09-19 21:51:14 最終変更日: 2023-09-19 21:51:14
コピー: 1 クリック数: 733
1
フォロー
1617
フォロワー

概要

この戦略は123反転戦略,DMI戦略,移動平均戦略を組み合わせて,さまざまなタイプの戦略を効果的に集約し,強力な組み合わせの戦略を形成します. この戦略は,トレンドの反転点で逆行し,トレンドが継続するときに順位操作することができます. 同時に,移動平均を使用してフィルタリングすることもできます.

戦略原則

  1. 123逆転策略:閉盘価格が前日の閉盘価格より2日連続で低くなって,前日の閉盘価格より高くなると,9日連続でスローK線が50より低くなると多行;閉盘価格が前日の閉盘価格より2日連続で高くなって,前日の閉盘価格より低くなって,9日連続でスローK線が50より高くなると空行.

  2. DMI戦略:+DI線でDI線を穿越するときは多行;+DI線を穿越するときは空行.

  3. 移動平均戦略: 終了価格の上部で移動平均を横切るときに多めに; 終了価格の下部で移動平均を横切るときに空いてください.

  4. 三つの戦略信号が同方向信号を発したときに開き,そうでない場合は平仓.

この戦略は,トレンド戦略と反転戦略を組み合わせて,価格反転の機会を間に合うように捉え,トレンドの実行の機会を逃さないことができます.移動平均のフィルタリングは偽の信号を減らすことができます.複数の戦略は相互検証し,信号の信頼性を向上させることができます.

戦略的優位分析

  1. 複数の戦略を組み合わせて,勝利率を上げます. 123の反転戦略は,ターニングポイントをキャプチャし,DMI戦略は,トレンドをキャプチャし,移動平均は,シグナルをフィルターすることができます.

  2. 逆転戦略とトレンド戦略を組み合わせて,逆転とトレンドの両方を捉え,柔軟な取引を行う.

  3. 移動平均のフィルターを使用することで,短期的な波動によって生じる偽信号を減らすことができます.

  4. 複数の戦略の組み合わせは,相互にシグナルを検証し,単一の戦略が特定の市場環境の影響で失効することを防ぐことができます.

  5. 戦略のパラメータが多く,最適化によって最適なパラメータの組み合わせを見つけ,戦略の安定性を高めることができる.

リスク分析

  1. 逆転策は振動傾向に容易く巻き込まれます. 傾向策と組み合わせることで回避できます.

  2. DMI策略は,トレンドの初期にチャンスを逃す可能性があります. DMIのパラメータを適切に縮小して,感受性を向上させることができます.

  3. 移動平均は遅延性があり,生成信号を遅らせることがあります. 反応速度を速めるために周期を適切に短縮することができます.

  4. 多戦略の組み合わせは勝率を上げても,戦略の複雑さを高めます.各パラメータの設定を慎重にテストする必要があります.

  5. 戦略は取引コストに敏感である. 適切な緩解の止損範囲を推奨し,あまりにも頻繁に空調を避ける.

戦略最適化の方向性

  1. 戦略のパラメータを最適化して,最適なパラメータの組み合わせを見つけます.

  2. MACD,RSIなどの他の指標のフィルタリング信号を追加して,戦略の安定性をさらに高めます.

  3. トレンドストップ,ショッキングストップなどのストップ・ストップ戦略を追加し,リスクを制御する.

  4. ポジション管理の最適化,固定ポジション,ダイナミックポジションなど,戦略の収益率を向上させる.

  5. 特定の品種に対するパラメータの調整により,戦略の適応性を向上させる.

  6. 戦略のパフォーマンスを向上させるため,より多くの歴史データを活用して,意思決定を支援する機械学習モデルを増やす.

要約する

この戦略は,反転戦略,トレンド戦略,移動平均フィルタを効果的に組み合わせることで,柔軟な多変の集積戦略を形成する.これは,価格の転換点と,トレンドの継続を捕捉するだけでなく,多戦略の組み合わせによって信号の安定性と信頼性を向上させる. 最適化パラメータ設定,止損戦略,ポジション管理などの分野で,さらなる改善の余地があり,強力な実用性と拡張性がある.この戦略の運用を熟練して掌握すれば,実際の取引で有意な利益が得られると信じられている.

ストラテジーソースコード
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/10/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

DMIMA(Length_MA, Length_DMI) =>
    pos = 0.0
    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)))
    pos

strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
	   iff(posReversal123 == -1 and posDMIMA == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )