Exemplo de estratégia de detecção de calendário econômico
Visão geral
A Estratégia de Calendário Econômico de Detecção de Amostras replica o comportamento do consultor especialista MetaTrader original SampleDetectEconomicCalendar.mq5. A estratégia observa uma lista fornecida manualmente de eventos do calendário econômico e, quando um evento de alto impacto se aproxima para a moeda configurada, coloca um par simétrico de ordens stop em torno dos preços atuais de compra/venda. Paradas protetoras, níveis de lucro opcionais e uma saída final replicam a lógica de gerenciamento de dinheiro do código-fonte.
Ao contrário da versão MQL, a porta StockSharp não tem acesso ao serviço de calendário MetaTrader. Em vez disso, os eventos são fornecidos pelo usuário por meio do parâmetro CalendarDefinition.
Como funciona
- A estratégia assina os dados do Nível 1 para rastrear os preços de compra/venda.
- As linhas do calendário definidas em
CalendarDefinitionsão analisadas na inicialização. - Para cada evento de alta importância correspondente a
BaseCurrency, a estratégia:- Aguarda até
LeadMinutesantes do lançamento. - Calcula o volume do pedido (fixo ou baseado em risco).
- Coloca ordens stop de compra/venda a
BuyDistancePointseSellDistancePointsdos preços atuais.
- Aguarda até
- Após a liberação, os pedidos pendentes serão cancelados após
PostMinutesdecorridos ou após o tempo limite total deExpiryMinutes. - Quando um lado é acionado, a ordem oposta é cancelada. A posição aberta é gerenciada com stop loss, take-profit opcional e distâncias de trailing stop expressas em pontos.
Parâmetros
| Parâmetro | Descrição |
|---|---|
TradeNews |
Permite colocar pedidos pendentes em torno de eventos noticiosos programados. |
OrderVolume |
Volume de pedido fixo usado quando o gerenciamento de dinheiro está desativado. |
StopLossPoints |
Distância de stop-loss em pontos do instrumento. Defina como 0 para desativar. |
TakeProfitPoints |
Distância de lucro em pontos. Defina como 0 para desativar. |
TrailingStopPoints |
Distância de parada final em pontos. Defina como 0 para desativar o rastreamento. |
ExpiryMinutes |
Vida útil máxima dos pedidos pendentes após a liberação. |
UseMoneyManagement |
Se ativado, o volume é calculado a partir do risco de saldo. |
RiskPercent |
Percentagem do capital da carteira arriscado por negociação (utilizada apenas quando a gestão de dinheiro está ativa). |
BuyDistancePoints |
Deslocamento acima do pedido para a entrada de parada de compra. |
SellDistancePoints |
Compensação abaixo do lance para a entrada de stop de venda. |
LeadMinutes |
Minutos antes do lançamento, quando os pedidos pendentes são enviados. |
PostMinutes |
Minutos após o lançamento, antes que os pedidos não atendidos sejam cancelados. |
BaseCurrency |
Código da moeda que deve aparecer na entrada do calendário (padrão USD). |
CalendarDefinition |
String multilinha contendo eventos do calendário. |
Formato de definição de calendário
Forneça um evento por linha no seguinte formato:
aaaa-MM-dd HH:mm;CUR;Alto;Título do evento
yyyy-MM-dd HH:mm— carimbo de data/hora em UTC. Os segundos são opcionais. Vários formatos de data (yyyy/MM/dd,dd.MM.yyyy) também são suportados.CUR— código da moeda (por exemplo,USD). Somente eventos correspondentes aBaseCurrencysão negociados.High— palavra-chave de importância (High,Medium,LowouNfp). ApenasHighaciona negociações.Event title— texto livre para registro.
Exemplo:
12/06/2024 18:00;USD;Alta;Declaração FOMC
2024-07-05 12:30;USD;Nfp;Folhas de pagamento não agrícolas
Gestão de risco
- Quando
UseMoneyManagementestá desligado, os pedidos são feitos usando o parâmetroOrderVolume. - Quando
UseMoneyManagementestá ativado, a estratégia arriscaRiskPercentdo valor do portfólio usando oStopLossPointsconfigurado. Os limites de volume de troca (passo mínimo/máximo) são respeitados. - A lógica de trailing reflete o EA original: as saídas de stop-loss e take-profit são aplicadas e, uma vez que o preço se move favoravelmente em
TrailingStopPoints, o trailing stop protege a negociação.
Diferenças do consultor especialista MQL
- Os eventos do calendário econômico devem ser fornecidos manualmente em
CalendarDefinition. - Apenas um par instrumento/moeda é processado por instância de estratégia.
- A expiração da ordem pendente é tratada internamente com temporizadores
PostMinutes/ExpiryMinutesporque as ordens stop StockSharp não expõem sinalizadores MetaTrader no estiloORDER_TIME_SPECIFIED.
Notas de uso
- Configure as linhas
CalendarDefinitionantes de iniciar a estratégia. - Ative
TradeNewse defina os parâmetros de risco desejados. - Certifique-se de que os dados do Nível 1 estejam disponíveis para que as atualizações de compra/venda cheguem antes da janela de notícias.
- Revise os registros para confirmar se os pedidos foram feitos e cancelados conforme esperado em cada evento.