[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 180
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
Quando se trabalha com números do tipo duplo, quando se precisa atribuir algum valor a uma variável (por exemplo, zero), autores diferentes têm ortografias diferentes. Por exemplo, a=0; ou a=0,0; ou a=0,0000; Existe alguma diferença em termos de operação correta do programa?
se ((OrderSymbol()==Symbol()) && ((OrderMagicNumber()==44) ||| (OrderMagicNumber()==55)) && (ticket==0)){
OrderDelete(OrderTicket());
int err1=GetLastError();
Imprimir(err1);}
Este pedaço de código está funcionando bem desde recentemente...agora um erro ERR_OFF_QUOTES é devolvido. Favor observar que o erro é devolvido pela OrderDelete, mesmo que o número do bilhete seja inserido manualmente. Alguém pode esclarecer a situação? Obrigado.
Quando se trabalha com números do tipo duplo, quando se precisa atribuir algum valor a uma variável (por exemplo, zero), autores diferentes têm formas diferentes de escrevê-la. Por exemplo, a=0; ou a=0,0; ou a=0,0000; Existe alguma diferença em termos de operação correta do programa?
Não, não há regra. Mas pessoalmente, prefiro escrever valores duplos constantes usando um ponto.
Por exemplo:
Primeiro, uma rápida olhada no texto mostra que o tipo de valor é o dobro.
Em segundo lugar, evita alguns erros. Compare:
Por favor, ajude. Não quer executar o código:
int start()
{
int pre12;
{
if(PREÇO_CLOSE>PREÇO_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point,CLR_NONE);
}
retornar;
}
Isto é, como pretendido, se a vela estiver ascendente - aberta.
Tudo se compila. Mas nada acontece durante o teste. Isto é, não faz nenhum pedido. Faça um buraco no erro, por favor...
Por favor, ajude. O código não quer executar:
int start()
{
int pre12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point,CLR_NONE);
}
retornar;
}
Ou seja, se a vela está subindo, ela se abre.
Tudo se compila. Mas nada acontece durante o teste. Isto é, não faz nenhum pedido. Por favor, basta apontar o dedo para o erro.
Que candelabro é o candelabro atual na tabela? O candelabro do dia anterior? O candelabro da semana anterior? Se for o candelabro do dia anterior, por exemplo... pareceria assim
if(iOpen(NULL,1440,1)<iClose(NULL,1440,1)) a ajuda iOpen/iClose descreve claramente tudo
Por favor, ajude. Não quer executar o código:
int start()
{
int pre12;
{
if(PREÇO_CLOSE>PREÇO_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point,CLR_NONE);
}
retornar;
}
Isto é, como pretendido, se a vela está subindo, ela se abre.
Tudo se compila. Mas nada acontece durante o teste. Isto é, não faz nenhum pedido. Faça um buraco no erro, por favor...
A questão é que PRICE_CLOSE e PRICE_OPEN são constantes, não funções e não conjuntos de séries temporais. Para obter os valores dos preços de abertura e fechamento dos castiçais, precisamos nos referir a funções(iOpen e iClose) ou conjuntos de séries de tempo(Open e Close).
Para saber mais, leia o tutorial, por exemplo, esta seção explica as variáveis pré-definidas (que incluem as séries de tempo que você deseja, Abrir e Fechar).
Quando se trabalha com números do tipo duplo, quando se precisa atribuir algum valor a uma variável (por exemplo, zero), autores diferentes têm ortografias diferentes. Por exemplo, a=0; ou a=0,0; ou a=0,0000; Há alguma diferença em termos de operação correta do programa?
Eu entendo que no caso de
O compilador toma "1" como um valor do tipo int e a conversão do tipo é realizada (int para tipo duplo alvo).
E em caso de:
ou (não há diferença)
o compilador vê "1.(xxxx)" como um valor do tipo duplo e a conversão do tipo não é realizada.
P.S.: Graças ao PapaYozh pelo exemplo. Os pensamentos acima vieram depois disso.
Acho que é mais fácil para o compilador quando ele não cita os tipos muitas vezes. Ou talvez haja linhas com tipos "não convertidos" no ex4 também? Isso significa que o desempenho está diminuindo? Embora o compilador seja suposto otimizar o código.
Deixe que os programadores mais experientes da MQL4 me corrijam.
Obrigado pelas mega respostas. Leitura, escavação.
Este código funcionou bem até recentemente...agora o erro ERR_OFF_QUOTES é devolvido. Favor observar que o erro é devolvido pela OrderDelete, mesmo que o número do bilhete esteja escrito à mão. Alguém pode esclarecer a situação? Obrigado.