paranteses desequilibrados - página 2

 

Em qualquer expressão, faça com que seja uma regra terminar o cordel com os elementos da forma primeiro, e só depois escreva o corpo.

Por exemplo, se você usar uma declaração de if, coloque um parêntese de abertura e um parêntese de fechamento. Se você colocar um suporte de abertura encaracolado, coloque um de fechamento abaixo dele. Quando você escreve função, digamos, NormalizeDuplo, coloque (,Dígitos); e depois, antes da vírgula, escreva o que você quer arredondar. Desta forma, você não cometerá erros. E com o tempo seu olho vai se acostumar e você verá imediatamente estes pequenos detalhes. Se eu não conseguir encontrar o erro imediatamente, corto as partes independentes do código e o compenso, o erro provavelmente não está nesta parte (se estiver em dois lugares), então eu o colo de volta. Se alguma função for utilizada e precisar ser verificada, corte seu conteúdo e assim por diante.

 
liana:
Obrigado (eu copiei mal a função de Kim).
Agora eu corrigi - diz "espera-se um parêntese final

deve haver mais um suporte após o retorno (Falso); na última função
 

Tente inicialmente colocar um conjunto de parênteses em uma nova linha, e depois entre o que você precisa neles. E se várias funções estiverem aninhadas em uma "matryoshka", não seja preguiçoso para recuar cada função interna por um par de espaços e então não haverá mais parênteses "ausentes" :)

Function1()
{
  action1;
   Function2()
   {
     action2;
     action3;
   }
}
 

Consertado - ainda há algo errado.
Alguém poderia me escrever como seria correto chamar estas duas funções Kim e, se não houver ordens, abrir uma ordem.

int pending;
int positions;
int ticket;
int magic=576;

int start() { 
//----
   pending = ExistOrders(NULL);
   if(pending >0 ) return(0); // ???? ???????? ????????? ???????? ?????? ????? ?? ???????
   positions = ExistPositions(NULL);
   if(positions >0) {
      return(0);     // ???? ?? ???????? ???? ?????????
   }
   else { // else ????????? ? ?????????? if
      ticket=OrderSend(Symbol(),OP_SELL,0,1,Bid,3,Bid+20*Point,Bid-40*Point,"",magic,0,Red);
     
   }
//----
   return(0);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Exist pending. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal(), ty;
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ty=OrderType();
      if (ty>1 && ty<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (ot<=OrderOpenTime()) return(True);
          }
        }
      }
    }
  }
  return(False);
}

//+----------------------------------------------------------------------------+
//|  Exist open positions. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
  }
 
liana:

Consertado - ainda há algo errado.
Alguém poderia me escrever como seria correto chamar estas duas funções de Kim e se não houver ordens - abrir uma ordem.


Os parâmetros devem ser passados para a função, eles são descritos na descrição da função

ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0)

você deve passar estes parâmetros para a função do usuário ao chamá-la desde o início()

 
valenok2003:


os parâmetros devem ser passados para a função, eles são descritos na descrição da função

você deve passar estes parâmetros para a função do usuário ao chamá-la desde o início() função


Eu não preciso desses parâmetros. Eu só preciso
2. Verificar qualquer posição no símbolo do gráfico atual
ExistPosições(NULL);
Mas como chamar este parâmetro corretamente?

 
liana:


Eu não preciso destes parâmetros. Eu só preciso
2. Para verificar a disponibilidade de qualquer posição no instrumento gráfico atual
ExistPositions(NULL);
Mas como chamar este parâmetro corretamente?

você precisa verificar se há alguma vaga em aberto?
 
liana:


Eu não preciso destes parâmetros. Eu só preciso
2. Verificar qualquer posição no símbolo do gráfico atual
ExistPosições(NULL);
Mas como chamar este parâmetro corretamente?


Chame-o sem parâmetros :

se(!ExistPosições()){// sem posições em aberto

if(!ExistOrders()){// nenhum pendente

 

Não consigo lê-lo, meu MetaEditor não suporta a codificação russa

 
liana:

Eu não posso, MetaEditor não suporta a codificação russa


Pesquise seu tópico: https://www.mql5.com/ru/forum/107476, está tudo aí. A partir da página 10, eu acho.