Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 556

 

Por favor, me diga por que no código que copiei deste site o compilador escreve "identificador não declarado" antes doMagic?

for (int pos=0; pos<=OrdersTotal()-1; pos ++) 
{
 if(OrderSelect (pos, SELECT_BY_POS)==true)
  {if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic &&OrderCloseTime()==0) // если у Вас есть отложенные ордера и открытие
  return;}
 else
  Print("OrderSelect() вернул ошибку - ",GetLastError());
}            
 //продолжае
 
VasiliKolchanov:

Você pode me dizer por que no código que copiei deste site antes deMagic o compilador escrever "identificador não declarado" ?

deve ser porque não é declarado.

declará-lo no início. ou como parâmetro ou constante...ou variável, pelo menos de alguma forma...a entidade deve existir :-)

input int Magic=5566; // это чтобы он был в параметрах и можно поменять

// или const int Magic = 8899;

 
VasiliKolchanov:

Você poderia me dizer por que no código que copiei deste site o compilador escreve "identificador não declarado" antes doMagic?

Porque usei o identificador Magic, que tipo (e valor, respectivamente) não é descrito em nenhum lugar. Você precisa declarar uma variável (ou constante) com esse nome e atribuir um valor a ela.

 
VasiliKolchanov:

Por favor, me diga por que no código que copiei deste site o compilador escreve "identificador não declarado" antes doMagic?

Porque não é declarado em nenhum lugar em seu código - é óbvio.
 
Artyom Trishkin:
Porque não é declarado em nenhum lugar em seu código - isso é óbvio.
Obrigado a todos vocês!
 

Rapazes, digam-me como lidar e por onde começar!

Exemplo: tenho 15 pedidos com lote 0,01. Preciso fechar alguns negócios com lote 0,07 em algum momento.

Minha pergunta é: como posso fechar 7 pedidos ou 0,07 em um OrderClose(...)?

Se eu colocar 0,07 de uma só vez, não vejo negócios com volume 0,01.

Eu sou novo em programação

 
Rustam Bikbulatov:

Rapazes, digam-me como lidar e por onde começar!

Exemplo: tenho 15 pedidos com lote 0,01. Preciso fechar alguns negócios com lote 0,07 em algum momento.

Minha pergunta é: como posso fechar 7 pedidos ou 0,07 em um OrderClose(...)?

Se eu colocar 0,07 de uma só vez, não vejo negócios com volume 0,01.

Sou novo em programação.

Não há como fechá-lo por uma ordem. Só podemos fazer uma seleção de pedidos e conseqüentemente eliminar cada pedido. E se você apagar a ordem de um volume menor, você ainda tem um volume aberto. Comparamo-lo com nosso volume aberto restante. Fechamos até que o volume de 0,07 atinja seu limite. Essa é a única maneira.

 
Rustam Bikbulatov:

Rapazes, digam-me como lidar e por onde começar!

Exemplo: Tenho 15 pedidos com lote 0,01. Preciso fechar alguns negócios com lote 0,07 em algum momento.

Minha pergunta é: como posso fechar 7 pedidos ou 0,07 em um OrderClose(...)?

Se eu colocar 0,07 de uma só vez, não vejo negócios com volume 0,01.

Sou novo em programação.

Se o corretor permitir o uso de contra-fechamento, você pode abrir uma ordem oposta com o volume 0,07, fixando assim o preço de lucro/perda para este volume. Bem, depois disso, ainda precisaríamos realizar 7 operações próximas opostas (função OrderCloseBy()). Há mais uma operação comercial a ser executada utilizando esta abordagem. A vantagem é que todos os sete pedidos são fechados por um preço.

 

Olá a todos.

Favor informar sobre a velocidade da EA, e provavelmente a confiabilidade e correção do código.

Estou me referindo a ordens abertas e pendentes em cada tick e alterá-las se necessário.

No manual para OrderSelect, está escrito:"Quando as ordens são selecionadas sequencialmente usando o parâmetro SELECT_BY_POS, a informação é dada na ordem em que foi recebida do servidor comercial."

A partir daí, surge a pergunta: podemos criar uma matriz, na qual devemos manter o tipo, o preço de entrada e, por exemplo, um comentário único do pedido? Você percorreria a matriz em cada tick e, se necessário, se dirigiria à função OrderSelect e faria uma seleção usando o comentário único do pedido?

 
Decromor:

Olá a todos.

Por favor, dê seu conselho, é principalmente sobre a velocidade da EA e provavelmente sua confiabilidade e correção por escrito.

Estou me referindo a ordens abertas e pendentes em cada tick e alterá-las se necessário.

No manual para OrderSelect, está escrito:"Quando as ordens são selecionadas sequencialmente usando o parâmetro SELECT_BY_POS, a informação é dada na ordem em que foi recebida do servidor comercial."

A partir daí, surge a pergunta: podemos criar uma matriz, na qual o tipo, o preço de entrada e, por exemplo, um comentário único de um pedido seria armazenado? Em cada tick, devemos percorrer a matriz e, se necessário, dirigir-nos à função OrderSelect e fazer uma seleção através do comentário único do pedido?

A OrderSelect() é implementada dentro do terminal, e não há solicitação ao servidor. É por isso que não há nada de ruim em chamar a lista de pedidos em cada carrapato. Isto é exatamente o que a maioria dos EAs faz.

E sua pergunta sobre a matriz está relacionada com a arquitetura do programa. No caso de uma EA complexa que opera com uma grande quantidade de pedidos, isto é absolutamente necessário. Se o Expert Advisor opera com uma única ordem com lógica simples, a matriz é redundante.

Vale apenas mencionar o fato de que mesmo que tenhamos uma série de ordens, não podemos deixar de chamar OrderSelect(). Afinal de contas, temos que verificar a cada tique se a ordem ainda existe ou não. E também, seus parâmetros podem ser alterados.

Razão: