Стратегия золотых торговых часов автоматически определяет лучшие часы для покупки и продажи каждый день путем обратного тестирования исторических данных.
Используйте текущее время, чтобы получить текущий час 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, чтобы определить, является ли текущий час оптимальным для покупки или продажи.
Отправлять соответствующие сигналы в оптимальное время покупки и продажи.
Используйте разные цвета фона для отображения оптимальных часов покупки и продажи в режиме реального времени.
Самым большим преимуществом этой стратегии является возможность автоматического определения лучших торговых часов в день. Она экономит много времени и усилий от ручного наблюдения за историческими данными для оценки оптимальных торговых часов. Кроме того, стратегия может регулировать оптимальные торговые часы в режиме реального времени на основе живых данных, чтобы быстро реагировать на изменения рынка. Эта стратегия имеет больше преимуществ по сравнению с фиксированными торговыми часами.
Кроме того, стратегия хорошо использует индикатор 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)