Estratégia de negociação automática de futuros abrangente para longo e curto prazo

Autora:ChaoZhang, Data: 2024-02-18 14:25:04
Tags:

img

Esta estratégia é inovadoraEstratégia de negociação automática de futuros abrangente para longo e curto prazoIntegra SuperTrend, QQE e Trend Indicator A-V2 para detectar automaticamente sinais de negociação e fazer negociações longas / curtas.

Princípio da estratégia

A estratégia consiste em três partes principais:

  1. O indicador SuperTrend determina a principal tendência do mercado. Quando o preço quebra acima da linha de tendência ascendente, ele indica uma tendência ascendente. Quando o preço quebra abaixo da linha de tendência descendente, ele indica uma tendência descendente.

  2. O indicador QQE combina o RSI para identificar o estado de sobrecompra/supervenda. Os níveis dinâmicos de sobrecompra/supervenda são calculados com base na média do RSI e no desvio padrão. O RSI acima do nível superior indica sinal de sobrecompra e o RSI abaixo do nível inferior indica sinal de sobrevenda.

  3. O indicador de tendência A-V2 avalia a tendência comparando linhas de EMA rápidas e lentas.

Ao julgar a direção do mercado, os sinais longos são acionados quando a SuperTendência mostra tendência de alta, o QQE não é supervendido e ocorre o sinal de compra A-V2.

Vantagens

  1. A utilização de múltiplos indicadores melhora a fiabilidade e reduz os falsos sinais.

  2. A detecção automática do sinal sem interferência manual reduz os erros humanos.

  3. A combinação orgânica de indicadores proporciona um controlo de risco eficaz ao mesmo tempo em que se descobrem oportunidades de negociação.

  4. Parâmetros personalizáveis para satisfazer as necessidades dos utilizadores.

  5. Apoiar tanto a negociação de longo prazo como a negociação de longo prazo/curto prazo para flexibilidade.

Riscos e soluções

  1. Os indicadores podem gerar sinais falsos em condições de mercado extremas.

  2. Os custos de transação e o deslizamento podem corroer os lucros.

  3. Configuração de parâmetros inadequada leva a um mau desempenho. Tente valores diferentes para encontrar a configuração ideal.

Orientações de otimização

  1. Aumentar o aprendizado de máquina para otimizar automaticamente parâmetros com base em dados históricos.

  2. Incorporar mais fatores de microestrutura de mercado como volume para descobrir melhores sinais.

  3. Implementar técnicas de negociação de alta frequência para enviar ordens automaticamente.

Conclusão

A estratégia combina indicadores para avaliar a estrutura do mercado e alcançar lucros estáveis sob controle de risco.


/*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")


Mais.