モメンタムインジケーターロングとショート戦略


作成日: 2023-11-02 16:34:48 最終変更日: 2023-11-02 16:34:48
コピー: 0 クリック数: 644
1
フォロー
1617
フォロワー

モメンタムインジケーターロングとショート戦略

概要

この戦略は,平均指針 ((ADX),順勢指標 ((DMI),および商品経路指数 ((CCI) のような動態指標を使用して,トレンド方向を判断し,トレンド追跡を行う. ADXとトレンド指標がトレンド形成を確認すると,CCIのオーバーオーバー時にポジションを確立する.

戦略原則

  1. ADX,DMI,CCIを計算する

    • ADXはトレンドの強さを判断するために使用され,ADXが設定値より高いときは,トレンドが十分に強いと考えられる.
    • DMIは,DI+とDI-,それぞれ上昇傾向と下降傾向の強さを表している.DI+がDI-,より高い場合は上昇傾向にあり,逆は下降傾向である.
    • CCIは,超買超売を判断するために使用される.CCIが100未満であれば超売であり,100以上であれば超買である.
  2. 傾向を判断する

    • この傾向は,DI+がDI-を上回ると,上昇傾向と判断されます.
    • ダウンがDI+を突破すると,下降傾向と判定される.
  3. ステージに上がった

    • 上昇傾向が形成され,ADXが値より高く,CCIが-100より低いときは,多入場を行う.
    • ダウントレンドが形成され,ADXが値より高く,CCIが100より高く,空白入場を行う.
  4. 試合終了

    • 余分にDI+を装着したときに,DI-の下から清掃する.
    • “DI+“を”DI-“に変えた時に清算する.

戦略的優位分析

  1. ADXでトレンドの強さや弱さを判断し,トレンドが目立たない時に無駄な取引を避ける.

  2. DMIはトレンドの方向を決定し,誤判の確率を減らす.

  3. CCIのオーバーショート時に入場すると,トレンドの転換点を間に合うように捉え,入場リスクを減らすことができる.

  4. 動力指標の組み合わせを使用すると,判断の精度が向上する.

  5. 損失を抑える仕組みがあり,

リスクとフージュ

  1. ADXが下落すると,多くの不安取引が損失をもたらす.ADXの入場値を適切に上昇させ,トレンドが十分に顕著であることを確認することができます.

  2. DMI指標は遅滞しており,トレンドの初期の機会を逃している可能性があります.他の指標またはグラフィック技術分析と連携して,入場タイミングを決定することができます.

  3. CCIは頻繁な取引を容易にする.CCIの値幅を適切に緩和して,一部のノイズをフィルターすることができます.

  4. 多額の空調を行い,同時にポジションを保有する場合,株式市場中立戦略を採用し,套期保值ルールを制定し,全体的なポジションリスクを低減することを検討することができます.

戦略最適化の方向性

  1. ADXパラメータを最適化し,filtering noiseとcatching trend in timeの間の最適なバランスを探します.

  2. DMIパラメータを最適化し,遅滞性と感度性をバランスする.

  3. CCIパラメータの最適化,取引頻度のバランス,逆転の捕捉能力.

  4. テストは,MACD,KDJなどの他の指標を追加または修正して,より良い組み合わせの効果を探します.

  5. 交易品種をテストして,最適の品種を見つけます.

  6. ポジション管理戦略を最適化し,トレンドを追跡する能力を維持しながら,リスクを制御する.

要約する

この戦略は,ADXの判断傾向,DMIの方向決定,CCIの位置転換点の考え方を活用してトレンドを追跡する取引に強い論理性を持っています.しかし,パラメータに最適化され,ポジション管理と連携してリスクを制御する必要があります.各パラメータが適切なレベルに調整され,トレンドが顕著な品種に適用される場合は,この戦略は安定した収益を収める見込みがあります.しかし,トレーダーは,市場の環境の変化に注意深く注目し,パラメータを動的に調整する必要があります.

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

//@version=4
strategy("ADX Strategy", currency = "USD", initial_capital = 1000, overlay=true)
adxlen = input(9, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_Entry = input(25, title="ADX Entry")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)
cci_length = input(20, minval=1, title="CCI Length")
cci_ma = sma(close, cci_length)
cci = (close - cci_ma) / (0.015 * dev(close, cci_length))

stop_loss = syminfo.mintick * 100


open_longs = strategy.position_size > 0
open_shorts = strategy.position_size < 0

possible_bull = false
possible_bull := not open_longs ? (possible_bull[1] and not crossunder(up,down) ? true : false) : false
possible_bear = false
possible_bear := not open_shorts ? (possible_bear[1] and not crossunder(down,up) ? true : false) : false



bool bull_entry = crossover(up,down)

if(bull_entry and up < ADX_Entry and cci < 0)
	possible_bull := true
	bull_entry := false

if(possible_bull and up > ADX_Entry and cci > -100)
	bull_entry := true

bool bear_entry = crossover(down,up)

if(bear_entry and down < ADX_Entry and cci > 0)
	possible_bear := true
	bear_entry := false

if(possible_bear and down >= ADX_Entry and cci < 100)
	bear_entry := true

strategy.entry("Short", strategy.short, qty = 1,comment="Short", stop=high[1] - stop_loss, when = bear_entry)
strategy.entry("Long", strategy.long, qty = 1, comment="Long", stop=low[1] - stop_loss, when = bull_entry )	

strategy.close_all(when = (open_shorts and (crossover(up,down) or crossover(sig,down))) or (open_longs and ( crossover(down,up) or crossover(sig, up))))