Discussão do artigo "Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXIII): classe básica de negociação, controle de parâmetros válidos" - página 2

 
Artyom Trishkin:

O que significa "status de especialista"?

Suponha que eu tenha um TS com 2 indicadores, mas negocie em um indicador o tempo todo, no outro indicador apenas 2 vezes após o início e, além disso, abrirei ordens após a última perda no primeiro indicador.....

Não importa qual TS, mas um determinado TS com o qual as ordens são colocadas de acordo com um princípio independente, mas o momento da ativação do segundo TS é importante, ou seja, o multi-expert pode ser chamado, ou 2 TS em um EA ...

Se você sobrecarregar o terminal, poderá complicar o algoritmo de busca de ordens iniciais, pois talvez não saibamos qual TS começou a funcionar primeiro?




como em seu grande EA, pode haver a necessidade de salvar dados, por isso estou perguntando: haverá ou já foi escrito ou não há classes/funções para salvar formatos de dados complexos?

 
Artyom Trishkin:

a biblioteca pode.

As mesmas informações não estão disponíveis no histórico de negociação do MT4.

 
fxsaber:

As mesmas informações não estão disponíveis no histórico de negociação do MT4.

Sim, não está. Mas está (no momento) na lista de eventos. Ela é registrada durante a operação do Expert Advisor. E tudo está disponível nela.

Naturalmente, depois de recarregar o terminal ou reiniciar o Expert Advisor, o histórico atual do Expert Advisor será perdido. Mas isso é só por enquanto, porque, no futuro, todos os elementos importantes de todas as listas serão salvos em arquivos e lidos a partir deles ao reiniciar. Não no testador, é claro.

 
Igor Makanu:

Suponha que eu tenha um TS com 2 indicadores, mas negocie em um indicador o tempo todo, no outro indicador apenas 2 vezes após o início e, no futuro, abrirei ordens após a última perda no primeiro indicador.....

Não importa qual TS, mas algum tipo de TS com o qual as ordens são colocadas de acordo com o princípio independente, mas o momento de ligar o segundo TS é importante, ou seja, o multi-expert pode ser chamado, ou 2 TS em um EA....

Se sobrecarregarmos o terminal, poderemos complicar o algoritmo de busca de ordens iniciais, pois talvez não saibamos qual TS começou a funcionar primeiro?




Como no seu Expert Advisor grande, pode haver a necessidade de salvar dados, por isso estou perguntando se haverá ou já foi escrito ou se não há classes/funções para salvar formatos de dados complexos?

Para ser sincero, não entendo muito bem. Como uma biblioteca pode saber sobre a lógica de um EA que ainda não foi criado? Seu objetivo é facilitar a criação de programas para terminais, e ela não sabe de forma alguma quais programas serão criados com sua ajuda.

Ao mesmo tempo, se algo for difícil de definir programaticamente, é bem provável que seja fácil fazê-lo com a ajuda da biblioteca, e então será possível para o escritor especialista controlar tudo rapidamente.

Não preciso de um exemplo abstrato para entendermelhor.

 
Artyom Trishkin:

Para ser sincero, não entendo muito bem. Como uma biblioteca pode saber sobre a lógica de um Expert Advisor ainda não criado? Seu objetivo é facilitar a criação de programas para terminais, e ela não sabe de forma alguma quais programas serão criados com sua ajuda.

Ao mesmo tempo, se algo for difícil de definir programaticamente, é bem provável que seja fácil fazê-lo com a ajuda da biblioteca, e então será possível para o escritor especialista controlar tudo rapidamente.

Não preciso de um exemplo abstrato para entendermelhor.

Basta que você o implemente:

Artyom Trishkin:

Naturalmente, depois de recarregar o terminal ou reiniciar o Expert Advisor, o histórico atual do Expert Advisor será perdido. Mas isso é apenas por enquanto, porque no futuro todos os elementos importantes de todas as listas serão salvos em arquivos e lidos a partir deles ao reiniciar. Não no testador, é claro.

À primeira vista, essa é uma tarefa simples, mas há muitos problemas: sincronização com um arquivo, registro em tempo hábil, lógica de recuperação após a reinicialização..... Há muitas nuances nas quais eu gostaria de ver a implementação da gravação de tipos de dados complexos

 
Igor Makanu:

é suficiente para que você perceba

Naturalmente, após recarregar o terminal ou reiniciar o Expert Advisor, o histórico atual do Expert Advisor será perdido. Mas isso é só por enquanto, porque no futuro todos os elementos importantes de todas as listas serão salvos em arquivos e lidos a partir deles ao reiniciar. Não no testador, é claro.

À primeira vista, essa é uma tarefa simples, mas há muitos problemas: sincronização com um arquivo, registro em tempo hábil, lógica de recuperação após a reinicialização..... Há muitas nuances nas quais eu gostaria de ver a implementação do registro de tipos de dados complexos

Portanto, isso foi planejado há muito tempo - pode-se dizer que desde o início. Eu o implementarei quando todas as coleções de dados necessárias forem criadas - para fazer tudo de uma vez.

Mas o que foi escrito - que é necessário entender quando qual TC foi o primeiro a negociar - não precisa de tanta complexidade. Afinal de contas, a biblioteca vê todo o histórico do terminal, desde o reabastecimento da conta até o momento atual. Para o MetaTrader4, é importante resolver todo o histórico no terminal. Não fiz isso com a ajuda da dll - planejo fornecer possibilidades possíveis (trocadilho intencional) com ferramentas padrão, por isso não considerei a dll e não a considerarei.

