取引黄金時間戦略は,歴史データを追溯して,どの時間帯が最も適したかを自動的に判断し,対応する時間帯で取引シグナルを発信する.この戦略は,ROC指標を使用して,K線が異なる時間帯で上昇・下降を計算し,その後,異なる時間帯の取引効果を評価し,最適な買い・売り時間を特定する.
現在時間を使って,現在の時間数をnow_hour。
K線の時価変動のインディケーターをROC指数で計算する.
計算するindicatorとnow_hourの累積積分であるbuy_hourXindicator_cum。
インディケーターの累積とbuy_indicator_cumの計算
最良の購入時間 buy_hour = buy_hourXindicator_cum / buy_indicator_cum。
売れやすい時間 (sell_hour) を計算する.
現在_時間をbuy_hourとsell_hourと比較して,現在の時間帯が最適の買取・売却時間なのか判断する.
適切な買い値と売り値のタイミングで 対応するシグナルを発信する
背景の色でリアルタイムで最高の買い売りを表示する.
この戦略の最大の利点は,毎日最も適した取引時間を自動的に判断できるということです.最高の取引時間を判断するために,歴史データを人工的に観察する必要はありません.多くの時間と労力を節約します.同時に,この戦略は,リアルタイムデータに基づいて最適な取引時間を調整することができ,市場の変化に迅速に反応します.固定取引時間と比較して,この戦略は優れています.
また,この戦略はROC指標を有効に活用している.毎時間K線の上昇・下降を計算することによって,異なる時間段の取引効果をより正確に判断することができる.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)