Esta estrategia es un sistema de negociación cuantitativo basado en señales cruzadas de media móvil dual, que identifica los cambios de tendencia del mercado a través de la intersección de medias móviles a corto y largo plazo, combinado con una gestión dinámica de stop-loss y take-profit para controlar el riesgo.
La estrategia utiliza dos promedios móviles simples (SMA) de diferentes períodos como la base principal para las señales de negociación. Una señal larga se genera cuando el MA a corto plazo cruza por encima del MA a largo plazo, y una señal corta se genera cuando el MA a corto plazo cruza por debajo del MA a largo plazo. El sistema comprueba el estado de la posición actual cuando ocurren las señales, cierra primero cualquier contraposición, luego abre nuevas posiciones de acuerdo con la dirección de la señal.
Esta es una estrategia comercial cuantitativa integral con lógica clara. Captura los cambios de tendencia a través de un cruce de doble MA y gestiona el riesgo con niveles dinámicos de stop-loss y take-profit. Las fortalezas de la estrategia se encuentran en su enfoque sistemático y control de riesgos, pero se debe prestar atención a varios riesgos de mercado en el comercio en vivo. A través de la optimización y mejora continuas, la estrategia puede mantener un rendimiento estable en diferentes entornos de mercado. Se recomienda realizar una prueba posterior exhaustiva antes de la implementación en vivo y ajustar los parámetros de acuerdo con las condiciones reales.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD) // Configurable Inputs stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1) take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1) short_ma_length = input.int(title="Short MA Length", defval=9, minval=1) long_ma_length = input.int(title="Long MA Length", defval=21, minval=1) // Moving Averages short_ma = ta.sma(close, short_ma_length) long_ma = ta.sma(close, long_ma_length) // Plotting Moving Averages plot(short_ma, color=color.blue, title="Short MA") plot(long_ma, color=color.red, title="Long MA") // Buy and Sell Signals buy_signal = ta.crossover(short_ma, long_ma) sell_signal = ta.crossunder(short_ma, long_ma) // Market Buy Logic if (buy_signal and strategy.position_size <= 0) // Close any existing short position if (strategy.position_size < 0) strategy.close(id="Market Sell") // Calculate Stop Loss and Take Profit Prices entry_price = close long_stop = entry_price * (1 - stop_loss_percent / 100) long_take_profit = entry_price * (1 + take_profit_percent / 100) // Enter Long Position strategy.entry(id="Market Buy", direction=strategy.long) strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit) // Alert for Market Buy alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close) // Market Sell Logic if (sell_signal and strategy.position_size >= 0) // Close any existing long position if (strategy.position_size > 0) strategy.close(id="Market Buy") // Calculate Stop Loss and Take Profit Prices entry_price = close short_stop = entry_price * (1 + stop_loss_percent / 100) short_take_profit = entry_price * (1 - take_profit_percent / 100) // Enter Short Position strategy.entry(id="Market Sell", direction=strategy.short) strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit) // Alert for Market Sell alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)