ゴールデンクロス戦略は,長期投資家がエントリータイミングを決定するのに役立つシンプルな市場指標である. 戦略は,短期および長期移動平均のクロスオーバーに基づいて取引信号を生成する. 短期移動平均が長期移動平均を超越してゴールデンクロスを形成すると,市場はブールトレンドに入り,ロングポジションが開くことを示唆する. 短期移動平均が長期移動平均を下回り,デスクロスを形成すると,市場は下落トレンドに入り,既存のポジションを閉鎖すべきであることを示す.
この戦略は,短期および長期の単純な移動平均値を計算するために sma関数を使用します.短期MA長さは50日,長期MA長さは200日に設定されています. 戦略は,クロスオーバーとクロスアンダー関数を使用して,短期MAが長期MAを横切るか横切るか判断します.これは取引信号を生成します.
短期MAが長期MAを超えると,トレンドがダウンからアップに変化していることを信号し,ゴールデンクロスを形成し,ロングエントリー信号となる. 戦略は,strategy.entryを使用してロングポジションを開く.短期MAが長期MAを下回ると,トレンドがアップからダウンに変化していることを信号し,デスクロスを形成し,アウトシグナルとなる. 戦略は,strategy.close_allを使用してすべてのポジションを閉じる.
この戦略は,ゴールデン/デス・クロスによってマークされたトレンド逆転点を捕捉し,エントリーと出路のタイミングを決定することで,市場のノイズを効果的にフィルタリングすることができ,シンプルで実践的なトレンドフォロー戦略です.
ストップ・ロスを追加し,誤った信号を減らすために MA パラメータを最適化し,信号を確認するために他の指標と組み合わせ,ブラック・スワン・イベントに対処するメカニズムを開発することでリスクを管理することができます.
戦略は以下の側面で最適化できます.
短期および長期間のMA長さを調整し,異なる市場特性により適するように,MAパラメータを最適化する.
音量上昇時にのみ音量条件を表示する
MACD,RSIなどの他の指標を組み込み,クロスオーバー信号を確認し,誤った信号を避ける.
ストップ・ロスのストラテジーを追加します. ストップ・ロスのストラリングや ストップ・ロスのパーセント, 単一の損失を制御するために.
固定分数や指数的なサイズなどのポジションサイズの戦略を追加し,全体的なリスクを制御します
偽のクロスをフィルタリングするためにクロスオーバー後にしばらく観察することでエントリーを最適化します
上記の最適化により,戦略パラメータは市場の統計特性をより良くマッチし,誤った信号をフィルターし,リスクを制御し,シンプルさを維持しながら戦略の安定性と収益性をさらに向上させることができます.
ゴールデンクロス戦略は,シンプルで実用的なトレンドフォロー戦略である.移動平均のクロスを通して市場のトレンドを直感的に捉え,長期投資家のエントリー&エグジットポイントを効果的に特定することができる. 実行しやすく,初心者向けに適し,さまざまな最適化に適応できるため,戦略は柔軟で信頼性の高い取引システムになることができます. 全体的に,シンプルさと実用性を組み合わせ,ゴールデンクロス戦略は定量的な取引ツールキットに貴重な追加です.
/*backtest start: 2023-08-27 00:00:00 end: 2023-09-26 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Dumb strategy 2 - Golden Cross", shorttitle="Golden Cross", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) lShort = input(50, title="short length") lLong = input(200, title="long length") src = input(close, title="Source") smaShort = sma(src, lShort) smaLong = sma(src, lLong) plot(smaShort, title="SMA Short", style=line, linewidth=3, color=lime) plot(smaLong, title="SMA Long", style=line, linewidth=3, color=red) // //Backtest Time Inputs // testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(01, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? blue : na bgcolor(testPeriodBackgroundColor, transp=80) testPeriod() => true if testPeriod() longCondition = crossover(smaShort, smaLong) if (longCondition) strategy.entry("Long Entry", strategy.long) shortCondition = crossunder(smaShort, smaLong) if (shortCondition) strategy.close_all(true)