Sistema de negociação cruzada inteligente com indicador Double EMA e estratégia dinâmica de stop-profit e stop-loss

EMA MACD SMA RSI CCI ATR
Data de criação: 2024-11-29 16:33:21 última modificação: 2024-11-29 16:33:21
cópia: 0 Cliques: 441
1
focar em
1617
Seguidores

Sistema de negociação cruzada inteligente com indicador Double EMA e estratégia dinâmica de stop-profit e stop-loss

Visão geral

Esta estratégia é um sistema de negociação inteligente baseado em binário equilátero cruzado, com 9 ciclos e 21 ciclos de média móvel indexada (EMA) como indicador central. A estratégia integra um mecanismo de parada de perda dinâmica, que executa automaticamente as instruções de negociação por meio de monitoramento em tempo real dos sinais de cruzamento do indicador EMA. O sistema usa um percentual de rastreamento de perda e um programa de parada de proporção fixa, garantindo a segurança da negociação e garantindo a possibilidade de lucratividade.

Princípio da estratégia

A lógica central de operação da estratégia baseia-se na relação cruzada entre a EMA rápida (ciclo 9) e a EMA lenta (ciclo 21). Quando a linha rápida sobe e atravessa a linha lenta, o sistema identifica como um sinal de ganho, automaticamente liquida a posição e abre uma posição; quando a linha rápida desce e atravessa a linha lenta, o sistema identifica como um sinal de ganho, automaticamente liquida a posição e abre uma posição. Ao mesmo tempo, o sistema também configura um mecanismo de parada de perda dinâmica: durante a posse de uma posição múltipla, o preço de parada de perda é definido como 5% abaixo do preço de abertura e o preço de parada é definido como 10% acima do preço de abertura; durante a posse de uma posição vazia, o preço de parada de perda é definido como 5% acima do preço de abertura e o preço de parada é definido como 10% abaixo do preço de abertura.

Vantagens estratégicas

  1. A ciência da escolha dos indicadores é razoável: a EMA é mais sensível às mudanças no mercado e consegue capturar as tendências em tempo real
  2. Mecanismo de parada de perda perfeito: usando o método de configuração percentual, pode ser ajustado de forma flexível para diferentes condições de mercado
  3. Alto grau de automação: automação completa do reconhecimento de sinais à execução de transações, reduzindo a intervenção humana
  4. Controle de risco em posição: cada transação tem um ponto de parada e de parada definidos
  5. Estrutura de código clara: especificações de nomeação de variáveis, definição de níveis lógicos para manutenção e otimização posterior

Risco estratégico

  1. Risco de mercado de turbulência: pode haver frequentes sinais de cruzamento em mercados de turbulência horizontal, resultando em transações frequentes
  2. Risco de deslizamento: situações em que o preço de transação real pode diferir do preço teórico em momentos de forte volatilidade do mercado
  3. Risco de gestão de fundos: a gestão de posições em proporção fixa pode não ser suficientemente flexível em determinadas condições de mercado
  4. Risco sistêmico: ordens de stop loss ou stop-loss podem não ser executadas em tempo hábil em situações extremas de mercado

Direção de otimização da estratégia

  1. Introdução de filtros de tendência: pode ser adicionado um indicador ADX ou ATR para avaliar a intensidade da tendência, evitando a negociação frequente em mercados turbulentos
  2. Otimização do mecanismo de parada de perda: pode ser considerado o uso do ATR para ajustar dinamicamente a distância de parada de perda para torná-la mais adaptada às flutuações do mercado
  3. Aumentar o filtro de tempo de negociação: pode ser adicionado um limite de tempo de negociação específico, evitando períodos de maior volatilidade
  4. Melhorar a gestão de posições: o número de posições abertas pode ser ajustado de acordo com a dinâmica da volatilidade do mercado
  5. Adição de indicadores de sentimento de mercado: pode ser combinado com indicadores como RSI ou MACD para a confirmação de negociação

Resumir

A estratégia é um sistema de negociação automatizado com estrutura completa e lógica clara. A decisão de negociação é feita através de sinais de cruzamento EMA, com mecanismo de parada de perda dinâmico, que pode obter um melhor desempenho em mercados de tendência. Mas durante o uso, é necessário prestar atenção às mudanças no ambiente do mercado, ajustar a configuração de parâmetros de forma adequada e fazer um bom controle de risco.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// 添加策略参数设置
var showLabels = input.bool(true, "显示标签")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1)
var takeProfitPercent = input.float(10.0, "止盈百分比", minval=0.1, maxval=50.0, step=0.1)

// 计算EMA
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)

// 绘制EMA线
plot(ema9, "EMA9", color=color.blue, linewidth=2)
plot(ema21, "EMA21", color=color.red, linewidth=2)

// 检测交叉
crossOver = ta.crossover(ema9, ema21)  
crossUnder = ta.crossunder(ema9, ema21)

// 格式化时间显示 (UTC+8)
utc8Time = time + 8 * 60 * 60 * 1000
timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time)

// 计算止损止盈价格
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100)
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100)

// 交易逻辑
if crossOver
    if strategy.position_size < 0  // 如果持有空仓
        strategy.close("做空")     // 先平掉空仓
    strategy.entry("做多", strategy.long)  // 开多仓
    if showLabels
        label.new(bar_index, high, text="做多入场\n" + timeStr, color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar)

if crossUnder
    if strategy.position_size > 0  // 如果持有多仓
        strategy.close("做多")     // 先平掉多仓
    strategy.entry("做空", strategy.short)  // 开空仓
    if showLabels
        label.new(bar_index, low, text="做空入场\n" + timeStr, color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar)

// 设置止损止盈
if strategy.position_size > 0  // 多仓止损止盈
    strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit)
    
if strategy.position_size < 0  // 空仓止损止盈
    strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit)