Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 705

 
exsistentia:

Aparentemente, eu não expliquei exatamente o problema. O problema é que há uma ordem GBPUSD em aberto (não pendente), o preço em aberto é 1,61029. A função OrderOpenPrice, como eu a entendo, deve retornar o preço realmente aberto do pedido (1,61029). Entretanto, retorna um valor arredondado para 4 casas decimais, 1,6103. Testado em diferentes pedidos com diferentes preços abertos - o resultado é o mesmo: falta o último dígito.


Para isso, existe o DoubleToStr(), que escreverá com Dígitos reais, mas escreverá com 4! Veja a Documentação no canto superior esquerdo, você encontrará tudo lá e aprenderá muito + tutorial!

Aí está:

Alert("Цена открытия ",OPP);// не так

Alert("Цена открытия ",DoubleToStr(OPP,Digits);// а так
 
borilunad:


Há DoubleToStr() para isso, que escreverá com Dígitos reais, mas desta forma escreverá com 4! Veja a Documentação no canto superior esquerdo, você encontrará tudo lá e aprenderá muito + tutorial!

Aí está:



Muito obrigado! E eu estou lendo o tutorial, e escrevendo um EA à medida que vou avançando.

E outra pergunta: qual é a maneira mais fácil de saber que uma determinada ordem é fechada (por bilhete)? Devo usar a função OrderCloseTime, ou existe uma função especial para este fim?

 
exsistentia:



Muito obrigado! Estou lendo o tutorial e escrevendo um EA à medida que vou avançando.

E outra pergunta: qual é a maneira mais fácil de saber se um pedido é fechado (por bilhete)? Devo usar a função OrderCloseTime, ou existe uma função especial para este fim?

   if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()>0) {
      // Ордер закрыт
      }

A variável do bilhete deve armazenar o número do bilhete do pedido a ser verificado
 
artmedia70:

A variável do bilhete deve armazenar o número do bilhete do pedido a ser verificado

Se o pedido for fechado, não deveria ser encontrado na história (MODE_HISTÓRIA)?
 
artmedia70:

A variável do bilhete deve armazenar o número do bilhete do pedido a ser verificado

Obrigado.

Outra pergunta. Há um bloco no EA que deve apagar as ordens pendentes, dependendo do fechamento das ordens de mercado:

OrderSelect(T1,SELECT_BY_TICKET);
datetime cls1;
cls1=OrderCloseTime(); // hora de fechar 1 pedido
OrderSelect(T2,SELECT_BY_TICKET);
datatime cls2;
cls2=OrderCloseTime(); // hora de fechar 2 pedidos
Alert(cls1," ",cls2);

if(cls1==0 && cls2==0) //se ambos os pedidos estiverem abertos
return(0);
else
CLS+++; // bandeira de fechamento para uma das ordens

if(cls1>0 && CLS===1) //apagar ordens pendentes dependendo de qual ordem é fechada
OrderDelete(T3);
if(cls2>0 && CLS===1)
OrderDelete(T4);
return(0);
}

O bloco não funciona por algum motivo (não fecha ordens pendentes) e o Alerta sempre mostra "0 0". Eu fechei especificamente uma das ordens abertas, mas nada acontece. Parece que a EA não verifica se o pedido já foi fechado e agora está processando os dados antigos. Qual poderia ser o problema?

 
exsistentia:

Obrigado.

Outra pergunta. Há um bloco no EA que deve apagar as ordens pendentes, dependendo do fechamento das ordens de mercado:


O bloco não funciona por algum motivo (as ordens pendentes não são fechadas) e o Alerta sempre mostra "0 0". Eu fechei de propósito uma das ordens abertas, mas nada acontece. Parece que a EA não verifica se o pedido já foi fechado e agora está processando os dados antigos. Qual poderia ser o problema?

Onde o bilhete de pedido é descoberto? E de onde vem o OrderCloseTime se a ordem ainda estiver ativa (pelo menos, é selecionada entre as ativas por código)?
 
evillive:
Onde o bilhete de pedido é descoberto? E de onde vem o OrderCloseTime se a ordem ainda estiver ativa (pelo menos é selecionada entre as ativas por código)?
Pare de se enfurecer. Neste caso, o pool é ignorado. Somente por um tempo próximo maior/igual a zero, podemos determinar a partir de qual lista a ordem foi selecionada. É uma pena não conhecer estas noções básicas ;)
 
evillive:

se um pedido é fechado, não deveria ser procurado na história (MODE_HISTÓRIA)?
Se selecionado por índice - sim, na história, se selecionado por pool de bilhetes é ignorado. Aprenda a matemática ;)
 
artmedia70:
Oh, pare de se enfurecer. Neste caso, o pool é ignorado. Somente com tempo de fechamento maior que/igual a zero você pode determinar de qual lista a ordem foi selecionada. É uma pena não conhecer estas noções básicas ;)


Eu quase nunca procuro por bilhete, mais por índice, pode ser uma vergonha, mas o que você pode fazer ;)

mas a busca pelo bilhete certo não é citada ali, talvez ele esteja procurando-o errado e depois reclama que o código não funciona...

 
evillive:

Eu quase nunca procuro por bilhete, mais por índice, talvez seja uma vergonha, mas o que você pode fazer ;)

mas procurar o bilhete certo lá no código não levou, talvez ele esteja procurando-o errado e depois reclamando que o código não funciona...

Está uma bagunça lá fora...