マルチファクターモメンタムローテーション戦略


作成日: 2023-10-25 11:52:19 最終変更日: 2023-10-25 11:52:19
コピー: 0 クリック数: 754
1
フォロー
1617
フォロワー

マルチファクターモメンタムローテーション戦略

概要

この戦略は,RSI,平均線MACD,ブリン帯,の止まる要因を総合的に利用して,多要因の動量輪廻取引を実現する.戦略は,まず,複数の技術指標が同時に購入または販売の信号を発信しているかどうかを判断し,もしそうなら,それに応じて購入または販売の操作を行う.同時に,戦略は,利潤をロックし,リスクを制御するために移動のストップとストップを使用する.

戦略原則

この戦略は以下の部分から構成されています.

  1. 判断する要素

    • RSI: 14サイクルRSIを計算して,設定された買取ラインより低いか,設定された売出ラインより高いかを判断します.
    • TDシーケンス: 値下がり停止日を計算して,買入・売却条件が満たされているかどうかを判断する
    • MACD:MACDとMACDの履歴値を計算し,買入・売却条件を満たしているかどうかを判断する
    • ブリン帯:20日のブリン帯を計算して,価格がブリン帯の上下線に触れたかどうかを判断する
  2. 入場と出場

    • 買い条件:RSI,MACD,TDの順序が同時に買い信号を発したときに買い
    • 販売条件:RSI,MACD,TDの順序が同時に販売信号を発したときに販売
    • ストップ:固定ポイントまたはパーセントで移動ストップ
    • ストップ・ローズ:最大許容損失のポイントを設定し,ストップ・ローズを行う.
  3. 戦略の最適化

    • RSIパラメータの調整:RSIの最適化周期パラメータ
    • 調整MA周期:平均線の周期パラメータを最適化
    • 入口条件の調整:入口信号の増減
    • 他の要素を加える:より多くの技術指標と統計要素を組み合わせる

戦略的優位分析

  • 多要素の組み合わせにより,入場の正確性を確保する

この戦略は,単一の技術指標を考慮するだけでなく,RSI,MACD,TD序列などの複数の要因を組み合わせることで,単一の指標によって引き起こされる偽信号を軽減し,入場の正確性を向上させることができます.

  • 動態特征,トレンドを捉える

RSI,MACDなどの指標は,より明らかな動力特性を有し,株価のトレンドの変化を捕捉することができる.平均線などのトレンド追跡指標と比較して,これらの指標の転換はより敏感である.

  • ストップ・ローズ・メカニズム リスク管理

移動ストップは,行情運行動態でストップし,利潤をよりよくロックすることができる.ストップロスの設定は,単一損失を制御することができる.

  • 戦略は明確でシンプルです

この戦略は,一般的な技術指標と組み合わせて,ある程度の普遍性を持っています. 規則は比較的シンプルで明確で,理解し操作しやすいです.

戦略的リスク分析

  • 多頭制では効果が低い

この戦略は逆市操作を主として,逆転戦略に属している.牛市では,この戦略を適用すると,しばしば損耗が起こり,効果が悪くなる可能性がある.

  • 取引頻度が高くなる可能性があります.

参数設定が過度に敏感であれば,取引頻度が高くなり,取引コストとスライドポイントの損失が増加する可能性があります.

  • リスク分散指数

この戦略は,複数の指標が同じ方向の信号に依存しているが,時には各指標が異なることもあり,誤った信号を発する.

  • リスクが追いつかれる

固定ストップポイントを設定すると,破損が起こりうる.このリスクを回避するために,ダイナミックストップを設定するか,株の交換を検討することができます.

戦略最適化の方向性

  • パラメータを最適化して取引頻度を減らす

RSIのパラメータと平均線の周期パラメータをテストして,取引頻度が低い組み合わせを見つけることができます.

  • 統計要素を増やして効率化

株の自体の統計的特性 (変動率,流動性など) を組み合わせてパラメータを設定し,戦略の効率性を高めることができる.

  • VIXなどの全市場指標を組み合わせた

VIXなどの全市場パニック指数に基づいて戦略のパラメータを調整することができ,市場パニック時に取引頻度を減らす.

  • ポジションのテスト

長期の持有または短期の回転が戦略の効果に与える影響を判断するために,異なるポジション保持周期をテストすることができます.

  • ストップ・ストップ・ストップ・ストラトジーの最適化とテスト

動的止止損のより高度な方法が研究され,その効果を測ることができる.

要約する

この戦略は,複数の技術指標を総合的に考慮し,より高い入場率の正確性を確保した上で,移動ストップ・ストローを活用して利益をロックし,リスクをコントロールする.戦略の構想は,シンプルで明確で,操作を容易に理解し,パラメータ最適化と指標優遇によって効果をさらに向上させることができる.しかし,この戦略は,逆市と震動の状況に適しており,継続的な上昇の状況では効果が劣る可能性がある.この戦略は,典型的な多因量動反転策であり,株式の輪動取引の構想と参考を提供することができる.

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

//@version=2
strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true)


RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") 


TD = close > close[4] ?nz(TD[1])+1:0
TS = close < close[4] ?nz(TS[1])+1:0
TDUp = TD - valuewhen(TD < TD[1], TD , 1 )
TDDn = TS - valuewhen(TS < TS[1], TS , 1 )
TDcheckUP = iff(TD == 2, true, false)
TDCheckDOWN = iff(TS == 2, true, false)

[_, _, histLine] = macd(close, 12, 26, 9)
MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0  and histLine[4] > 0, true, false)
MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false)

RSICal = rsi(close, 14)
RSICalNewUp = 50 + RSIDifference
RSICalNewDown = 50 - RSIDifference
RSICheckUp = iff(RSICal <= RSICalNewUp, true, false)
RSICheckDown = iff(RSICal >= RSICalNewDown, true, false)

basis = sma(close, 20)
dev = 2 * stdev(close, 20)
upperBB = basis + dev
lowerBB = basis - dev
BBCheckUp = iff(close > upperBB, true, false)
BBCheckDown = iff(close < lowerBB, true, false)
//BBCheckUp = false
//BBCheckDown = false


BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false)
SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false)


ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) 
ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) 
useStopLoss = input(false, title="Use Stop Loss?")
LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) 
colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) 

ProfitStrat = ProfitStratA * 10
ProfitTrailing = ProfitTrailingA * 10
Lossstrat = useStopLoss ? LossstratA * 10 : 1000000

if (strategy.position_size > 0)
    strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat)
    
    
if (strategy.position_size < 0)   
    strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) 
    

if (BuyCheck == true and strategy.position_size == 0)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    


if (SellCheck == true and strategy.position_size == 0)
    strategy.entry("Sell", strategy.short, comment="Short Entry")
    


plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar)
plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)