Erros, bugs, perguntas - página 1233

 
Pedida há muito tempo no 4 mas nunca obteve uma resposta que não fosse troça))

retornaTimeGMT() quandoStringToTime está errado; por exemplo, quandoStringToTime("0") - quando o argumento não é analisado.

E retorna a hora normal quando o argumento é analisado, por exemplo, quandoStringToTime(" 24.10.2014") - D'2014.10.24 00:00:00''.

Isto é normal? Porquê oTimeGMT() especificamente? Isto está a -2 horas da minha hora actual em MT4 e no meu computador.

 
A questão sobre o erro 4806 foi levantada há muito tempo " Porque é que a função CopyBuffer colocada num indicador personalizado, leva ao erro 4806?

enquanto a mesma função com os mesmos parâmetros no código EA funciona bem? "

o meu código funciona a partir do depurador, mas não funciona no modo normal (ou melhor, funciona por vezes e não consegui estabelecer um padrão simples sobre a razão pela qual funciona e porque não funciona)

porque precisamos de indicadores como o iXXX, se não podem ser utilizados normalmente?

 
tyn:
A pergunta sobre o erro 4806 "Porque é que a função CopyBuffer colocada num indicador personalizado leva ao erro 4806?

enquanto a mesma função com os mesmos parâmetros no código EA funciona bem? "

o meu código funciona sob o depurador, mas não funciona no modo normal (na verdade, funciona por vezes e não consegui estabelecer o simples padrão por que funciona e por que não funciona)

Porque é que precisamos de indicadores do tipo iXXX se não podem ser utilizados correctamente?

Tarde. Os dados para o CopyBuffer são retirados da mesma TF em que o seu indicador está a funcionar?

Já tentou usar a função BarsCalculated() para resolver o problema?

 
marketeer:
No MQL OOP, como verificar se um ponteiro é membro de uma determinada classe - como por exemplo em JavaScript ou dactilografado em C++?
CObject *ob;
datetime t;

typename(ob); // CObject
typename(t);  // datetime
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
  • www.mql5.com
Основы языка / Объектно-ориентированное программирование / Шаблоны функций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Posso definir o meu próprio valor (que é apresentado) para a etiqueta de preço em vez do preço a que é fixado? Em caso afirmativo, como?
 
Tapochun:

Boa tarde. Os dados para CopyBuffer são retirados da mesma TF onde o seu indicador está a correr?

Já tentou usar a função BarsCalculated() para resolver o problema?

Obrigado pela pergunta. Tirei dados do iATR em D1 o indicador principal está a correr em prazos menores, BarsCalculated() também retorna -1 e o mesmo erro. Como suponho, existe uma função mas não um indicador (em tempo de execução). Se eu criar um indicador noutra janela sobre a mesma ferramenta, tudo funciona. No modo de depuração também funciona. Mas a minha pergunta É um insecto ou não compreendo alguma coisa?
 

Boa tarde.

Problema com as chamadas de função do dll do sistema. A tarefa é escrever um servidor TCP simples em MQL5, que corre numa determinada porta e apenas recebe mensagens.

Importado das funções ws2_32.dll WSAStartup(), WSAClenup(), socket(), bind(), accept(), listen(), recv(). Tudo funciona exactamente até que se tente parar o servidor. Quando tento parar o servidor e terminar o script correctamente, o terminal simplesmente arranca.

Desde então, a função recv() tem sido utilizada como método científico.

No ficheiro anexo há uma linha (171):

  int bytesCnt = recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);

se estiver configurado para ter este aspecto:

  int bytesCnt = 10; //recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);

então o servidor pára sem quaisquer erros. Estive a ver exemplos de utilização de funcionalidades de rede na MSDN e fiz tudo por analogia.

Alguém tem alguma ideia de como resolver este problema?

Arquivos anexados:
 
tyn:
Obrigado por perguntar. Tirei dados do iATR em D1 o indicador principal funciona em prazos mais pequenos, BarsCalculated() também retorna -1 e o mesmo erro. Como suponho, existe uma função mas não um indicador (em tempo de execução). Se eu criar um indicador noutra janela sobre a mesma ferramenta, tudo funciona. No modo de depuração também funciona. Mas a minha pergunta É um insecto ou não compreendo alguma coisa?

Eu próprio tenho-me debatido com este problema recentemente. Resolvi-o, não sei se era óptimo, mas resolvi-o. Apenas os dados foram retirados de iFractals, mas isso não importa. Porque é que perguntei sobre a TF? De acordo com as minhas observações, acontece o seguinte. Por exemplo, o indicador funciona em M15. Se os dados indicadores forem solicitados de M1 a M15 - tudo está bem, os dados estão disponíveis no momento em que são solicitados (se não for a primeira chamada). Se forem solicitados dados à M30 (repito, o indicador corre na TF M15), no momento do pedido não há dados na M30 para uma vela nova (ou precisamos de um pedido preliminar, ou os dados são atrasados pelo tick). Resolvi-o da seguinte forma. Lembro-me do resultado do BarsCalculated() na vela actual. Assim que a próxima vez que o BarsCalculated() devolver o valor 1 mais (apareceu uma nova vela), lembramo-nos do novo valordo BarsCalculated() e copiamos os dados. Mas este momento (quando os dados indicadores aparecem na TF superior) não coincide com a formação de uma nova vela na TF actual.

Sim,BarsCalculated() retorna -1 quando não há dados, tanto quanto sei, só acontece durante a primeira corrida. Ou seja, quando se obtém o manípulo indicador e se solicita imediatamente os dados. Também precisa de esperar.

 

Imediatamente após a criação do cabo indicador, os dados não podem ser consultados uma vez que não estão prontos. O processo de inicialização e de recálculo é complexo e depende de muitos factores.

A estratégia correcta é criar uma pega no oninit e trabalhar com os dados quando chega o primeiro tick.

 
Renat:

Imediatamente após a criação do cabo indicador, os dados não podem ser consultados uma vez que não estão prontos. O processo de inicialização e de recálculo é complexo e depende de muitos factores.

A estratégia correcta é criar uma pega no oninit e trabalhar com os dados quando chega o primeiro tick.

Depois esta pergunta. Se o indicador for executado em M15. Forma-se uma nova vela. Ao solicitar dados para M15 e M30, deverão estes estar disponíveis ao mesmo tempo?
Razão: