
La idea principal de la estrategia es combinar el indicador de dinámica de Lazy Bear con el indicador de MFI de Crypto Face, comprando cuando la tendencia es al alza y vendiendo cuando la tendencia es a la baja, para lograr una estrategia de comercio cuantitativa que siga la tendencia del mercado.
Utiliza el indicador de dinámica BlueWave de Lazy Bear para determinar la dirección de la tendencia calculando la regresión lineal del precio de cierre con los puntos altos, bajos y cercanos a los 20 días. Cuando el BlueWave pasa por encima de 0, indica una tendencia hacia arriba; cuando el BlueWave pasa por debajo de 0, indica una tendencia hacia abajo.
El indicador de MFI mejorado de Crypto Face, que determina el flujo de fondos mediante el cálculo de los últimos 58 días de fluctuaciones y volúmenes de transacciones. MFI mayor a 0 indica el flujo de fondos, MFI menor a 0 indica el flujo de fondos.
Cuando BlueWave está por encima de 0 y el MFI es mayor que 0, emite una señal de compra para abrir una posición más; cuando BlueWave está por debajo de 0 y el MFI es menor que 0, emite una señal de venta para abrir una posición vacía.
Establezca condiciones de stop loss y stop loss, siga las tendencias del mercado para obtener ganancias, mientras controla el riesgo.
El uso combinado de dos indicadores permite determinar con mayor precisión la dirección de las tendencias del mercado.
El indicador de BlueWave suaviza la curva, evita ser desviado por datos anormales y determina las tendencias del mercado de manera más confiable.
Los indicadores de las MFI pueden ayudar a determinar el flujo de fondos y evitar pérdidas por brechas falsas.
La estrategia tiene menos parámetros y es fácil de implementar y manejar.
La configuración flexible de las condiciones de stop-loss para controlar el riesgo de la operación.
Se puede configurar un período de compra y venta para evitar fluctuaciones anormales en el mercado en un momento determinado.
La estrategia puede continuar con la caída de la bolsa y generar pérdidas si la caída continúa.
Si el indicador produce una señal falsa, puede ser bloqueado al entrar.
El punto de parada es demasiado alto y el riesgo de pérdidas se expande.
La probabilidad de que el punto de parada sea superado es mayor cuando el mercado es demasiado volátil.
La optimización incorrecta de los parámetros puede conducir a una mala eficacia de la estrategia.
La estrategia genera señales de transacción demasiado frecuentes, lo que aumenta las tarifas de transacción y los costos de los puntos de deslizamiento.
Optimizar los parámetros de BlueWave y MFI para que el indicador sea más estable y confiable.
En combinación con los indicadores de tendencia, se evita la pérdida de pérdidas por déficit.
Ajuste dinámico de la proporción de stop loss y stop loss para reducir la probabilidad de cobertura.
Optimizar las condiciones de apertura de las posiciones y reducir las señales falsas.
Considere la posibilidad de incorporar un control de posición para evitar el seguimiento de la caída.
La combinación de algoritmos de aprendizaje automático hace que los puntos de venta sean más precisos.
La estrategia utiliza una combinación de BlueWave y MFI para determinar la dirección de la tendencia, hacer más cuando la tendencia es ascendente y hacer menos cuando la tendencia es baja, para poder seguir la tendencia del mercado de manera efectiva. Sin embargo, también hay algunos riesgos en la configuración de parámetros, detener el deterioro, y la continuación de la caída, por lo que es necesario optimizar aún más la configuración de parámetros, el mecanismo de deterioro y las condiciones de filtración para mejorar la eficacia y la estabilidad de la estrategia.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2021
strategy(title="Crypto Squeeze Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true)
//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1")
long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick
long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick
// Enable Short Strategy
enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3")
short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4")
short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick
short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4")
short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick
// Plot Stoploss & Take Profit Levels
long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100)
long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100)
short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100)
short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100)
plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level")
plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level")
plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level")
plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level")
// Date Range
start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range")
start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range")
end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range")
end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range")
in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0))
//// Indicator Inputs
// Lazy Bear's Momentum Indicator
BlueWave = linreg(close - avg(avg(highest(high, 20), lowest(low, 20)), sma(close, 20)), 20, 0)
// Replicated version of Crypto Face's MFI Indicator
mfiUpper = sum(volume * (change(hlc3) <= 0 ? 0 : hlc3), 58)
mfiLower = sum(volume * (change(hlc3) >= 0 ? 0 : hlc3), 58)
_mfiRsi(mfiUpper, mfiLower) =>
if mfiLower == 0
100
if mfiUpper == 0
0
100.0 - (100.0 / (1.0 + mfiUpper / mfiLower))
mf = _mfiRsi(mfiUpper, mfiLower)
mfi = (mf - 50) * 3
//// Strategy
// Creating Long and Short Strategy
buy_signal = crossover(BlueWave, 0) and mfi > 0
sell_signal = crossunder(BlueWave, 0) and mfi < 0
// Long Strategy
if buy_signal and in_date_range and enable_long_strategy == true
strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position")
strategy.exit("Long SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.")
strategy.close("Long", when=sell_signal, alert_message="Close Long Position")
// Short Strategy
if sell_signal and in_date_range and enable_short_strategy == true
strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position")
strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.")
strategy.close("Short", when=buy_signal, alert_message="Close Short Position")