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 885

 
AlexeyVik:

Desculpe-me por insistir, mas quero entender por que você não quer usar um intérprete se você fala inglês como eu.

É isso que este aviso significa.

Para ser mais específico, a função OrderClose() retorna verdadeiro se executada com sucesso ou falso se falhar, então você tem que verificá-la... se a função foi executada com sucesso.

E por que você acha que o aviso está de alguma forma associado ao número do pedido na lista? Eu não entendo...

Bem, eu consigo lidar com o inglês sem a ajuda de ninguém, mas de alguma forma não consigo fazê-lo com mql4. Como posso verificar o sucesso - não o sucesso, que função ou o que mais? E associado ao número do bilhete não é um aviso, e minha busca por uma verificação de função, realizada sem entender a essência.

 
rapid_minus:

Bem, eu consigo lidar com o inglês sem nenhuma ajuda, mas o mql4 não é tão bom assim. Explicar como verificar o sucesso - não o sucesso, que função ou o que mais? Não é um aviso, é minha busca pela verificação de função sem entender a essência da mesma.


Não é nada bom. Vladimir, você citou uma frase contendo uma resposta inequívoca e cristalina à sua pergunta; e imediatamente você repetiu esta pergunta reprovando o respondedor:

" ... A função OrderClose() retorna verdadeiro se executada com sucesso ou falso se não tiver sucesso, é isso que você precisa verificar...se a função foi executada com sucesso... "

Não está na hora de começar a pensar sobre isso?

 
tara:

Bzzzzz... Bem, você só me faz aprender mql4.

Eu não me propus tal objetivo. Minha tarefa era puramente local - escrever uma EA funcional através de minha própria estratégia, estudando o idioma apenas dentro do escopo mínimo exigido. Depois de ler muitos posts em vários tópicos do fórum, fiquei mais confiante na realidade desta tarefa, pois vi muitos comerciantes escrevendo EAs em mql, enquanto permaneciam analfabetos até mesmo em russo.

Mas vejo que nesta linha os especialistas não querem ajudar, mas querem me forçar a aprender a língua. Não como proclamado: "qualquer pergunta...", mas: "não faça perguntas estúpidas". Até mesmo cutucar o nariz para um capítulo de um livro ou referência ou um exemplo onde essa questão é resolvida é indigno dos Grandes Professores.

Acho que você está um pouco enganado - os recém-chegados não vêm aqui para admirá-lo e aplaudir seus conhecimentos.

Você não precisa ser um lutador de karatê para proteger um adolescente dos valentões, você só precisa saber uma coisa ou duas.

ZS: Na verdade, tenho a impressão de que você mesmo para responder à pergunta que precisa procurar em um livro didático, mas não quero ...

E Deus me livre de censurar alguém com qualquer coisa aqui. E obrigado por desperdiçar seu tempo comigo.

 

Eu mesmo tive que me aprofundar na documentação para entender o incompreensível...

A documentação ainda tem o exemplo antigo.

Em geral: se uma função retorna algum valor, então este valor deve ser atribuído a uma variável do tipo correspondente e o valor desta variável deve ser verificado.

É assim:

bool res;

res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40);
if(!res) Print("нихрена ордер не заерылся. Ошибка ", GetLastError());
 
AlexeyVik:

Eu mesmo tive que me aprofundar na documentação para entender o incompreensível...

A documentação ainda tem o exemplo antigo.

Em geral: se uma função retorna algum valor, então este valor deve ser atribuído a uma variável do tipo correspondente e o valor desta variável deve ser verificado.

É assim:

Verifique com mais freqüência. Haverá menos perguntas. Melhor conhecimento estará lá.
 
AlexeyVik:

Eu mesmo tive que me aprofundar na documentação para entender o incompreensível...

A documentação ainda tem o exemplo antigo.

Em geral: se uma função retorna algum valor, então este valor deve ser atribuído a uma variável do tipo correspondente e o valor desta variável deve ser verificado.

É o que parece:

bool res;

res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40);
if(!res) Print("нихрена ордер не заерылся. Ошибка ", GetLastError());

Por que haveria uma variável extra? O controle direto funciona bem:

if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40)) Print("нихрена ордер не заерылся. Ошибка ", GetLastError());
Uma variável deve ser criada quando você quiser ver o valor de uma função de diferentes pontos do programa, para que não tenha que chamá-la várias vezes.
 
evillive:

Por que haveria uma variável extra? O controle direto funciona muito bem:

A variável deve ser criada quando o valor de uma função deve ser visto de diferentes pontos do programa para que não tenha que ser chamada várias vezes.

Oh, meu Deus! Tal debate, e eu sou obrigado a "pensar até o fim"...

Eu corrigi os erros, a compilação dá 0 mensagens de erro, 0 avisos, mas há outro problema (ou melhor, dois): quando eu tenho a primeira oportunidade de abrir uma ordem eles abrem sem parar, até que os fundos se esgotem, e então, quando as condições de fechamento chegam, todos fecham e nenhuma nova ordem abre, embora ordens fechadas acabem dando lucros.

 
rapid_minus:

Oh, meu Deus! Tal debate, e sou obrigado a "chegar ao fundo da questão"...

Eu consertei os erros, a compilação dá 0 mensagens de erro e 0 avisos, mas há outro problema (ou melhor, dois): quando eu tenho a primeira oportunidade de abrir uma ordem eles abrem sem parar até eu ficar sem dinheiro, e então, quando as condições de fechamento chegam, todos fecham e nenhuma nova ordem abre, embora as ordens fechadas acabem dando lucros.

Há várias maneiras de limitar o número de pedidos:

1) por quantidade - contar o número de ordens já abertas e comparar com o número definido pelo usuário, se o número de ordens abertas já foi definido, então não devem ser abertas mais ordens;

2) por tempo - considere o tempo decorrido desde que a última ordem foi aberta, se o tempo decorrido for menor que o especificado, não negocie

3) pela distância em pips do preço de abertura da ordem anterior ao preço de mercado atual (ou preço calculado para ordens pendentes); se a distância for menor, não negocie.

Normalmente são usadas combinações diferentes destas limitações.

 
evillive:

Há várias maneiras de limitar o número de pedidos:

1) por quantidade - contar o número de pedidos já abertos e comparar com o definido pelo usuário, se aberto tanto quanto definido, não abrir mais;

2) por tempo - considere o tempo decorrido desde que a última ordem foi aberta, se o tempo decorrido for menor que o especificado, não negocie

3) pela distância em pips do preço de abertura da ordem anterior ao preço de mercado atual (ou preço calculado para ordens pendentes); se a distância for menor, não negocie.

Normalmente são usadas combinações diferentes destas limitações.

Obrigado, vou tentar definir o número 1
 

O que fazer...

...todos são fechados e nenhuma nova ordem é aberta...
As condições devem ser verificadas para a possibilidade de uma nova sessão de negociação pelo menos uma vez para cada novo bar (na abertura), ou de todo em cada carrapato, dependendo das condições da estratégia.