これは,移動平均をベースにした戦略をフォローするモメンタムインデックスETFのトレンドである.これは,インデックスETF資産の低リスクのモメンタムトレンドをフォローするトレンドの方向性を決定するために,高速と遅い移動平均のクロスオーバーと傾斜を使用する.
この戦略は,50期および150期移動平均を使用する. 急速移動平均がスロームービング平均を横切り,高速移動平均の傾斜が
この戦略は,単に移動平均の方向と傾斜を活用して市場の傾向を決定し,過剰なフィットメントを回避し,リスクを効果的に制御する.一方,移動平均は固有の強力な信号のための市場ノイズをフィルタリングする能力を持っています.
低リスクモメンタムインデックスETFのトレンドは,次の利点を持つ戦略に従います.
リスクもあります:
解決策:
この戦略をさらに最適化できる分野はいくつかあります.
結論として,これはリスクが低く,実行が容易なモメンタムインデックス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)