Discussão do artigo "Biblioteca para desenvolvimento fácil e rápido de programas para a MetaTrader (parte X)" - página 6

 
Sam Zabil:
Olá. Você certamente fez um trabalho excelente e necessário. Pelo que você tem, um enorme agradecimento humano! Mas há uma pergunta. O Consultor Especialista que você usa para testes ao trabalhar na conta modifica todas as ordens e posições, independentemente das majestades e diferenças dos pares de moedas. Ou seja, você coloca Eurobucks e, ao mesmo tempo, outra coruja fica em outra moeda e mantém lá suas ordens e posições. Você clica na modificação de lucro ou stop do seu consultor e ele puxa não apenas Eurobucks, mas tudo o que está no terminal. Isso não é legal. Obrigado pela compreensão.

Olá. O Expert Advisor destina-se apenas a testar o material do artigo. Cada artigo vem com um Expert Advisor de teste, e cada Expert Advisor pode ser testado apenas para o que foi criado - a biblioteca descrita no artigo, dos arquivos dos quais o Expert Advisor foi retirado.

Quando toda a série de artigos estiver concluída, você poderá criar facilmente seus próprios programas usando a biblioteca descrita.

 
Alexey Viktorov:

Artem, eu repassei a situação.

O script fechou todas as posições abertas de ontem. Não coloquei nenhuma ordem na conta, mas as de ontem estão fechadas. Há registros de exclusão de ordens. E não apenas uma. Houve um registro "This event is already in the list" três vezes.

Em seguida, coloquei mais três posições e as fechei novamente com o script. Tudo aconteceu novamente. Três posições fechadas ... três tentativas de excluir uma posição que já está no histórico.

Mesmo que você não goste de registros, vou colocá-los diretamente da guia "Experts".

No momento da abertura do USDJPY (linha inferior dos registros), não havia posições abertas e ordens pendentes.

Reproduzido, encontrado, corrigido.

No método Refresh() da classe CEventCollection, você precisa adicionar a linha 233 (a linha pode ter um número diferente, pois tenho tudo em constante desenvolvimento):

//--- Se um evento no histórico da conta
   if(is_history_event)
     {
      //--- Se o número de pedidos históricos tiver aumentado (MQL5, MQL4)
      if(new_history_orders>0 #ifdef __MQL4__ && new_market_pendings<0 #endif )
        {
         //--- Obter a lista apenas de ordens pendentes excluídas
         CArrayObj* list=this.GetListHistoryPendings(list_history);
         if(list!=NULL)
           {
Essa correção será incluída no artigo 12
 
Obrigado a você. Eu o adicionei. O número da linha não foi alterado.
 
Alexey Viktorov:
Obrigado a você. Eu o adicionei. O número da linha não foi alterado.

Bom

 

Estou escrevendo em uma linha diferente.

Obrigado, Artem, por uma série de artigos tão maravilhosa e informativa

 
Aleksei Mikhanoshin:

Estou escrevendo em uma linha diferente.

Obrigado, Artem, por uma série de artigos tão maravilhosa e informativa

Não tem de quê, Alexei. Nós nos tratamos pelo primeiro nome há muito tempo.....

 
Obrigado a todos pelas respostas. Entendo perfeitamente o propósito desse painel. Eu simplesmente gostei do painel. A propósito, resolvi minha dúvida classificando as planilhas de posição e as ordens por mágica. Sinceramente, eu estava com muita preguiça de entrar no código imediatamente.
 
Sam Zabil:
Obrigado a todos pelas respostas. Entendo perfeitamente o propósito desse painel. Eu simplesmente gostei do painel. A propósito, resolvi minha dúvida classificando as planilhas de posição e as ordens por mágica. Honestamente, eu estava com preguiça de entrar no código imediatamente.

Bem, isso é bom.

De fato, já é possível obter todas as listas e, a partir delas, qualquer objeto. E as listas podem ser classificadas conforme necessário e filtradas por qualquer um dos valores. Para fazer isso, CSelect() é usado para a lista obtida - há exemplos nos métodos da classe da biblioteca.

Como resultado, o acesso fácil, a seleção e a filtragem serão organizados. Até o momento, apenas a criação do banco de dados necessário está em andamento.

 
A ideia é boa. Mas acho que ela já foi implementada pelo fxsaber.
 
Sergey Seriy #:
A ideia é boa. Mas acho que ela já foi implementada pelo fxsaber.

Você pode usar os trabalhos do fxsaber