Exibir custo no comment

 

Prezados,

Como seria a forma mais simples de um EA qualquer ficar exibindo lá em cima na função comment o resultado em tempo real do custo das operações realizadas até aquele momento ?

Por exemplo: Digamos que eu estou com o EA rodando no mini-índice (B3) e já fez 500 ordens com 5 lotes, sabemos que o custo para cada ordem é de 0,25 centavos (corretagem zero). Então no topo do gráfico na função comment estaria mostrando 625,00 (500 x 5 x 0,25). Mais uma entrada no mercado o valor passaria para 626,25 (501 x 5 x 0,25) 

OBS: Lembrando que o InpLots no meu EA-teste está sem Input, é interno ao código do EA, por isso aceita modificação

Algo assim:

Comment(ticket x InpLots x 0.25)


Grato

 

Ué, parece que vc mesmo já respondeu à pergunta. Basta executar o comando Comment com o cálculo que vc precisa dentro, a cada novo lote negociado.

 
Trader_Patinhas:

Ué, parece que vc mesmo já respondeu à pergunta. Basta executar o comando Comment com o cálculo que vc precisa dentro, a cada novo lote negociado.

Mas como declarar <ticket> para calcular a cada novo lote negociado ?

 
sergiomt:

Mas como declarar <ticket> para calcular a cada novo lote negociado ?

Pelo que entendi do que vc escreveu, todas as suas ordens têm volume igual a InpLots e essa variável que vc está chamando de <ticket> seria o número de ordens que já foram executadas, entendi certo?

Nesse caso vc pode declarar esse contador de ordens executadas como uma variável inteira global e, dentro da função OnTradeTransaction(), toda vez que vier uma transação do tipo  TRADE_TRANSACTION_DEAL_ADD vc incrementa o contador e executa o Comment para atualizar a tela. 

Melhor ainda: em vez de declarar variável global (uma má prática de programação que deve ser evitada sempre que possível), é melhor vc declarar o contador como uma variável estática dentro da própria função OnTradeTransaction(), já que ele só vai ser usado ali dentro.

 

Grato Patinhas,

Valiosa ajuda

 
sergiomt:

Grato Patinhas,

Valiosa ajuda

Ok, mas estude bem a documentação, pois há várias "pegadinhas" que precisam ter o tratamento lógico adequado (a ordem pode ser executada parcialmente, pode ser rejeitada, o mercado pode entrar em leilão, a conexão pode cair, etc.).

Acho perigoso você colocar um robô em operação sem estar compreendendo detalhadamente o workflow do processamento das ordens, os tipos de transação e o significado das notificações do evento TradeTransaction, etc.

Antes de sair programando, é recomendável vc compreender a arquitetura do MT5 como um todo, pois, pra colocar em operação um robô robusto, que não te cause surpresas desagradáveis, tem muito chão!