Alguém sabe como desenvolver um indicador de múltiplas moedas ? - página 2

 

A primeira vez que você liga para o ACR você recebe um erro 4066. É isso aí. Ligue novamente e você recebe uma contagem válida, mas sem dados nos arrays. O acesso aos arrays não resultará em fora de alcance.

 
WHRoeder:

A primeira vez que você chama o ACR, você recebe o erro 4066. É isso aí. Ligue novamente e você receberá uma contagem válida, mas sem dados nos arrays. O acesso às matrizes não resultará em fora do alcance.

Tenho que discordar, pois não estou vendo o que você acabou de descrever. Entretanto, isto pode ser devido ao fato de que na maioria das vezes em meu uso do Real Live, todos os dados estão normalmente disponíveis, e em meu ambiente de demonstração/teste gerei ".hst" e ".fxt" a partir de dados externos.

Tentarei recriar as condições de "limpeza da ardósia" de nenhum dado local e verei se posso replicar o que você está descrevendo.

 

Recriei as condições de "ardósia limpa" e codifiquei um pequeno roteiro para testar isso em um loop contínuo sem função de sono. Corri o script duas vezes contra um gráfico "EURUSD", mas tinha os dados de solicitação de código no "NZDCAD" que nunca foi carregado antes.

Os resultados na primeira execução são os seguintes.

  • Durante as primeiras 73607 iterações (que duraram aproximadamente 516ms), o "ArrayCopyRates" sempre retornou uma contagem de -1, e gerou um erro de 4073 (Erro 4073 - Sem dados históricos). O tamanho da matriz sempre foi 0 durante estas iterações.

  • Finalmente na 73608ª iteração, ele retornou uma contagem de 512 e o tamanho da matriz foi definido para 512 também e o tempo para o elemento 0 tinha um tempo válido (e não 0) e nenhum erro foi gerado.
Eu então fiz uma segunda execução do Script, já que os dados já estavam carregados e estes foram os resultados:
  • Durante a primeira e única iteração, o "ArrayCopyRates" retornou uma contagem de 2048, mas gerou um erro 4066, mesmo que a contagem de retorno fosse válida (Erro 4066 - Os dados do histórico solicitado estão em estado de atualização). O tamanho do Array também era 2048 e o tempo para o elemento 0 era válido (e não 0).

  • Anexei um arquivo ZIP com o script de teste, bem como os arquivos de log resultantes.


Deixem que vocês tirem suas próprias conclusões!

