Estrategia de orden cronometrado

El autor:¿ Qué pasa?, Fecha: 2023-09-28 15:26:20
Las etiquetas:

Resumen general

La idea principal de la estrategia de órdenes cronometradas es llevar a cabo operaciones de compra y venta en puntos de tiempo definidos por el usuario. Esta estrategia permite a los usuarios establecer un punto de tiempo exacto. En este momento, primero venderá la posición actual y luego colocará una orden de compra límite al 1% por debajo del precio actual. Esto permite que se realice un reequilibrio periódico en un momento específico todos los días.

Estrategia lógica

La estrategia utiliza primero la función de entrada para obtener la hora y el minuto personalizados definidos por el usuario, y luego genera el tiempo de ejecución de la orden utilizando la función de marca de tiempo.

Específicamente, la estrategia primero comprueba si el tiempo actual está dentro del rango de fecha de inicio y finalización definido por el usuario. Si es así, cuando se alcanza el punto de tiempo de ejecución de la orden especificada, primero venderá la posición actual al precio de mercado y luego colocará una orden de compra límite al 99% del precio actual. Esto logra el reequilibrio a un precio 1% más bajo que el precio actual en el punto de tiempo específico.

Análisis de ventajas

La mayor ventaja de esta estrategia es que puede reequilibrar periódicamente las posiciones en puntos de tiempo específicos sin intervención manual, reduciendo los costos laborales.

Las ventajas específicas incluyen:

  1. Funcionamiento totalmente automatizado, reduciendo los costes manuales.

  2. Permite el reequilibrio periódico de las posiciones en momentos específicos.

  3. Obtiene oportunidades de compra muy bajas alrededor de un 1% por debajo de los precios actuales durante cada reequilibrio.

  4. Puntos de tiempo de reequilibrio personalizables, ajuste flexible.

  5. Fechas de inicio y final personalizables para los ciclos de reequilibrio, convenientes para la optimización de pruebas posteriores.

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Si se elige mal el momento de reequilibrio periódico, puede perder mejores oportunidades de compra o vender en momentos inadecuados.

  2. Si el precio de compra es sólo un 1% inferior al precio de venta, es posible que no obtenga un diferencial de precio de compra suficientemente bajo en cada ciclo de reequilibrio.

  3. Tanto la venta como la compra son órdenes de mercado, que pueden sufrir algún grado de deslizamiento.

  4. Si la estrategia solo funciona en momentos específicos, no se puede gestionar el mercado entre esos momentos.

  5. El reequilibrio frecuente implicará comisiones comerciales relativamente más altas.

Las soluciones correspondientes:

  1. Elegir los momentos de reequilibrio adecuados, combinándolos también con otros indicadores técnicos.

  2. Aumentar el parámetro del diferencial de precios de compra según proceda.

  3. Elegir productos con buena profundidad y baja volatilidad.

  4. Combinar con otras estrategias de gestión del riesgo durante los períodos de no reequilibrio.

  5. Controlar la frecuencia de reequilibrio adecuadamente para equilibrar las ventajas y los costes comerciales.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar la selección del punto de tiempo de reequilibrio en función de las características del ciclo intradiario de los productos de negociación.

  2. Añadir otros indicadores técnicos para evitar el reequilibrio en momentos desfavorables, por ejemplo, combinar indicadores de tendencia de media móvil.

  3. Optimizar el parámetro de compra ultrabajo para equilibrar la ventaja y el costo de negociación.

  4. Adoptar un stop loss/take profit para gestionar las posiciones entre los reequilibrios.

  5. Utilice algoritmos de aprendizaje automático para entrenar en datos históricos y optimizar automáticamente los puntos de tiempo de reequilibrio.

  6. Añadir ajustes en torno a las divisiones de acciones, dividendos, etc. para seguir los cambios de tiempo.

Resumen de las actividades

En general, la estrategia de orden cronometrada puede automatizar el proceso de negociación y reducir los costos de operación manual a través del reequilibrio periódico. Hay un gran margen de optimización en áreas como la selección de puntos de tiempo de reequilibrio, la configuración de parámetros de compra, el stop loss / take profit y la mejora del algoritmo. También es necesario tener en cuenta ciertos riesgos comerciales y tomar medidas apropiadas de gestión de riesgos. En general, esta estrategia es adecuada para los operadores cuantitativos que buscan un reequilibrio automatizado eficiente.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
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/
// © ytrevor

//@version=4
strategy("Order At Specified Time", overlay=true)


// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time

inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input


// -- These inputs are for back testing. Feel free to change the start and end dates via input -- // 
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31) 
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)

betweenDates = true


// -- Order execution --  //
if betweenDates
    buyPrice = close*0.99 //Buy at 1% lower than selling price
    strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
    strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price




Más.