Portanto, você sempre pode encontrar rapidamente todas as ofertas de cada TS para qualquer período de tempo e compará-las. Qual oferta é a primeira - aquela TS e os chinelos.

 
Igor Makanu:

A MQL4 não armazena o histórico de ordens pendentes acionadas, você só pode definir no histórico de ordens:

Testei essa funcionalidade da biblioteca na mql4. O histórico não tem nada a ver com isso, a biblioteca capta o próprio fato da ativação da ordem pendente e, nesse momento, todas as propriedades de uma posição aberta estão disponíveis.

 
Alexey Viktorov:

Testei a funcionalidade dessa biblioteca no mql4. O histórico não tem nada a ver com isso, a biblioteca capta o próprio fato da ativação de uma ordem pendente e, nesse momento, todas as propriedades de uma posição aberta estão disponíveis.

Não apenas nesse momento. O histórico de todas as ordens acionadas (e, em geral, de todos os eventos de negociação) é armazenado na biblioteca e fica disponível durante todo o trabalho. Ou seja, você sempre pode encontrar todo o histórico de uma posição - desde a definição de uma ordem pendente até seu fechamento completo.

No entanto, ainda não foi implementado o salvamento do histórico do Expert Advisor em um arquivo - após reiniciar o Expert Advisor, o histórico de todos os seus eventos de negociação será perdido e começará a se acumular novamente após o próximo evento de negociação. Mas esse comportamento é temporário - inicialmente, foi planejado salvar todas as informações importantes em arquivos. Isso será feito mais tarde, após a criação de todas as coleções de dados necessárias.

O CEngine tem um método GetListAllOrdersEvents(), que retorna ao programa de controle uma lista completa de todos os eventos de negociação que ocorreram na conta desde o lançamento do programa baseado na biblioteca.

Para obter a lista completa de eventos de negociação pertencentes a um Expert Advisor (ou suas posições com um determinado mágico), você deve filtrar a lista obtida pelo mágico necessário:

   //--- Obter a lista completa de todos os eventos de negociação na conta
   CArrayObj *list=engine.GetListAllOrdersEvents();
   //--- Deixe na lista apenas os eventos pertencentes ao especialista (ou ordens) com magik 100500
   list=CSelect::ByOrderProperty(list,ORDER_PROP_MAGIC,100500,EQUAL);

E, em seguida, em um loop pela lista obtida, você pode obter todos os eventos de negociação da lista, um por um, e trabalhar com eles.

   if(list!=NULL)
     {
      for(int i=0;i<list.Total();i++)
        {
         CEvent *event=list.At(i);
         if(event==NULL)
            continue;
         Print("----------------------");
         event.Print();
        }
     }
 
Artyom Trishkin:

Não apenas neste momento. O histórico de todas as ordens acionadas (e, em geral, todos os eventos de negociação) é armazenado na biblioteca e está disponível durante todo o trabalho. Ou seja, você sempre pode encontrar todo o histórico de uma posição, desde a definição de uma ordem pendente até seu fechamento completo.

No entanto, ainda não foi implementado salvar o histórico do Expert Advisor em um arquivo - após reiniciar o Expert Advisor, o histórico de todos os seus eventos de negociação será perdido e começará a se acumular novamente após o próximo evento de negociação. Mas esse comportamento é temporário - inicialmente, foi planejado salvar todas as informações importantes em arquivos. Isso será feito mais tarde, após a criação de todas as coleções de dados necessárias.

O CEngine tem um método GetListAllOrdersEvents(), que retorna ao programa de controle uma lista completa de todos os eventos de negociação que ocorreram na conta desde o início do programa baseado na biblioteca.

Para obter a lista completa de eventos de negociação pertencentes a um Expert Advisor (ou suas posições com um determinado mágico), você precisa filtrar a lista obtida pelo mágico desejado:

E, em seguida, em um loop pela lista obtida, você pode obter todos os eventos de negociação da lista, um por um, e trabalhar com eles.

Eu disse apenas o que é importante para mim no momento. E o que foi testado. Obrigado pelos esclarecimentos. Quando houver necessidade, eu o atormentarei com perguntas.

 
Olá! Fiz o download da versão mais recente da biblioteca e do Expert Part_23, coloquei o modo visual no testador e as ordens de mercado são abertas, mas todas as ordens pendentes não são, o diário escreve "2019.10.23 failed sell stop limit 2.00 RTS-12".
as ordens de mercado são abertas, mas todas as ordens pendentes não são, no diário está escrito "2019.10.27 10:13:32.157 2019.09.23 10:00:02 failed sell stop limit 2.00 RTS-12.19 at 135750 (135800) sl: 135900 tp: 135600 [Invalid expiration].
Símbolos de câmbio, corretor Otkritie, versão 5.00 build 2190.
Também. Em artigos anteriores, acho que na parte 14 ou 15, você prometeu criar classes para trabalhar com a coleção de símbolos, mas por que isso acontece?
Você também prometeu criar classes para trabalhar com a coleção de símbolos, mas por algum motivo não as criou, e essas são as necessidades básicas da biblioteca, juntamente com símbolos e contas, e você já foi

e você já se aprofundou nos aprimoramentos da biblioteca (recursos, sons etc.) e acho que perdeu as tarefas básicas.

Obrigado, a biblioteca é muito necessária.