[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 544

 
paladin80:

Decidiu bisbilhotar um pouco em seu código...


Estou muito grato a você por analisar meu código. Obrigado por dedicar seu tempo a isso.

Estou apenas começando a aprender programação, portanto estes comentários são muito importantes e serão úteis no futuro.

Agora vamos ao que interessa:

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {   if(OrderSymbol() != Symb) continue;
          if(OrderMagicNumber() != 777) continue;
          return;
      }
   }
}

Realmente, a busca completa dos pedidos é feita nesta forma, e uma análise mais detalhada é feita usando pedidos em aberto (tudo está claro aqui)

Symb=  Symbol();
...
Min_Lot= MarketInfo(Symbol(),MODE_MINLOT);
...
Steep=   MarketInfo(Symbol(),MODE_LOTSTEP);

Esta parte do código também é alterada, mas os participantes do fórum escrevem que o ambiente de mercado nem sempre está disponível para a função init().

Algumas variáveis podem não estar definidas ou eu tenho algo errado?

Não entendo a lógica deste posto - (estou explicando minha opinião sobre este operador)

while(true)
...

Eu tenho um bloco de tratamento de erros.

if (Fun_Error(GetLastError())==1)      // Обработка ошибок
continue;                              // Повторная попытка

Se o erro estiver correto, tentamos novamente verificar as condições e abrir o pedido.

E enquanto o operador trabalha quando seu valor é verdadeiro, ou seja, acontece que ele não aceita falso.

Obrigado por sua ajuda.

 
silhouette:

Por favor, ajude!


Leia aqui:https://www.mql5.com/ru/articles/1357 É simples e direto

 
r772ra:


Leia aqui:https://www.mql5.com/ru/articles/1357 É simples e direto

Obrigado!
 
Bom dia, por favor, ajude-me, não posso ajustar meu Consultor Especialista (as ordens de abertura e fechamento não funcionam como esperado (atravessando estocástico toda vez), abrem estocástico muito raramente e não consigo entender porque ((((), também todas as ordens são fechadas apenas no stoploss ou takeprofit (número do bilhete de erro, também não consigo entender onde o erro ocorreu). obrigado por qualquer resposta:
Arquivos anexados:
 
Vinin:
Só não esqueça que o ambiente de mercado nem sempre está disponível no init()
Francamente falando, eu fiquei muito intrigado com esta notícia. Tentei imaginar sob quais condições o ambiente do mercado pode não estar disponível: talvez uma falha na conexão no momento de habilitar a EA ou se você executar a EA no sábado ou no domingo. Eu não notei tais problemas com o meu. Por um lado, eles dizem que é possível entrar no init() para encontrar um valor, mas eu aprendi que o init() é limitado no tempo. Talvez no início do início() ao aparecimento de uma nova barra (pelo menos na M1) para encontrar valores do ambiente do mercado, é melhor do que em cada carrapato.
 
Pacman:


Estou muito grato a vocês por analisarem meu código. Obrigado por dedicar seu tempo para fazer isso.

...

E a declaração de enquanto funciona quando seu valor é verdadeiro, ou seja, acontece que ela não leva a falsidade.

Enquanto você deve colocar uma condição que possa ter pelo menos dois valores, por exemplo, bandeira (verdadeira ou falsa). Se o código deve conter uma constante (verdadeira) ao invés de uma condição, enquanto é inútil. Remova enquanto (true) e parênteses e você obterá o mesmo resultado.
 
Pergunta para os conhecedores. Na ajuda OrderSend(), o deslizamento é de 3. É para citações de 4 dígitos, por exemplo? Para citações de 5 dígitos, podemos deixar 3 ou precisamos de 30?
 
paladin80:
Pergunta para Consultores Especialistas. O OrderSend() no lugar do slippage é 3. É, por exemplo, para citações de 4 dígitos? Para citações de 5 dígitos, posso deixar 3 ou preciso de 30?

Para os de 5 dígitos você precisa de 30.

Eu inseri tal construção no init() de cada EA, então não faz diferença para 4 ou 5 dígitos DT, eu o recomendo:

  if (Digits==3 || Digits==5){myPoint=Point*10; slpg=slpg*10;}
  else myPoint=Point; 
 
quem sabe se a velocidade de teste pode ser aumentada?
 

Boa tarde. Você pode me aconselhar - a tarefa é traçar linhas verticais a cada minuto. Como vincular o desenho não apenas à ata, mas ao preço de abertura da ata. A dificuldade é que o preço de abertura do minuto deve ser identificado em tempo não-padrão, ou seja, não um minuto. Eu escrevi um trecho de código, mas não entendo como inserir o preço de abertura do minuto, se a variável induzida será definida para um tempo não-padrão

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max;

...e depois o desenho padrão usando objetos.

Talvez alguém possa me dizer o que, se algo, pode ser feito.