[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 244

 
Boa tarde a todos. Tenho esta pergunta: quero fazer a EA solicitar dados de outros pares de moedas e prazos. Para isso, tenho que manter várias dezenas de gráficos abertos (embora a EA esteja instalada em apenas um gráfico). Tudo isso "come" muita memória e retarda o VPS (mesmo que as configurações reduzam o número de barras no histórico/janela). Há alguma maneira de evitar a abertura de muitos gráficos, mas para que as séries temporais necessárias continuem a existir? Agradecemos antecipadamente a sua resposta.
 
AndEv:
Bom dia para todos. Tenho uma pergunta: quero que a EA solicite os dados de outras moedas e prazos. Para fazer isto, tenho que manter várias dezenas de gráficos abertos (embora meu Conselheiro Especialista esteja apenas em um gráfico). Tudo isso "come" muita memória e retarda o VPS (mesmo que as configurações reduzam o número de barras no histórico/janela). Há alguma maneira de evitar a abertura de muitos gráficos, mas para que as séries temporais necessárias continuem a existir? Agradecemos antecipadamente a sua resposta.

O que você precisa exatamente de outras moedas? Por exemplo, você pode especificar quaisquer moedas e prazos nos indicadores e obter os dados dessa forma.

double iMA(NULL, 0, ...) // по символу и таймфрейму текущего графика
double iMA("AUDUSD", PERIOD_W1, ...) // по AUDUSD и по недельному таймфрейму

E você não precisa manter a tabela AUDUSD, W1 aberta.

 
paladin80:

O que você precisa exatamente de outras moedas? Por exemplo, você pode especificar quaisquer moedas e prazos nos indicadores e obter os dados dessa forma.

E você não precisa manter a tabela AUDUSD, W1 aberta.

Qualquer indicador realiza seus cálculos com base na série cronológica (em seu exemplo "AUDUSD", PERÍODO_W1), e a série cronológica não existe sem um gráfico. A questão é se há alguma forma de contornar isto. No MT4 você não poderia fazer muitas coisas, mas pessoas competentes (Zhunko, por exemplo) tornaram muitas coisas possíveis. Eu tentei obter os dados como você diz, mas não funcionou, embora o par estivesse presente na janela do Market Watch. Após abrir a tabela relevante, consegui obter os dados necessários imediatamente.
 
AndEv:
Qualquer indicador faz seus cálculos com base em uma série de tempos (em seu exemplo "AUDUSD", PERÍODO_W1), e uma série de tempos não existe sem um gráfico. A questão é se há alguma forma de contornar isto. No MT4 você não poderia fazer muitas coisas, mas pessoas competentes (Zhunko, por exemplo) tornaram muitas coisas possíveis. Eu tentei obter os dados como você diz, mas não funcionou, embora o par estivesse presente na janela do Market Watch. Após a abertura da tabela relevante, foi imediatamente possível obter os dados necessários.

Existe uma série de tempos sem uma tabela, se o instrumento estiver aberto e houver uma referência constante a este período de tempo. Neste caso, não é necessário um gráfico
 
AndEv:
Qualquer indicador realiza seus cálculos com base na série cronológica (em seu exemplo "AUDUSD", PERÍODO_W1), mas a série cronológica não existe sem um gráfico. A questão é se há alguma forma de contornar isto. No MT4 você não poderia fazer muitas coisas, mas pessoas competentes (Zhunko, por exemplo) tornaram muitas coisas possíveis. Eu tentei obter os dados como você diz, mas não funcionou, embora o par estivesse presente na janela do Market Watch. Após abrir a tabela relevante, consegui obter os dados necessários imediatamente.
Fez um código como este:

double MA_AUDUSD_M5, MA_AUDUSD_W1, MA_EURCAD_H1;
//+------------------------------------------------------------------+
int start()
  {
//----
MA_AUDUSD_M5=iMA("AUDUSD",PERIOD_M5,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_AUDUSD_W1=iMA("AUDUSD",PERIOD_W1,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_EURCAD_H1=iMA("EURCAD",PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0);

Comment ("MA_AUDUSD_M5 = ",DoubleToStr(MA_AUDUSD_M5,Digits),"\n",
         "MA_AUDUSD_W1 = ",DoubleToStr(MA_AUDUSD_W1,Digits),"\n",
         "MA_EURCAD_H1 = ",DoubleToStr(MA_EURCAD_H1,Digits));
//----
   return(0);
  }
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+

Ao testar com visualização no EURUSD, o Daily acaba assim:


Havia realmente algo de errado com o EURCAD. Lembrei que não trabalho com este instrumento e talvez não haja história para ele, fiz o download (F2, etc.), reiniciei o terminal e foi isto que consegui:


Há dados sobre o EURCAD. Talvez eu devesse contar ao VPS o histórico do instrumento necessário.

 
AndEv:
Qualquer indicador faz seus cálculos com base em uma série de tempos (em seu exemplo "AUDUSD", PERÍODO_W1), e uma série de tempos não existe sem um gráfico. A questão é se há alguma forma de contornar isto. No MT4 você não poderia fazer muitas coisas, mas pessoas competentes (Zhunko, por exemplo) tornaram muitas coisas possíveis. Eu tentei obter os dados como você diz, mas não funcionou, embora o par estivesse presente na janela do Market Watch. Após a abertura da tabela relevante, foi imediatamente possível obter os dados necessários.

Preventivamente, os dados são solicitados para o instrumento requerido, também é construído sem um gráfico, mas leva tempo.
 
FAQ:

Preventivamente, os dados são solicitados para o instrumento desejado, ele é construído sem um gráfico, mas leva tempo.
Esse é o ponto, é possível obter os dados quando você os pede novamente. Mas como você faz isso acontecer na primeira vez?
 
hoz:

E aqui está de fato o próprio peru.

https://www.mql5.com/ru/code

Não estou interessado no indicador em si como um sinal comercial. Mas notei o nome interessante e decidi ver suas "tripas". Então eu tropeçei...

Decidi levá-lo à aparência "de sempre" (perdoe-me o autor). O que eu tenho (no arquivo).
Arquivos anexados:
ssl.mq4  4 kb
 
AndEv:
Esse é o ponto, é possível obter os dados quando você os pede novamente. Mas como você faz para que funcione da primeira vez?

Você já tentou o tratamento de erros?
 
paladin80:

Talvez o VPS deva contar as histórias sobre as ferramentas a serem utilizadas.

O download do histórico não fará nada, porque a consulta precisa de dados novos o tempo todo. Eu também fiz tal roteiro, e então movi o código para as corujas, para que o lançamento fosse feito a partir do tique de entrada. Na dinâmica semabrir o gráfico tenho que consultar duas vezes, somente neste caso posso obter novos dados. Eu não sei como fazê-lo sem repetidas consultas.