この戦略は,短期および長期間の移動平均クロスオーバーをベースとした単純な移動平均クロスオーバー取引戦略である. 34期間の移動平均と89期間の移動平均を使用して,午前セッション中に購入・販売信号としてそのクロスオーバーを観察する. 短期移動平均が下から長期移動平均を超えると,購入信号が生成される. 上から下を通ると,販売信号が生成される.
この戦略のコア論理は,短期および長期移動平均値との間のクロスオーバーを取引信号としてベースにしている.具体的には,戦略は34期および89期短期および長期シンプル移動平均値 (SMA) を定義している.朝のセッション (08:00〜10:00) の間にこれらの2つのSMA間のクロスオーバーを観察するのみである.短期SMAが下から長期SMAを横切ると,市場は上昇傾向にあると考えられ,したがって購入信号を生成する.短期SMAが上から長期SMAを下に横切ると,市場は下向きの傾向にあると考えられ,したがって販売信号を生成する.
購入または売却信号を受け取ると,戦略はポジションに入れて,エントリー以来指定された数個のキャンドルを保持した後 (デフォルトは3個のキャンドル) 利益を得ることを条件として,ポジションを終了します. これにより部分的な利益をロックし,さらなる損失を回避できます.
この戦略は,朝のセッション中にクロスオーバー信号を識別するのみであることに注意すべきである.これは,この時間枠がより高い取引量を有し,トレンド変化信号がより信頼性があるためである.他の時間枠は,より大きな価格変動があり,偽信号を生成することが容易である.
この戦略には以下の利点があります.
シンプルで普遍的な移動平均のクロスオーバー規則を使用し,分かりやすく,初心者向けに適しています
質の高い信号が豊富にある朝のセッション中にのみシグナルを識別し,他の時間枠中の偽信号をフィルタリングします.
ストップ・ロスの条件は,タイムリーストップ・ロスを可能にし,部分的な利益を固定し,損失リスクを軽減します.
市場状況や個人的な取引スタイルに基づいて調整できる多くのカスタマイズ可能なパラメータ
より複雑な戦略を設計するために他の指標と簡単に組み合わせることができる.
この戦略には,主に次の側面から生じるいくつかのリスクもあります.
移動平均値自体には,より大きな遅れの属性があり,短期的な価格逆転点を見逃す可能性があります.
単純な指標のみを基に,特定の市場環境 (トレンドショック,レンジ限定など) で失敗しやすい.
誤ったストップ損失ポジションは,不必要な損失を引き起こす可能性があります.
間違ったパラメータ設定 (移動平均期,保持期など) も戦略の業績に影響を与える可能性があります.
対応する解法:
短期変化に対する感受性を高めるために他の主要指標を組み込む
ショックやレンジ・バインド市場における偽信号の影響を受けないようにフィルタリング条件を追加する
ストップ・ロスのロジックを最適化し,市場の変動に基づいてストップ・ロスの範囲を動的に調整する
最適なパラメータ設定を見つけるためのマルチパラメータ最適化
この戦略には,主に次の側面から,最適化の可能性も大きい.
ショックやレンジ・バインド市場における偽信号を避けるために他のフィルタリング条件を追加する
より強いブレイクシグナルを識別するためにモメント指標を組み込む
最適なパラメータ組み合わせを見つけるために移動平均期パラメータを最適化
市場変動に基づいてストップ・ロスの範囲を自動的に最適化する
機械学習技術に基づく戦略全体を自動的に最適化しようとします
より複雑なマルチ戦略システムを設計するために他の戦略と組み合わせる試み
一般的には,この戦略は比較的シンプルで実用的で,初心者が学ぶのに適しています.移動平均クロスオーバー戦略の典型的なパターンを体現し,リスクを制御するためにストップを使用します.しかし,より多くの市場条件のためにパフォーマンスを向上させるためにさらなる最適化が可能です.投資家は,より高度な定量的な取引戦略を設計するためにこの基本的な枠組みを利用することができます.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("34 89 SMA Crossover Strategy", overlay=true) // Define the length for the SMAs short_length = input(34, title="Short SMA Length") long_length = input(89, title="Long SMA Length") exit_candles = input(3, title="Exit after how many candles?") exit_at_open = input(true, title="Exit at Open?") // Define morning session morning_session = input("0800-1000", "Morning Session") // Calculate SMAs short_sma = ta.sma(close, short_length) long_sma = ta.sma(close, long_length) // Function to check if current time is within specified session in_session(session) => session_start = na(time(timeframe.period, "0800-1000")) ? na : true session_start // Condition for buy signal (short SMA crosses over long SMA) within specified trading hours buy_signal = ta.crossover(short_sma, long_sma) // Condition for sell signal (short SMA crosses under long SMA) within specified trading hours sell_signal = ta.crossunder(short_sma, long_sma) // Function to exit the trade after specified number of candles var int trade_entry_bar = na var int trade_exit_bar = na if (buy_signal or sell_signal) trade_entry_bar := bar_index if (not na(trade_entry_bar)) trade_exit_bar := trade_entry_bar + exit_candles // Exit condition exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar)) // Execute trades if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) if (exit_condition) strategy.close("Buy") strategy.close("Sell") // Plot SMAs on the chart plot(short_sma, color=color.blue, linewidth=1) plot(long_sma, color=color.red, linewidth=1)