Acredito que um dos erros deve ser isso for(int m = deals_total - 1; m > 0; m--)
supondo que vc tenha 10 operações, como vc fez deals_total -1 , então será 10-1= 9... o outro ponto é o m>0 ou seja ele não irá contar outra operação então de 10 ele irá ver 8 operações apenas, reveja seu laço for para ver se está do jeito que realmente quer
Era isso mesmo...
Acredito que um dos erros deve ser isso for(int m = deals_total - 1; m > 0; m--)
Revisei a forma de condução do loop "for", seu operador e entendi seu apontamento, retificando-o. Também revisei dentro do operador do loop, e entendi como são tratados esses dados em função da entrada.
Está funcionando a contento, podendo prosseguir com as próximas etapas do desenvolvimento do meu EA.
Perdoe-me me pelo parco argumento carecendo de vocábulos mais técnicos.
Meu sentimento de gratidão a você, pela ajuda prestada, não tem como ser descrita.
Bom dia,
vou dar dois pitacos no seu código.
1) O comando correto para obter dados do deal.
ordem_lucro= HistoryDealGetDouble(ordem_ticket, DEAL_PROFIT);
ordem_symbol= HistoryDealGetString(ordem_ticket, DEAL_SYMBOL);
2) Uma sugestão: use os nomes corretos para variáveis, pois ordem, posição e deal tem contexto diferente. No exemplo você está um dos DEAL(s) referente a uma POSIÇÃO que é o resultado de uma ou centenas de ORDENS(*).
(*) modo NETTING
Bom dia,
vou dar dois pitacos no seu código.
Bom dia,
Obrigado pelos pitacos. Fiz conforme orientação em ambos.
Realmente tem razão quanto ao segundo. Eu percebi ontem, tarde da noite, e já estava com a paciência esgotada, e caiu no esquecimento de revisar.
Muito obrigado pelas sugestões.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Prezados, espero que possam me ajudar...
Confessando inicialmente que sou recém chegado nesse interessante universo da escrita de EA (o que confesso estou fascinado), gostaria de pedir ajuda à comunidade.
Basicamente o meu EA para daytrade (que vai operar dentro do mercado financeiro brasileiro) está pronto, faltando somente a parte de parar as atividades quando bater as metas diárias de gain e loss. Eu inserir o seguinte bloco:
Pois bem, no void OnTick tenho um comment que pega o valor do saldo e mostra na tela, para monitoramento (apenas nessa fase de desenvolvimento). Foi nesse momento que percebi que o resultado está desconsiderando as duas últimas operações fechadas. Exemplo:
1o trade: lucro de R$ 100,00
2o trade: prejuízo de R$ 20,00
3o trade: prejuízo de R$ 100,00
4o trade: lucro de R$ 200,00
Assim, embora apareça no histórico do backtest (com o gráfico ainda em execução, pois o dia não acabou naquela simulação), o lucro de R$ 180,00, no resultado do comment aparece como lucro de R$ 80,00. Ou seja, desconsiderou os trades 3 e 4... Se aparecer uma 5a transação, ele considera os trades 1 a 3, e assim sucessivamente.
Imaginei que o ticket do deal estava descompassado por considerar a adição automática de fundos como ticket 1, embora o total deals seja zero, tentando ajustar os valores do HistoryDealsTotal, mas sem sucesso algum.
Enfim, gostaria que me ajudassem a mostrar onde estou errando, pois não consigo enxergar (perdi as contas de quantas tentativas fiz nessa parte, sem evolução alguma, seja nos resultados finais, seja - principalmente - na aquisição de conhecimento).
Nota: gostaria que o EA pegasse o lucro de cada ativo que irá operar, e não o saldo geral da conta, uma vez que desejo que, em rodando o mesmo EA para vários ativos, cada um tenha sua meta diária.