[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 580

 
Desead:


O deinit é chamado quando eu apago o robô do gráfico - não consigo rastrear esta condição de outra forma..... , é provavelmente mais fácil escrever um roteiro separado que apague todo o restante pendente.

A propósito, outro pensamento sobre este assunto:

Pareço ter resolvido o problema da eliminação de pedidos. Calculei o número de ordens "necessárias" (a serem removidas) em uma função separada, chamada esta função e depois, enquanto com uma condição (Total>0), então o ciclo de remoção para(int i=Total-1;i<=0l; i--), novamente calculando o número deordens"necessárias", contador de tentativas de remoção com uma saída deenquanto quando o nível dado é alcançado. Desta forma, tudo é apagado.

Um loop infinito pode ocorrer aqui no caso de uma das ordens desaparecer após o momento da contagem, por qualquer motivo.


A contagem do pedido é feita toda vez que após o laço para a exclusão de um pedido, o contador faz iteração enquanto com a saída do laço porquebra, quando o contador atinge o valor definido na variável externa, você pode adicionar manipulação de erro antes da saída e emitir o resultado com
Alerta(...)
ou
Imprimir( ...)
E como alguém me aconselhou a acrescentar um cheque para resolução comercial. Portanto, não há como fazer um loop aqui.


 
Dimka-novitsek:

Bom dia!!! Não é possível encontrar uma solução bonita para a situação. Aqui está uma configuração típica de ordem. Mas se eu der zero ao meu robô em parâmetros, ou seja, sem paradas e takeprofits, nada vai funcionar.

Também podemos definir um "se" e inserir um pedido com zeros pela segunda vez, mas isso é um pouco incômodo.

Tudo está maduro - no nível da arte!!! ;)

E a sério - aprenda a pensar sobre o que você acabou de escrever. A valores zero de STOPPs de acordo com sua fórmula stoploss e take profit são iguais ao preço de abertura de um pedido, o que é IMPOSSÍVEL. Você tem outras soluções (você pode usar seu cérebro???? :)?

 
Dimka-novitsek:

Bom dia!!! Não consigo encontrar uma boa solução para a situação. Aqui está uma configuração típica de ordem. Mas se eu der zero ao meu robô em parâmetros, ou seja, sem paradas e takeprofits, nada vai funcionar.

Também podemos definir um "se" e inserir um pedido com zeros pela segunda vez, mas isso é um pouco incômodo.



if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; 
 
rigonich:


...você está errado (você não deu uma chance ao homem): se um homem não estimular sua matéria cinzenta, ele passará toda sua vida "no alpendre" - "Dê-me uma dica, pelo amor de Deus! :)))
 
BeerGod:

Desta forma, ele seleciona as ordens de acordo com determinados parâmetros.

por exemplo, https://www.mql5.com/ru/forum/131859/page3#434221

Função NúmeroOfPosições().

Esta função retorna o número de posições em aberto no momento. Uma seleção mais precisa das posições a serem contadas é especificada por parâmetros externos:

  • sy - Nome do instrumento de mercado. Se este parâmetro for definido, a função considerará apenas as posições do instrumento especificado. O valor padrão "" significa qualquer instrumento de mercado. NULL significa o instrumento atual.
  • op - Operação comercial, tipo de posição. Valores válidos: OP_BUY, OP_SELL ou -1. O valor padrão de -1 significa qualquer posição.
  • mn - Identificador de posição, MagicNumber. O valor padrão de -1 significa qualquer identificador.


olhado para

Função ModifyOrder(). https://forum.mql4.com/ru/38949#434195

há 3 parâmetros que precisam ser inseridos. Dois eu adivinhei, o terceiro eu não adivinhei.

O que é UseSound na próxima linha?

----------------------------------------------------

se (UseSound) PlaySound("alert.wav"); break;

 
lottamer:


Deixe funcionar - eu tenho uma posição e uma ferramenta.

Mas não funciona!

Diz que há um erro no código

a isto.

---------------------------

int start()

{

//----

se EncomendasTotal()>0

PlaySound ("alert.wav");

//----

retorno(0);

}

-----------------------------

desiste de 8 erros!!!


Colocar a condição (aquela após o "se") entre parênteses
 
TarasBY:

Você tem tudo amadurecido - a um nível de arte!!! ;)

E a sério - aprenda a pensar sobre o que você acabou de escrever. Se estabelecermos zero STOPPs de acordo com sua fórmula, parar as perdas e ter lucro são iguais ao preço de abertura de um pedido, o que é INACCEITÁVEL. Você tem outras soluções (você pode usar seu cérebro???? :)?


)) oops, posso também esclarecer o seguinte ponto em "pan-europeu"?

qual é a diferença entre funções start e void?

 
TarasBY:

...você está errado: se a matéria cinzenta de uma pessoa não for estimulada, ela passará toda sua vida "na varanda" - "Ajudem-me, pelo amor de Deus"! :)))


Você provavelmente está certo, mas é a minha filosofia de vida - se não for muito trabalho, ajude os outros e eles o ajudarão quando você precisar. Aos 55 anos, é difícil mudar os hábitos.

P.S. É assim também que eu aprendo.

 
lottamer:


)) oops, posso também esclarecer o seguinte ponto em "pananâmico"?

qual é a diferença entre funções start e void ?

Você deu um golpe em algo que ainda ninguém conseguiu: "RAPPING THE FINGER WITH THEHUGE HEAD TO WHICH STARTED" !!!! :)))

a primeira é uma função e a segunda é o tipo de valor que ela retorna.

P.S. Seja paciente e leia-o.

 
Obrigado!!!!