Estrategia de negociación automática integral de futuros tanto para largo como para corto plazo

El autor:¿ Qué pasa?, Fecha: 2024-02-18 14:25:04
Las etiquetas:

img

Esta estrategia es unaEstrategia de negociación automática integral de futuros tanto para largo como para corto plazo. Integra SuperTrend, QQE e Indicador de tendencia A-V2 para descubrir automáticamente las señales de negociación y realizar operaciones largas / cortas.

Principio de la estrategia

La estrategia consta de tres partes principales:

  1. El indicador SuperTrend determina la tendencia principal del mercado. Cuando el precio se rompe por encima de la línea de tendencia al alza, indica una tendencia alcista. Cuando el precio se rompe por debajo de la línea de tendencia bajista, indica una tendencia bajista.

  2. El indicador QQE combina el RSI para identificar el estado de sobrecompra / sobreventa. Los niveles dinámicos de sobrecompra / sobreventa se calculan en función del promedio del RSI y la desviación estándar.

  3. El indicador de tendencia A-V2 juzga la tendencia comparando líneas de EMA rápidas y lentas.

Al juzgar la dirección del mercado, las señales largas se activan cuando la SuperTendencia muestra una tendencia alcista, QQE no se sobreventa y se produce una señal de compra A-V2.

Ventajas

  1. El uso de múltiples indicadores mejora la fiabilidad y reduce las señales falsas.

  2. La detección automática de señales sin interferencia manual reduce los errores humanos.

  3. La combinación orgánica de indicadores proporciona un control eficaz del riesgo al tiempo que descubre oportunidades comerciales.

  4. Parámetros personalizables para satisfacer las necesidades de los usuarios.

  5. Apoyar tanto las operaciones de largo plazo como las de largo plazo/corto plazo para mayor flexibilidad.

Riesgos y soluciones

  1. Los indicadores pueden generar señales falsas en condiciones extremas de mercado.

  2. Los costos de transacción y el deslizamiento podrían erosionar las ganancias.

  3. La configuración de parámetros inadecuada conduce a un mal rendimiento. Pruebe diferentes valores para encontrar la configuración óptima.

Direcciones de optimización

  1. Aumentar el aprendizaje automático para optimizar los parámetros basados en datos históricos.

  2. Incorporar más factores de microestructura del mercado como el volumen para descubrir mejores señales.

  3. Implementar técnicas de negociación de alta frecuencia para enviar órdenes automáticamente.

Conclusión

La estrategia combina indicadores para evaluar la estructura del mercado y lograr ganancias constantes bajo control de riesgos. Considera tanto la dirección de la tendencia como el estado de sobrecompra / sobreventa para decisiones comerciales matizadas. Queda mucho espacio para la optimización de parámetros, mejoras lógicas y mejoras de ejecución para aumentar aún más el rendimiento de la estrategia.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//author:盧振興 芙蓉中華中學畢業 育達科技大學畢業碩士
//參考資料 : QQE MOD By:Mihkel00 ,SuperTrend By:KivancOzbilgic , TrendIndicator A-V2 By:Dziwne

strategy("綜合交易策略", shorttitle="Comprehensive Strategy", overlay=true)

// 添加單邊或多空參數
OnlyLong = input(true, title="單邊")

// SuperTrend 参数
PeriodsST = input(9, title="ST ATR Period")
MultiplierST = input(3.9, title="ST ATR Multiplier")
srcST = input(hl2, title="ST Source")

atrST = atr(PeriodsST)
upST = srcST - (MultiplierST * atrST)
upST := close[2] > upST[1] ? max(upST, upST[1]) : upST
dnST = srcST + (MultiplierST * atrST)
dnST := close[2] < dnST[1] ? min(dnST, dnST[1]) : dnST
trendST = 1
trendST := nz(trendST[1], trendST)
trendST := trendST == -1 and close[2] > dnST[1] ? 1 : trendST == 1 and close[2] < upST[1] ? -1 : trendST

// QQE 参数
RSI_PeriodQQE = input(6, title='QQE RSI Length')
SFQQE = input(5, title='QQE RSI Smoothing')
QQE = input(3, title='QQE Fast Factor')
ThreshHoldQQE = input(3, title="QQE Thresh-hold")
srcQQE = input(close, title="QQE RSI Source")

Wilders_PeriodQQE = RSI_PeriodQQE * 2 - 1

RsiQQE = rsi(srcQQE, RSI_PeriodQQE)
RsiMaQQE = ema(RsiQQE, SFQQE)
AtrRsiQQE = abs(RsiMaQQE[1] - RsiMaQQE)
MaAtrRsiQQE = ema(AtrRsiQQE, Wilders_PeriodQQE)
darQQE = ema(MaAtrRsiQQE, Wilders_PeriodQQE) * QQE

basisQQE = sma(RsiMaQQE - 50, 50)
devQQE = 0.35 * stdev(RsiMaQQE - 50, 50)
upperQQE = basisQQE + devQQE
lowerQQE = basisQQE - devQQE

qqeCondition = RsiMaQQE[1] - 50 > upperQQE[1] ? true : RsiMaQQE[1] - 50 < lowerQQE[1] ? false : na

// Trend Indicator A-V2 参数
ma_periodA_V2 = input(52, title="TIA-V2 EMA Period")
oA_V2 = ema(open, ma_periodA_V2)
cA_V2 = ema(close, ma_periodA_V2)
trendIndicatorAV2Condition = cA_V2[1] >= oA_V2[1] ? true : false

// 综合交易逻辑
longCondition = trendST == 1 and qqeCondition and trendIndicatorAV2Condition
shortCondition = trendST == -1 and not qqeCondition and not trendIndicatorAV2Condition

// 针对多单的开平仓逻辑
if (OnlyLong)
    if (longCondition)
        strategy.entry("Buy", strategy.long)        
    else
        strategy.close("Buy")

// 多空都做时的逻辑
if (not OnlyLong)
    if (longCondition)
        strategy.entry("Buy", strategy.long)
    else if (shortCondition)
        strategy.entry("Sell",strategy.short)

    // 添加多空平仓逻辑
    if (not longCondition)
        strategy.close("Buy")
    if (not shortCondition)
        strategy.close("Sell")

// 可视化信号
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition and not OnlyLong, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


Más.