モメント インデックス ETF トレンド 戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-05 15:13:25
タグ:

img

概要

これは,移動平均をベースにした戦略をフォローするモメンタムインデックスETFのトレンドである.これは,インデックスETF資産の低リスクのモメンタムトレンドをフォローするトレンドの方向性を決定するために,高速と遅い移動平均のクロスオーバーと傾斜を使用する.

戦略の論理

この戦略は,50期および150期移動平均を使用する. 急速移動平均がスロームービング平均を横切り,高速移動平均の傾斜が値を超えると,ロングエントリーに対する上向きトレンド逆転をシグナルする. 急速移動平均がスロームービング平均を下回り,または高速移動平均の傾斜が値を下回ると,退場ポジションに対する下向きトレンド逆転をシグナルする.

この戦略は,単に移動平均の方向と傾斜を活用して市場の傾向を決定し,過剰なフィットメントを回避し,リスクを効果的に制御する.一方,移動平均は固有の強力な信号のための市場ノイズをフィルタリングする能力を持っています.

利点分析

低リスクモメンタムインデックスETFのトレンドは,次の利点を持つ戦略に従います.

  1. 強力なリスク管理能力 動平均は,効果的なリスク管理のために市場のノイズをフィルターします.
  2. 低実施コスト. 単純な移動平均値のみが使用され,低コストで容易な実施がもたらされる.
  3. 安定した利益.インデックスETF自体は変動が低く,トレンドをフォローすることで安定した過剰収益が得られます.
  4. 適応性が高い.多くの調整可能なパラメータにより,異なるインデックスETFの最適化が可能である.

リスク分析

リスクもあります:

  1. トレンドを決定するために移動平均を使用すると,急速な逆転が見逃される可能性があります.
  2. パラメータに敏感です パラメータの設定が正しくない場合,過剰取引や機会を逃す可能性があります
  3. 市場状況による業績依存.不安定な市場/横向市場では劣悪な業績を出す可能性があります.

解決策:

  1. 他の指標を組み込み,迅速な逆転を決定する.
  2. パラメータをテストして最適化します
  3. 変化する市場状況に基づいてパラメータを動的に調整する.

オプティマイゼーションの方向性

この戦略をさらに最適化できる分野はいくつかあります.

  1. 戦略を補完するためにMACD,KDなどの他の指標を使用します.
  2. ストップ・ロスの論理を組み込み リスクをさらに制御する
  3. 移動平均期を最適化して,より多くのインデックスETFを調整する.
  4. パラメータを動的に調整して 異なる市場環境に対応します

結論

結論として,これはリスクが低く,実行が容易なモメンタムインデックスETFのトレンドフォロー戦略である.移動平均クロスオーバーを使用してトレンド方向性を決定し,強力なリスク制御,低実施コスト,安定した利益などの利点がある.いくつかの欠陥があるにもかかわらず,戦略は多くの面でさらに改善され,インデックスETF資産配分のための効果的なツールになることができます.


/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//please use on daily SPY, or other indexes only
strategy("50-150 INDEX TREND FOLLOWING", overlay=true)

//user input
fastSMA = input(title="Fast Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=50,confirm=false)
slowSMA = input(title="Slow Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=150,confirm=false)
longSlopeThreshold = input(title="Bullish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=5,confirm=false)
shortSlopeThreshold = input(title="Bearish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-5,confirm=false)
atrValue = input(title="Average True Range (Int)",type=input.integer,minval=1,maxval=100,step=1,defval=14,confirm=false)
risk = input(title="Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=100,confirm=false)

//create indicator
shortSMA = sma(close, fastSMA)
longSMA = sma(close, slowSMA)

//calculate ma slope
angle(_source) =>
    rad2degree=180/3.14159265359
    ang=rad2degree*atan((_source[0] - _source[1])/atr(atrValue)) 

shortSlope=angle(shortSMA)
longSlope=angle(longSMA)

//specify crossover conditions
longCondition = (crossover(shortSMA, longSMA) and (shortSlope > longSlopeThreshold)) or ((close > shortSMA) and (shortSMA > longSMA) and (shortSlope > longSlopeThreshold))
exitCondition = crossunder(shortSMA, longSMA) or (shortSlope < shortSlopeThreshold)
strategy.initial_capital = 50000
//units to buy
amount = (risk / 100) * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)

//long trade
if (longCondition and strategy.position_size == 0)
    strategy.order("Long", strategy.long, units)

//close long trade
if (exitCondition and strategy.position_size > 0)
    strategy.order("Exit", strategy.short, strategy.position_size)

// Plot Moving Average's to chart
plot(shortSMA, color=color.blue)
plot(longSMA, color=color.green)

もっと