Seqüência de execução Init() e DeInit() - página 17

 
fxsaber:

Acontece que os Serviços terão quase todas as funções em funcionamento: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...


E se você não precisa de amortecedores indicadores e não quer enfrentar as muletas dos indicadores/conselheiros, escreva em um novo tipo de programa - Serviços - que não sofra de (esticando a partir das versões anteriores da MT) limitações.

Exatamente.

Não haverá OnCalculate.

Nenhuma solução com OnChartEvent ainda

 
Slawa:

É isso mesmo.

Estas muletas devem ser irritantes para muitas pessoas

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

Não consigo obter dados indicadores da alta TF

Sergey Dzyublik, 2017.04.14 10:55

O usuário tinha um indicador que media a "força" do mercado.
O indicador funcionou no atual período de tempo e par de moedas.

A tarefa era mostrar os resultados de 8 moedas populares em um gráfico com a oportunidade de selecionar um TF independente para ser exibido.
Não importa em que TF o usuário está - ele deve mostrar os resultados a partir daquele que foi definido nos parâmetros.

O problema do tráfego de carga de outras moedas pela TF requerida foi resolvido com a seguinte muleta:

   for (int i = ArraySize(symbols_load) - 1; i >= 0; --i){
      int counter = 0;
      int max_count = 10;
      while(counter < max_count){
         RefreshRates();
         double tmp_arr[];
         int res = CopyClose(symbols_load[i] + Suffix, int(TF), 0, 3, tmp_arr);
         if (res == 3)
            break;
         RefreshRates();
         ++counter;
      }
   }

onde:

symbols_load- lista de moedas necessárias para carregar
Sufixo- possível prefixo para o nome dos pares de moedas
TF- prazo requerido

É possível adicionar uma assinatura/subscrição aos dados históricos (barras e carrapatos) para um determinado volume? Para que houvesse sempre um cache (de barras e carrapatos frescos) de um certo tamanho no Serviço para os símbolos dados.


Quão mais fácil seria então escrever, por exemplo, os screeners de mercado.

 
Slawa:

Os indicadores devem ser utilizados para os fins a que se destinam.

Em outras palavras, a seqüência de execução dos indicadores OnInit e OnDeinit ao alterar o período do símbolo dográfico não deve incomodar ninguém.

Esta abordagem explica muita coisa.

Portanto, devemos aceitá-lo como ele é, o principal é estar atentos a ele.

 
Slawa:

Não.

Leia novamente quais são os indicadores. Akelis. Colby. Pergunte a Yandex quais são os indicadores de mercado.

No MT3, quando introduzimos o conceito de indicadores personalizados, permitimos operar com objetos nos gráficos porque havia apenas 2 buffers de indicadores.

Vamos fazer um pouco de história. No início havia o FXCharts, eu não o peguei, pois só entrei na empresa em outubro de 2002. Depois houve o MetaTrader. Eu me juntei à empresa para desenvolver MQL II (FXCharts já tinha uma linguagem de estratégias comerciais). Quando fizemos MQL II e EAs, mudamos o nome para MetaTrader 2. Quando permitimos escrever indicadores personalizados, o MetaTrader 3 tornou-se MetaTrader 3.

Depois vieram o MetaTrader 4 e a MQL4. Os indicadores personalizados tiveram a oportunidade de operar com 8 buffers indicadores. A possibilidade de trabalhar com objetos na tabela foi mantida. Mas como os indicadores foram calculados no fio da interface, havia poucas pessoas que abusavam do trabalho com os objetos.

E agora temos o MT5. A arquitetura é completamente diferente, mas somos reféns do MT4 em termos de habilidades para operar com objetos gráficos no gráfico. Sim, nós somos stakhanovitas, nós também, como heróis, adicionamos possibilidades quase ilimitadas de gerenciamento de gráficos a partir de indicadores. Chegamos. A ilustração - 16 páginas de discussões sobre nada.

Passemos aos serviços

A pasta Serviços apareceu no Editor da MQL5, mas ainda não está claro como usar esta ferramenta. https://www.mql5.com/ru/forum/190129


Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
  • www.mql5.com
Хотелось бы подробней с примерами использования обсудить новый функционал...
 
Slawa:

Os indicadores devem ser utilizados para os fins a que se destinam.

Em outras palavras, a seqüência de OnInit e OnDeinit do indicador ao alterar o símbolo - período dográfico não deve incomodar ninguém

E por que todos os argumentos se moveram para os objetos gráficos? Existem outros recursos globais como variáveis globais, arquivos, etc. (eles podem ser usados em indicadores de acordo com sua finalidade?) que serão a fonte de erros, se"a ordem de execução OnInit e OnDeinit do indicador na mudança do período do símbolo dográfico não deve incomodar ninguém". Mais uma vez, observe que o núcleo está agora implementado de tal forma que a ordem deve preocupar o programador MQL, para evitar o ancinho causado pela incerteza da seqüência de chamadas OnInit/Deinit. Para não se preocupar com a MQL, você precisa de um núcleo que se encarregue internamente de resolver a incerteza.
 
Stanislav Korotky:
Por que todo o argumento recai sobre objetos gráficos? Existem outros recursos globais como variáveis globais, arquivos, etc. (eles podem ser usados em indicadores? (eles podem ser usados em indicadores de acordo com sua finalidade?) que serão a fonte de erros, se"a ordem de execução OnInit e OnDeinit do indicador na mudança do período do símbolo dográfico não incomodará ninguém". Mais uma vez, observe que o núcleo é agora implementado de tal forma que a ordem deve preocupar o programador MQL, para evitar o ancinho causado pela incerteza da seqüência de chamadas OnInit/Deinit. Para não se preocupar com a MQL, você precisa de um núcleo que se encarregue internamente de resolver a incerteza.
Aqui está uma boa pergunta sobre os arquivos. Se algo precisa ser reinicializado na desinicialização e lido na inicialização subseqüente, pode haver alguns problemas.
 
Stanislav Korotky:

Como os serviços ou a capacidade de executar vários EAs em um único gráfico não podem cobrir completamente os problemas que estamos discutindo?

Imagine que ao invés dos indicadores mencionados na linha, haveria um Serviço em execução que conteria uma parte totalmente calculada do indicador. E colocará o indicador no gráfico que visualizará os dados, calculados pelo Serviço em buffers indicadores.


Os indicadores devem ser utilizados de acordo com sua finalidade e não fazer algo universal a partir deles, apenas porque há vários indicadores a serem lançados em um único gráfico. Desta forma, você pode começar a reclamar sobre a proibição de OrderSend em indicadores.

 
fxsaber:

Como os serviços ou a capacidade de executar vários EAs em um único gráfico não podem cobrir completamente os problemas que estamos discutindo?

Imagine que ao invés dos indicadores mencionados na linha, haveria um Serviço em execução que conteria uma parte totalmente calculada do indicador. E colocará o indicador no gráfico, que visualizará os dados calculados pelo Serviço em buffers indicadores.

Isto é, será possível criar um indicador através do Serviço?
 
Alexey Kozitsyn:
Isto é, será possível criar um indicador através do serviço?
Isto já é possível a partir de um EA (com algumas limitações).
 
fxsaber:
Isto ainda é possível a partir da EA (com algumas limitações).
Você quer dizer usar muletas? Posso lhe dar um exemplo?