
この戦略は,平均指針 ((ADX),順勢指標 ((DMI),および商品経路指数 ((CCI) のような動態指標を使用して,トレンド方向を判断し,トレンド追跡を行う. ADXとトレンド指標がトレンド形成を確認すると,CCIのオーバーオーバー時にポジションを確立する.
ADX,DMI,CCIを計算する
傾向を判断する
ステージに上がった
試合終了
ADXでトレンドの強さや弱さを判断し,トレンドが目立たない時に無駄な取引を避ける.
DMIはトレンドの方向を決定し,誤判の確率を減らす.
CCIのオーバーショート時に入場すると,トレンドの転換点を間に合うように捉え,入場リスクを減らすことができる.
動力指標の組み合わせを使用すると,判断の精度が向上する.
損失を抑える仕組みがあり,
ADXが下落すると,多くの不安取引が損失をもたらす.ADXの入場値を適切に上昇させ,トレンドが十分に顕著であることを確認することができます.
DMI指標は遅滞しており,トレンドの初期の機会を逃している可能性があります.他の指標またはグラフィック技術分析と連携して,入場タイミングを決定することができます.
CCIは頻繁な取引を容易にする.CCIの値幅を適切に緩和して,一部のノイズをフィルターすることができます.
多額の空調を行い,同時にポジションを保有する場合,株式市場中立戦略を採用し,套期保值ルールを制定し,全体的なポジションリスクを低減することを検討することができます.
ADXパラメータを最適化し,filtering noiseとcatching trend in timeの間の最適なバランスを探します.
DMIパラメータを最適化し,遅滞性と感度性をバランスする.
CCIパラメータの最適化,取引頻度のバランス,逆転の捕捉能力.
テストは,MACD,KDJなどの他の指標を追加または修正して,より良い組み合わせの効果を探します.
交易品種をテストして,最適の品種を見つけます.
ポジション管理戦略を最適化し,トレンドを追跡する能力を維持しながら,リスクを制御する.
この戦略は,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))))