ゴールデン・トレード・アワー戦略は,歴史的なデータをバックテストすることで,毎日購入・販売する最適な時間を自動的に決定する.ROC指標を使用して,異なる時間にキャンドルスタイルの上昇・減少パーセントを計算し,それによって最適な購入・販売時間を発見するために取引パフォーマンスを評価する.
現在の時間を使って,現在の時間 now_hour を取得します.
ROC インディケーターを使用して,キャンドルスタイクインディケーターの毎時上昇と減少パーセントを計算します.
インディケーターとnow_hourの累積積積を buy_hourXindicator_cum として計算する.
インディケーターの累積合計を buy_indicator_cum として計算する.
最良の買い時間 buy_hour = buy_hourXindicator_cum / buy_indicator_cum
同じように,ベストセール・時間 (sell_hour) を計算する.
現在時刻が最適の購入または販売時間かどうかを判断するために now_hour と buy_hour と sell_hour を比較します.
最適な買い物・販売時間に対応する信号を送信します
リアルタイムで最適の買い売り時間を表示するために 異なる背景色を使用します
この戦略の最大の利点は,1日の最良の取引時間を自動的に決定する能力である.最適な取引時間を判断するために,手動に歴史的データを観察することから多くの時間と労力を節約する.また,この戦略は,市場変化に迅速に対応するために,リアルタイムでリアルタイムで最適な取引時間を調整することができます.この戦略は固定取引時間と比較してより多くの利点があります.
また,この戦略はROC指標をよく利用している.キャンドルスタイクの毎時上昇と減少パーセントを計算することによって,異なる期間の取引パフォーマンスをより正確に判断することができる.ROC指標は不対称の変動に敏感であり,市場の変化を反映することができる.
この戦略の最大のリスクは,ROC指標そのものの限界にある.ROCは価格変化のみを考慮し,取引量の変化に敏感ではない.また,ROCは狭い帯を持つレンジバインド市場でうまく機能していない.横向きのレンジバインド市場に出会った場合,ROC指標の有効性は値下げされる.
また,戦略は最適な取引時間を決定するために,歴史的なデータのバックテストを使用する. しかし,歴史的なパターンは現在の市場には適用されない可能性があります. 市場には構造的変化が発生し,元の取引ルールはもはや適用されない可能性があります. これは,バックテスト結果に純粋に依存するのではなく,現在の市場状況に基づいてパラメータを調整する必要があります.
この問題に対処するために,取引量などの他の指標を組み合わせて市場状況のより包括的な判断を得ることを検討できます.また,現在の市場状況に基づいてパラメータ調整をテストし,取引信号が新しい市場状態に準拠することを確認する必要があります.
戦略は以下の側面で最適化できます.
ROC指標を代替する他の指標,例えば取引量を使って,毎時間の強度と弱さを計算するのに適した指標を見つけましょう.
移動平均値,振動値などを使用して,他のフィルタリング条件を追加し,ローカルトレンドを判断し,不合理な取引を避ける.
期間パラメータを最適化し,結果に対する異なる期間の影響をテストする.
ストップ・ロスのメカニズムを追加し,取引リスクを制御するために合理的なストップ・ロスのポイントを設定します.
機械学習方法とより大きなデータセットを組み合わせて最適な取引時間を解決します
総括すると,ゴールデン・トレード・アワー戦略は実行可能で効果的なアプローチである.ROCインジケーターを使用して,最適な日中購入・販売時間を自動的に決定し,多くの時間と労力を節約する.しかし,ROCインジケーターと歴史的なバックテストの限界も注意し,現在の市場状況に基づいてパラメータを調整する必要があります.さらに,より正確で信頼性の高いシグナルを生成するために,この戦略を多くの側面で最適化することで改善の余地があります.ライブ取引に使用される場合は,取引リスクを制御するためにストップ・ロスのルールを厳格に遵守することをお勧めします.
/*backtest start: 2023-08-19 00:00:00 end: 2023-09-18 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mablue (Masoud Azizi) //@version=5 strategy("Trade Hour V3",overlay=false) timezone = input.string("Europe/London",options=["America/New_York","America/Los_Angeles","America/Chicago","America/Phoenix","America/Toronto","America/Vancouver","America/Argentina" ,"America/El_Salvador","America/Sao_Paulo","America/Bogota","Europe/Moscow","Europe/Athens","Europe/Berlin","Europe/London","Europe/Madrid","Europe/Paris","Europe/Warsaw","Australia/Sydney","Australia/Brisbane","Australia/Adelaide","Australia/ACT","Asia/Almaty","Asia/Ashkhabad","Asia/Tokyo","Asia/Taipei","Asia/Singapore","Asia/Shanghai","Asia/Seoul","Asia/Tehran","Asia/Dubai","Asia/Kolkata","Asia/Hong_Kong","Asia/Bangkok","Pacific/Auckland","Pacific/Chatham","Pacific/Fakaofo","Pacific/Honolulu"] ) source = input.source(close) tp = input.int(1,"ROC Timeperiod") now_hour = hour(time,timezone) indicator = ta.roc(source,tp) buy_hourXindicator_cum = ta.cum(indicator* now_hour) buy_indicator_cum = ta.cum(indicator) buy_hour = buy_hourXindicator_cum/buy_indicator_cum sell_hourXindicator_cum = ta.cum( (1/indicator ) * now_hour) sell_indicator_cum = ta.cum(1/indicator) sell_hour = sell_hourXindicator_cum/sell_indicator_cum plot(buy_hour,color=color.green) plot(sell_hour,color=color.red) plot(now_hour,color=color.gray,display=display.none) bool isLongBestHour = now_hour==math.round(buy_hour) bool isShortBestHour = now_hour==math.round(sell_hour) bgcolor(isLongBestHour ? color.new(color.green,80) : na) bgcolor(isShortBestHour ? color.new(color.red,80) : na) strategy.order("buy", strategy.long, when =isLongBestHour) strategy.order("sell", strategy.short, when = isShortBestHour)