Esta es una estrategia de negociación multi-blank personalizada para Bitcoin. Permite hacer más o menos en función de los diferentes días de negociación de la semana. Los precios pueden tender a moverse en una dirección u otra en diferentes días de negociación de la semana.
Asegúrese de utilizar un diagrama de línea de tiempo para ver el rendimiento y el historial de operaciones para asegurarse de que el script funciona como se espera y de que obtiene la mayor cantidad de datos históricos posible de Trading View.
La lógica central de esta estrategia es permitir a los usuarios elegir entre realizar múltiples operaciones todos los días de la semana, realizar operaciones en blanco o no realizar ninguna operación.
En primer lugar, permite a los usuarios configurar un rango de fechas para la medición, incluyendo el mes, fecha y año de inicio y el mes, fecha y año de finalización.
Luego, utiliza una serie de marcos de tiempo para almacenar las representaciones numéricas de cada día de la semana, desde el 0 del domingo hasta el 6 del sábado.
El otro conjunto de timeframes_options se utiliza para almacenar la opción de realizar multitrasferencias, blanquitrasferencias o no realizar transacciones todos los días. Esto se configura con una opción de entrada.
En el ciclo for, la estrategia comprueba si el día de negociación actual coincide con algún día de la serie de plazos. Si coincide, y la opción es diferente al día anterior, primero se cierran todas las posiciones pendientes.
Si la opción no es sin casilla, se abre la posición en la dirección correspondiente según la casilla múltiple o la casilla vacía seleccionada.
De esta manera, la estrategia puede realizar operaciones con múltiples cabezas en blanco en un rango de fechas definidas, según la configuración de cada día de la semana.
La principal ventaja de esta estrategia es que ofrece una operación multihead altamente personalizada. El usuario tiene la libertad de elegir qué dirección realizar cada día de la semana.
A diferencia de una estrategia de negociación semanal fija, esta estrategia puede ajustarse con flexibilidad. Si algunos días no resultan bien, se puede modificar fácilmente para negociar solo otros días.
El rango de fechas de detección también es muy flexible, ya que se puede probar cualquier período de tiempo especificado por el usuario para ver qué combinación de fechas funciona mejor.
La lógica de las transacciones es muy clara y sencilla, fácil de entender y modificar. El usuario puede ajustar los parámetros sin necesidad de programar.
La estrategia también elimina automáticamente las posiciones pendientes de liquidación al cambiar de dirección cada día, evitando riesgos innecesarios.
El principal riesgo de esta estrategia es que las opciones de transacción diarias configuradas por el usuario no siempre son adecuadas para todos los rangos de fechas.
Por ejemplo, el trabajo en horas extras durante varios días laborables puede resultar eficaz en ciertos períodos de tiempo, pero puede fallar en otros períodos.
Por lo tanto, se debe tener cuidado al probar diferentes rangos de fechas y no depender de los resultados de una sola prueba. El ajuste de los parámetros debe adaptarse a las condiciones específicas del mercado.
Otro riesgo es que no se pueda detener el equilibrio a tiempo cuando cambia la dirección diaria. Esto puede causar una expansión de las pérdidas. Sin embargo, la estrategia trata de mitigar este problema mediante el equilibrio automático.
En general, la estrategia es más dependiente de la optimización de parámetros y requiere pruebas suficientes para encontrar la combinación de parámetros adecuada para las diferentes condiciones del mercado.
La estrategia se puede optimizar en los siguientes aspectos:
Aumentar la lógica de stop loss en los cambios de dirección diarios, establecer un stop loss móvil cuando las posiciones están en ganancias y reducir las retractaciones.
Se añade un filtro que emite señales cuando el precio supera el máximo o mínimo de un día determinado, para evitar la repetición de operaciones en ausencia de tendencia.
Reducir el tamaño de la posición en momentos de alta volatilidad y aumentar la posición en momentos de baja volatilidad para controlar el riesgo.
La opción de incorporar el aprendizaje automático a los días de negociación determina la probabilidad de negociación diaria de acuerdo con los datos históricos y genera la dirección diaria de la dinámica.
Aumentar la lógica de manejo de emergencias, como la suspensión de la negociación en caso de eventos financieros importantes, para evitar la estafa.
La estrategia ofrece una gran flexibilidad en el manejo de múltiples hechos aéreos a través de la selección de la dirección diaria. El usuario puede combinar libremente las pruebas para encontrar los mejores parámetros. Sin embargo, la estrategia tiene un alto requisito de optimización y requiere una gran cantidad de pruebas para encontrar la configuración adecuada para diferentes mercados.
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
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/
//@version=4
// strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)
frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")
tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
timeframes = array.new_int(7, 1)
timeframes_options = array.new_string(7, 'None')
array.set(timeframes,0,7)
array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday'))
array.set(timeframes,1,1)
array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday'))
array.set(timeframes,2,2)
array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday'))
array.set(timeframes,3,3)
array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday'))
array.set(timeframes,4,4)
array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday'))
array.set(timeframes,5,5)
array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday'))
array.set(timeframes,6,6)
array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday'))
for i = 0 to array.size(timeframes) - 1
if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
strategy.close_all()
if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
if array.get(timeframes_options, i) == 'Long'
strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
else if array.get(timeframes_options, i) == 'Short'
strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))