この戦略は,株のモメンタム指標と取引量指標に基づいて購入・販売決定を行う.株価の上昇勢力が加速し,取引量が急上昇すると購入し,下落勢力が加速し,取引量が急上昇すると販売する.この戦略は,市場群の行動によってもたらされた短期価格の勢いを捕捉する.
株価変動の傾向の強さと期間がモメンタムを決定する.この戦略は,価格のモメンタムを判断するために前日からの変化を計算する.価格が連続して上昇するとモメンタムはポジティブであり,価格が連続して下がるとマイナスである.この戦略は,取引量指標も組み合わせている.取引量が20日間の移動平均値 (しきい値以上) より著しく高い場合にのみ購入・販売信号が起動する.
購入条件は,20日平均の2倍以上の取引量を持つモメントインジケーターのクロスオーバーである. 売却条件は逆である. 購入後,利益目標はエントリー価格の0.8倍,ストップロスは0.5倍に設定される. 売却後の利益目標とストップロスは相応に逆転する.
短期的な市場動向と群れの行動を把握することが最大の利点である.株価が持続的な上昇または低下を示したときに,多くの小売および機関投資家は,より強い価格勢いを追跡して取引する.これは自己強化的短期的な価格傾向を生み出します.この戦略は,そのような市場心理を活用することによって過剰なリターンを生成します.受動指数追跡戦略と比較して,この戦略の期待される過剰なリターンは高いです.
第一に,短期間の価格変動は予測不可能である.突然の出来事による急激な逆転のリスクがあり,ストップ損失にもかかわらず完全に回避することはできません.第二に,取引量のデータ品質は変動します.操作の可能性は完全に排除することはできません.これは取引信号を歪める.第三に,単純な価格とボリューム分析は短期間の傾向を正確に制御することはできません.主要な構造市場のシフトは戦略のパフォーマンスに影響を与えます.
戦略の有効性を向上させるため,より多くのデータソースを組み込むことが可能である.例えば,ソーシャルメディアプラットフォーム上の関連株の議論の量は将来の価格動向を示せる.このデータは補完的なエントリーと出口信号を提供することができる.P/E比率とP/B比率のような基本的な指標は,価格変化の持続可能性を確認し,誤った取引を減らすのに役立ちます.
この戦略は,価格動量と取引量の統合的変化を把握することで,短期的傾向と群れ行動を判断する.このようなビッグデータおよび行動金融ベースの定量戦略は,伝統的な戦略よりも高い期待回報をもたらすことができます.しかし,リスクは認識と予防が必要です.入力パラメータは,取引結果を常に改善するために常に最適化する必要があります.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Momentum and Volume Bot', overlay=true) // Define strategy parameters profit_target_percent = input(0.8, title='Profit Target (%)') stop_loss_percent = input(0.5, title='Stop Loss (%)') volume_threshold = input(2, title='Volume Threshold') // Calculate momentum momentum = close - close[1] // Calculate average volume avg_volume = ta.sma(volume, 20) // Buy condition buy_condition = ta.crossover(momentum, 0) and volume > avg_volume * volume_threshold // Sell condition sell_condition = ta.crossunder(momentum, 0) and volume > avg_volume * volume_threshold // Strategy logic strategy.entry('Buy', strategy.long, when=buy_condition) strategy.entry('Sell', strategy.short, when=sell_condition) // Set profit target and stop loss strategy.exit('Take Profit/Stop Loss', from_entry='Buy', profit=close * profit_target_percent / 100, loss=close * stop_loss_percent / 100) strategy.exit('Take Profit/Stop Loss', from_entry='Sell', profit=close * profit_target_percent / 100, loss=close * stop_loss_percent / 100) // Plotting plotshape(series=buy_condition, title='Buy Signal', color=color.new(color.green, 0), style=shape.triangleup, size=size.small) plotshape(series=sell_condition, title='Sell Signal', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)