
La estrategia de trading de línea de paridad cruzada de precios auto-adaptativa es una estrategia de trading cuantitativa basada en el promedio móvil de Hull (HMA). La estrategia utiliza el cruce de precios con HMA para generar señales de compra y venta, mientras que establece niveles fijos de stop loss y stop loss para administrar el riesgo y los beneficios. La estrategia utiliza HMA de 104 ciclos como indicador principal, combinado con el cruce de precios para desencadenar operaciones.
El núcleo de la estrategia es el uso de la Hull Moving Average (HMA) como indicador principal. La HMA es una media móvil avanzada que puede responder rápidamente a los cambios en los precios y al mismo tiempo reducir el retraso. La lógica de la estrategia es la siguiente:
Las estrategias de seguimiento de posiciones abiertas para asegurar que no se vuelva a abrir una posición en una posición ya existente. Cuando una transacción es liquidada, el sistema restablece la señal, permitiendo que la nueva señal de negociación entre en vigor.
La estrategia de trading automático de precios cruzados es una estrategia de trading simple y eficaz. La estrategia capta las tendencias del mercado al aprovechar las ventajas de los promedios móviles de Hull, mientras protege los fondos con medidas de gestión de riesgos fijas. Aunque la estrategia tiene algunos riesgos potenciales, su rendimiento y adaptabilidad pueden mejorarse aún más mediante la optimización y mejora continuas.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SHIESTD", overlay=true)
// Function to calculate Hull Moving Average (HMA)
hma(src, length) =>
wma1 = ta.wma(src, length)
wma2 = ta.wma(src, length / 2)
hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length)))
hma
// Parameters
hma_length = 104
// Calculate Hull Moving Average
hma_value = hma(close, hma_length)
// Plot HMA
plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2)
// Define SL and TP values in dollars
long_sl_amount = 1.25
long_tp_amount = 37.5
short_sl_amount = 1.25
short_tp_amount = 37.5
// Number of contracts
contracts = 2
// Function to calculate SL and TP prices based on entry price and dollar amounts
long_sl_price(entry_price) =>
entry_price - long_sl_amount
long_tp_price(entry_price) =>
entry_price + long_tp_amount
short_sl_price(entry_price) =>
entry_price + short_sl_amount
short_tp_price(entry_price) =>
entry_price - short_tp_amount
// Trading conditions
price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value)
// Long and Short Conditions based on price intersecting HMA
long_condition = ta.crossover(close, hma_value)
short_condition = ta.crossunder(close, hma_value)
// Track open positions
var bool long_open = false
var bool short_open = false
// Handle Long Positions
if (long_condition and not long_open)
entry_price = close
strategy.entry("Long", strategy.long, qty=contracts)
strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price))
long_open := true
// Handle Short Positions
if (short_condition and not short_open)
entry_price = close
strategy.entry("Short", strategy.short, qty=contracts)
strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price))
short_open := true
// Reset flags when the position is closed
if (strategy.opentrades == 0)
long_open := false
short_open := false