La estrategia de la hora de comercio de oro determina automáticamente las mejores horas para comprar y vender cada día mediante pruebas de retroceso de datos históricos. Utiliza el indicador ROC para calcular el porcentaje de aumento y caída de las velas en diferentes horas y, por lo tanto, evaluar el rendimiento comercial para encontrar las horas óptimas de compra y venta.
Utilice la hora actual para obtener la hora actual now_hour.
Se utilizará el indicador ROC para calcular el porcentaje horario de subida y caída del indicador de velas.
Calcular el producto acumulado del indicador y ahora_hora como buy_hourXindicator_cum.
Calcular la suma acumulada del indicador como buy_indicator_cum.
La mejor hora de compra buy_hour = buy_hourXindicator_cum / buy_indicator_cum.
De manera similar, se calculará la hora de mejor venta, sell_hour.
Compare now_hour con buy_hour y sell_hour para determinar si la hora actual es la hora óptima para comprar o vender.
Enviar señales correspondientes durante las horas óptimas de compra y venta.
Utilice diferentes colores de fondo para mostrar las horas óptimas de compra y venta en tiempo real.
La mayor ventaja de esta estrategia es la capacidad de determinar automáticamente las mejores horas de negociación del día. Ahorra mucho tiempo y esfuerzo de observar manualmente los datos históricos para juzgar las horas óptimas de negociación. Además, la estrategia puede ajustar las horas óptimas de negociación en tiempo real basándose en datos en vivo para responder rápidamente a los cambios del mercado.
Además, la estrategia hace un buen uso del indicador ROC. Al calcular el porcentaje horario de subida y caída de las velas, puede juzgar con mayor precisión el rendimiento comercial de diferentes períodos.
El mayor riesgo de esta estrategia radica en las limitaciones del indicador ROC en sí mismo. ROC solo considera los cambios de precios y es insensible a los cambios en el volumen de operaciones. Además, ROC no tiene un buen rendimiento en mercados de rango con bandas estrechas. Si se encuentran mercados de rango lateralmente, la efectividad del indicador ROC se descontará.
Además, la estrategia utiliza backtesting de datos históricos para determinar las horas óptimas de negociación. Pero los patrones históricos pueden no aplicarse al mercado actual. Pueden ocurrir cambios estructurales en el mercado y las reglas comerciales originales pueden dejar de aplicarse. Esto requiere ajustar los parámetros basados en las condiciones actuales del mercado en lugar de depender puramente de los resultados de backtesting.
Para hacer frente a esto, podemos considerar la combinación de otros indicadores como el volumen de operaciones para obtener un juicio más completo de las condiciones del mercado. También necesitamos probar ajustes de parámetros basados en las condiciones actuales del mercado para asegurar que las señales comerciales se alineen con los nuevos estados del mercado.
La estrategia se puede optimizar en los siguientes aspectos:
Pruebe otros indicadores para reemplazar el indicador ROC, como el volumen de operaciones, para encontrar indicadores más adecuados para calcular la fortaleza y la debilidad horarias.
Añadir otras condiciones de filtrado utilizando promedios móviles, osciladores, etc. para juzgar las tendencias locales y evitar operaciones irrazonables.
Optimizar los parámetros del período de tiempo y probar el impacto de los diferentes períodos de tiempo en los resultados.
Añadir mecanismos de stop loss y establecer puntos de stop loss razonables para controlar los riesgos comerciales.
Combinar métodos de aprendizaje automático y conjuntos de datos más grandes para resolver las horas óptimas de negociación.
En resumen, la estrategia de la hora de negociación de oro es un enfoque factible y efectivo. Utiliza el indicador ROC para determinar automáticamente las horas óptimas de compra y venta intradiaria, ahorrando mucho tiempo y esfuerzo. Pero también debemos tener en cuenta las limitaciones del indicador ROC y las pruebas de retroceso históricas, y ajustar los parámetros en función de las condiciones actuales del mercado. Además, todavía hay mucho margen de mejora al optimizar esta estrategia en muchos aspectos para generar señales más precisas y confiables. Si se utiliza para el comercio en vivo, se recomienda seguir estrictamente las reglas de stop loss para controlar los riesgos comerciales.
/*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)