Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1738
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Seu código imprime 0, não -1...
Talvez -1 seja impresso em outro lugar, o mais provável é que todo o código esteja nas impressoras
Sim, você está certo, cada passo é pré-impresso para ver onde "empatou".
Exemplo é incorreto, desculpe, o código em si é grande.
Mas, a solução de Konstantin resolveu o problema! De fato, trocou i... e verificação zero em toda parte, e agora a lógica funciona como deveria, em vez de -1, produz 0 ou 1. (antes de 0 ou -1, com este último um erro imediatamente).
Seu código imprime 0, não -1...
É possível que -1 seja impresso em outro lugar, muito provavelmente todo o código esteja nas impressoras...
Antes de tentar resolver o problema, você precisa identificá-lo... Certifique-se de que está lá e localize-o antes de resolvê-lo...
Pegue uma caneta e um pedaço de papel. E escreva como o laço conta. Neste código.
verificando
nunca irá funcionar neste código. A menos que você defina inicialmente
um valor ímpar. Se estiver quites, este código irá
para
virá com um valor estranho.
Antes de tentar resolver um problema, você precisa identificá-lo... Certifique-se de que está lá e localize-o, e depois resolva-o...
Estou entendendo o que você quer dizer.
Pegue uma caneta e um pedaço de papel. E anote como o ciclo é contado. Neste código.
Por que eu pegaria caneta e papel se a condição diz impressão =-1, mas na verdade (eu verifiquei) ela imprime como 0, ou seja, o exemplo é dado incorretamente. E é impossível dar uma resposta correta a um exemplo incorreto...
Por que eu pegaria caneta e papel se a condição diz impressão =-1, mas na verdade (eu verifiquei) ela imprime como 0, então o exemplo está incorreto. E é impossível dar uma resposta correta a um exemplo incorreto...
Zero é impresso a partir desta linha
e não da saída de verificação e quebra.
Em geral, é mais correto escrever
porque as arrays começam com um índice zero
Zero é impresso a partir desta linha
não de verificação e saída de pausa.
0 é impresso a partir desta linha, para aquele código que foi dado...
Print(i);
A questão não era por que a pausa não funciona, a questão era por que a impressora imprimiu -1... só isso. E não importa se o i começa é igual ou estranho, nunca imprime -1...
Trying Close[], mas o índice não dá mais de 5000.
Você pode me dizer como calcular carrapatos ou velas durante um longo período de tempo? (Um ano, por exemplo).
Eu tentei Close[], mas o índice não dá mais de 5000.
Carrapatos ou velas fazem uma diferença tão grande, é no mínimo assustador...
Há tanta diferença entre carrapatos e velas que é assustador dizer...
Por exemplo, um EA, se você especificar qualquer período para ele, no testador ele irá por carrapatos ou por barras M1, todos o levarão em consideração.
Mas se você levar um EA que vai para a longa história em tempo real e leva dados de lá, eu não entendo como organizá-lo. O terminal não dá mais de 5000 velas.
UPD
Vou tentar usar esta coisa, o código está na rede
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Estranho. De repente, funciona. Até a milionésima barra é verificada. Não fez nada, leu a documentação, bebeu chá. Acabou de ser executado novamente e funcionou. Tive erro o dia todo, embora tivesse baixado o histórico e mudado as configurações ontem.
Portanto, também não havia necessidade de verificar código adicional (acima).
MT4 é um pouco temperamental. Ou talvez o forex chif tenha essa característica. Vou ter que colocar o padrão em vez do padrão do corretor.
Por exemplo, um Expert Advisor, se você especificar qualquer período para ele, ele passará pelo testador por ticks ou por barras M1, todos o levarão em consideração.
E se você levar um Expert Advisor, que no modo de tempo real vai para a longa história e leva dados de lá, eu não entendo como organizá-lo. O terminal não dá mais de 5000 velas.
UPD
Vou tentar usar esta coisa, o código está na rede
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Estranho. De repente, funciona. Até a milionésima barra é verificada. Não fez nada, leu a documentação, bebeu chá. Acabou de ser executado novamente e funcionou. Tive erros o dia todo, embora tivesse baixado o histórico e mudado as configurações ontem.
Portanto, também não havia necessidade de verificar código adicional (acima).
MT4 é um pouco temperamental. Ou talvez o forex chif tenha essa característica. Terei que colocar o padrão, não o de corretagem.
A primeira chamada para CopyRates() iniciou o bombeamento de dados históricos (não os execute por uma semana e você terá a mesma coisa novamente, bem, talvez não uma semana, mas algum tempo).
Você só precisa verificar quantos dados há no servidor e comparar a quantidade disponível com o Expert Advisor. Se for menos do que o necessário - deixar a EA até o próximo tick. No próximo tick, verifique novamente. Se para algumas tentativas o histórico exigido não for obtido - então este erro deve ser processado como é exigido.