PS! Minha conclusão, é combinar todos os testes antes de prosseguir. (isto é, testar o código de retorno do "ArrayCopyRates", verificar os códigos de erro, testar o tamanho da matriz do MqlRates e (como uma guarda segura como WHRoeder sugere) também testar a validade da data dos elementos da matriz.

EDIT: Se eu tivesse usado somente o teste "par[0].time == 0", ele teria dado um erro de índice de array (e causado a interrupção da execução) durante as primeiras iterações da primeira execução quando nenhum dado estava disponível. Portanto, mantenho minha afirmação de que é preciso verificar o código de retorno e o tamanho da matriz, mas concordo que o teste de tempo pode oferecer um nível de verificação subseqüente uma vez que as outras condições tenham sido atendidas.

Arquivos anexados:
testacr.zip  217 kb
 
Estranho, como não houve um único comentário do cartaz original desde que este tópico foi iniciado. Será que ele está mesmo seguindo isto?
 
FMIC:
  • Durante as primeiras 73607 iterações (que duraram aproximadamente 516ms), o "ArrayCopyRates" sempre retornou uma contagem de -1, e gerou um erro de 4073 (Erro 4073 - Sem dados históricos). O tamanho da matriz sempre foi 0 durante estas iterações.
  • Finalmente, na 73608ª iteração, ele retornou uma contagem de 512 e o tamanho da matriz foi definido para 512 também e o tempo para o elemento 0 tinha um tempo válido (e não 0) e nenhum erro foi gerado.
Este é exatamente o comportamento oposto da versão pré-construída 600.
Isto é o que eu esperava originalmente, mas tinha sido provado que estava errado.
Eles finalmente acertaram e eu vou notar isto para o futuro.
 
FMIC:


EDIT: Se eu tivesse usado somente o teste "par[0].time == 0", ele teria dado um dado erro de índice de matriz (e causado a interrupção da execução) durante as primeiras iterações da primeira execução, quando não havia dados disponíveis. Portanto, mantenho minha afirmação de que é preciso verificar o código de retorno e o tamanho da matriz, mas concordo que o teste de tempo pode oferecer um nível de verificação subseqüente uma vez que as outras condições tenham sido atendidas.


Tudo isso é muito útil, obrigado pela pesquisa e pelos resultados.

 
FMIC:
Estranho, como não houve um único comentário do pôster original desde que este tópico foi iniciado. Será que ele está mesmo seguindo isto?

Por que ele/ela deveria estar seguindo este post, os posts subseqüentes foram muito além do nível de compreensão para a maioria das pessoas neste fórum.

Que tal tentar apenas responder à pergunta de maneira simples e precisa !

Agora, para responder à pergunta original, caso haja uma pequena chance do pôster original ainda estar por perto, o Google é seu amigo.

 
4x_Gypsy:

Que tal tentar responder à pergunta de maneira simples e precisa !

Respondemos à pergunta que estava em essência:"Eu quero escolher ENTRE 1 a 10 moedas diferentes e 5 barras para cada moeda. "

Como ele não forneceu nenhum exemplo de código, ou mais detalhes, não foi possível dar uma resposta simples e precisa. Tudo o que podíamos fazer era dar respostas gerais e uma consciência dos problemas que ele enfrentaria. Respondemos que ele deveria usar"ArrayCopyRates()" ou usar as"iFunções()" e que ele precisaria manter um registro dos atrasos e erros inerentes que obviamente obteria. Complementamos então as informações discutindo as armadilhas e problemas, tais como a falta da função sono em Indicadores e os diferentes comportamentos entre pré-600 e pós-construção.

Se você diz que isto estava em sua cabeça, tudo o que ele tinha que fazer era afixar algo no efeito de: "Desculpe, eu não entendo! Você pode simplificar para mim". Mas como nunca existiu tal postagem (ou qualquer outra), a discussão continuou na crença de que ele e os outros puderam segui-la.

Agora, como você escreveu, ele poderia usar o Google e encontrar muitos Indicadores Multi-frame lá fora, mas se ele ainda não souber COMO funciona, ele não irá muito longe em fazer seu indicador funcionar como ele deseja.

EDIT: PS! NB! Depois de pensar novamente sobre isso, WHRoeder realmente forneceu o código do esqueleto como uma solução para o problema. Não se pode ser mais simples e preciso do que isso, dada a falta de detalhes na pergunta original.

 
FMIC:

Respondemos à pergunta que estava em essência:"Eu quero escolher ENTRE 1 a 10 moedas diferentes e 5 barras para cada moeda. "

Como ele não forneceu nenhum exemplo de código, ou mais detalhes, não foi possível dar uma resposta simples e precisa. Tudo o que podíamos fazer era dar respostas gerais e uma consciência dos problemas que ele enfrentaria. Respondemos que ele deveria usar"ArrayCopyRates()" ou usar as"iFunções()" e que ele precisaria manter um registro dos atrasos e erros inerentes que obviamente obteria. Complementamos então as informações discutindo as armadilhas e problemas, tais como a falta da função sono em Indicadores e os diferentes comportamentos entre pré-600 e pós-construção.

Se você disser que isto estava em sua cabeça, tudo o que ele tinha que fazer era afixar algo para o efeito: "Desculpe, eu não entendo! Você pode simplificar isso para mim". Mas como nunca houve nenhum correio desse tipo (ou qualquer outro), a discussão continuou na crença de que ele e outros poderiam segui-lo.

Agora, como você escreveu, ele poderia usar o Google e encontrar muitos Indicadores Multi-frame lá fora, mas se ele ainda não souber COMO funciona, ele não irá muito longe em fazer seu indicador funcionar como ele deseja.

EDIT: PS! NB! Depois de pensar nisso novamente, WHRoeder realmente forneceu o código do esqueleto como uma solução para o problema. Você não pode ficar mais simples e preciso do que isso, dada a falta de detalhes na pergunta original.

A pergunta era "Alguém sabe como desenvolver um indicador de múltiplas moedas?".

A resposta óbvia foi "Sim, nós (FMIC e WHRoeder) apenas nos vemos discutir isso", sem perguntar ou esperar por detalhes sobre o que o OP realmente precisa.

O que ele/ela queria fazer com esse indicador era "Quero escolher ENTRE 1 a 10 moedas diferentes e 5 barras para cada moeda".

Sim, foram fornecidos exemplos. Mas eles foram fornecidos como mais um concurso entre vocês dois. Debate interessante? Sim. Aprendi algo que eu não sabia. O exemplo foi fornecido de tal forma que um novato pode ser capaz de entender? Não tanto assim. As pessoas vêm a este fórum por causa da falta de assistência e de tutoriais do MetaTrader. A maioria das pessoas que postam aqui tem uma compreensão mínima do que desejam fazer e quando a discussão vai longe demais, elas se desviam de sua compreensão. O que é uma vergonha absoluta.

A grande pista era "Mas eu não sei como fazer isto".

Da falta de qualquer tipo de resposta da OP é uma indicação de que há algo errado. Meu "palpite" é que a OP ficou frustrada com a falta de compreensão e abandonou o fio da meada. Houve um tempo atrás em que eu fiz a mesma coisa. Aprendi mais com diferentes sites/fóruns do que este porque ninguém estava tomando tempo para perceber como eu era novo e continuamente afixava exemplos e tinha discussões completamente acima do meu entendimento na época.

Mas nada disso importa mais desde que a OP desapareceu.

Novamente isto é uma vergonha, quem sabe esta pessoa pode ser ou tornar-se o próximo guru que este e outros fóruns precisam tanto.

 
4x_Gypsy:

A grande pista era "Mas eu não sei como fazer isto".

Da falta de qualquer tipo de resposta da OP é uma indicação de que há algo errado. Meu "palpite" é que a OP ficou frustrada com a falta de compreensão e abandonou o fio da meada. Houve um tempo atrás em que eu fiz a mesma coisa. Aprendi mais com diferentes sites/fóruns do que este porque ninguém estava tomando tempo para perceber como eu era novo e continuamente afixava exemplos e tinha discussões completamente acima do meu entendimento na época.

Do seu ponto de vista você pode estar certo, por outro lado, vi muitas perguntas que simplesmente foram respondidas se alguém arriscar uma rápida olhada na documentação e eu realmente me sinto um idiota respondendo a esse tipo de perguntas repetidamente.

Além disso, há ainda o google e uma opção de busca aqui. Se eu não souber como fazer algo, este seria meu próximo passo para tentar resolver o problema por conta própria.

Agora ao tópico deste tópico: "...como desenvolver um sistema de múltiplas moedas". Isso me soa como "ensine-me a codificar de graça", o que é muito próximo de "você pode codificar isso para mim". Tudo isso não é muito sério.

Como há tanto código disponível gratuitamente, minha resposta a isso teria sido: "Use o google ou a busca aqui para encontrar código livre e mudá-lo"!

Se as pessoas ficam ofendidas com isso, acho que é problema delas.