
この戦略は,MACD (移動平均トレンド指数) とパラパラ線SAR (ストップダウンの逆転指数) を組み合わせたトレンド追跡取引システムである.この戦略は,市場トレンドの方向を識別する一方で,動量指数とトレンド指数の有機的な組み合わせにより,トレンドの強さを定量的に分析することで,より優れた取引機会を捉える.この戦略は,MACDの高速線の交差を活用して,トレンドの動きを確認し,SARの点位を使用して,トレンドの方向を確認し,移動ストップダウンを設定する.
戦略の核心的な論理は次の2つで構成されています.
入場ルール:
試合のルール
市場環境フィルターを追加します: 市場の状況を判断するために波動率指標 (ATRなど) を導入し,低波動期間の取引頻度を低下させ,または取引を一時停止することができます.
ストップロスのメカニズムを改善する: SARの停止に加えて,固定比率の停止と移動の停止の組み合わせを増加させ,リスク制御の安定性を向上させる.
最適化パラメータの選択: 機械学習方法を使用して,異なる市場サイクルに対してMACDとSARのパラメータを自動的に最適化できます.
取引量分析の追加: トレンドの強さを確認するために交差量指標を組み合わせ,信号の信頼性を向上させる.
この戦略は,MACDとパラパラ線SARを組み合わせて,より完全なトレンド追跡取引システムを構築している.この戦略は,信号明快性,リスク制御性,適応性の強さの利点があるが,トレンド依存性,信号遅れなどの制限もある.市場環境のフィルタリングを追加し,ストップダスの仕組みの最適化などの方向の改善により,戦略の安定性と実用性をさらに向上させることができる.この戦略は,中長期のトレンドを追跡するトレーダーに適している.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-11-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD + Parabolic SAR Strategy", shorttitle="MACD+SAR", overlay=true)
//========== User Inputs ==========//
// MACD parameters
fastLength = input.int(12, "MACD Fast Length")
slowLength = input.int(26, "MACD Slow Length")
signalLength = input.int(9, "MACD Signal Length")
// SAR parameters (start, step, maximum)
afStart = input.float(0.02, "SAR Start")
afIncrement = input.float(0.02, "SAR Increment")
afMax = input.float(0.2, "SAR Max")
//========== MACD Calculation ==========//
[macdLine, signalLine, histLine] = ta.macd(close, fastLength, slowLength, signalLength)
//========== Parabolic SAR Calculation ==========//
sarValue = ta.sar(afStart, afIncrement, afMax)
//========== Entry Conditions ==========//
// Long: MACD > Signal + close > SAR
longCondition = (macdLine > signalLine) and (close > sarValue)
// Short: MACD < Signal + close < SAR
shortCondition = (macdLine < signalLine) and (close < sarValue)
//========== Enter Positions ==========//
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
//========== Exit Positions on Opposite Signal ==========//
if strategy.position_size > 0 and shortCondition
strategy.close("Long", comment="Exit Long")
if strategy.position_size < 0 and longCondition
strategy.close("Short", comment="Exit Short")