Ajuda a encontrar parênteses desequilibrados à esquerda

 

Alguém poderia me ajudar a encontrar este erro de parêntese esquerda desequilibrada.... Eu tentei todas as combinações, mas nunca resolvi....

e também um aviso se todos os casos forem devidamente escritos ....

tentei escrever as 4 cruzes ma e cci acima de 100 ou -100 para comprar e vender ... Obrigado de antemão!

//magic numberの定義
#define MAGIC  4649        

//parameter //
extern double Lots = 1.0;     
extern int Slip = 10;         
extern string Comments =  ""; 

extern int FastMA1_p = 34;
extern int SlowMA1_p = 34;
extern int modeMA1 = MODE_SMA;
extern int modeMA2 = MODE_EMA;
extern int MA1Cross_Timeframe = PERIOD_M15;
extern int FastMA2_p = 68;
extern int SlowMA2_p = 68;
extern int CCI_p = 20;
extern int CCI_Buy_Point = 100;
extern int CCI_Sell_Point = -100;
extern int CCI_Timeframe = PERIOD_M30;
extern int Band_p = 6;
extern int Band_Timeframe = PERIOD_M15;



//変数の設定//
int Ticket_L = 0; 
int Ticket_S = 0; 
int Exit_L = 0;  
int Exit_S = 0;   


int start()
  {
  
  
  
    double MAFast1 = iMA(NULL, MA1Cross_Timeframe, FastMA1_p, 0, modeMA2, PRICE_CLOSE, 0);
    double MAFast2 = iMA(NULL, MA1Cross_Timeframe, FastMA1_p, 0, modeMA2, PRICE_CLOSE, 1);
    double MASlow1 = iMA(NULL, MA1Cross_Timeframe, SlowMA1_p, 0, modeMA1, PRICE_CLOSE, 0);
    double MASlow2 = iMA(NULL, MA1Cross_Timeframe, SlowMA1_p, 0, modeMA1, PRICE_CLOSE, 1);
    
    double MAFast3 = iMA(NULL, MA1Cross_Timeframe, FastMA2_p, 0, modeMA2, PRICE_CLOSE, 0);
    double MAFast4 = iMA(NULL, MA1Cross_Timeframe, FastMA2_p, 0, modeMA2, PRICE_CLOSE, 1);
    double MASlow3 = iMA(NULL, MA1Cross_Timeframe, SlowMA2_p, 0, modeMA1, PRICE_CLOSE, 0);
    double MASlow4 = iMA(NULL, MA1Cross_Timeframe, SlowMA2_p, 0, modeMA1, PRICE_CLOSE, 1);
     
     
    double cci1 = iCCI(NULL, CCI_Timeframe, CCI_p, PRICE_CLOSE, 0);
    double cci2 = iCCI(NULL, CCI_Timeframe, CCI_p, PRICE_CLOSE, 1);
    double cci3 = iCCI(NULL, CCI_Timeframe, CCI_p, PRICE_CLOSE, 2);
    
   double bands_upper1 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double bands_upper2 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_UPPER, 2);
   double bands_lower1 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_LOWER, 1);
   double bands_lower2 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_LOWER, 2);
    
     
   //Buy exit
   if(   Close[2]>= bands_upper2 && Close[0] <bands_upper1
       && ( Ticket_L != 0 && Ticket_L != -1 ))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    
    
   //Sell exit 
   if(    Close[2] <= bands_lower2 && Close[0] > bands_lower1
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   
    
   //  Buy entry
   if(    ( MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
    
    else if  (MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
   
    else if  (  MAFast2 <= MASlow2 && MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
   
    else  (MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
   
       && ( Ticket_L == 0 || Ticket_L == -1 ) 
       && ( Ticket_S == 0 || Ticket_S == -1 ))
    {  
      Ticket_L = (OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
    }
    
   // Sell entry 
   if(  (MAFast1 < MASlow1 && MAFast4 >= MASlow4 && MAFast3 < MASlow3 cci3 > CCI_Sell_Point && cci2 >= CCI_Sell_Point && cci1 < CCI_Sell_Point)
   
   else if  (  MAFast1 < MASlow1 && MAFast4 >= MASlow4 && MAFast3 < MASlow3 && cci1 < CCI_Sell_Point )
   
  else if (MAFast2 >= MASlow2 && MAFast1 < MASlow1  &&  MAFast3 < MASlow3 && cci1 < CCI_Sell_Point)
   
  else  ( MAFast1 < MASlow1 &&  MAFast3 < MASlow3 && cci3 > CCI_Sell_Point && cci2 >= CCI_Sell_Point && cci1 < CCI_Sell_Point )
       && ( Ticket_S == 0 || Ticket_S == -1 )
      
       && ( Ticket_L == 0 || Ticket_L == -1 ))
    {   
      Ticket_S = (OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue);     
    } 
    
     
   return(0);
  }












 
      Ticket_S = (OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue);    
 
A linha mostra três braçadeiras de abertura, mas apenas duas de fechamento
 
   //  Buy entry
if(( MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
else if  (MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
else if  (  MAFast2 <= MASlow2 && MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
else  (MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
&& ( Ticket_L == 0 || Ticket_L == -1 ) 
&& ( Ticket_S == 0 || Ticket_S == -1 ))
    {  
      Ticket_L = (OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
    }

verifique o mish mash acima, que é onde está o problema.

esse monte de, se não for o caso, se o absurdo precisa ser reescrito inteiramente.

Tenha em mente que o que estamos fazendo aqui é que estamos escrevendo uma aplicação comercial.

uma aplicação comercial que precisa funcionar de forma ininterrupta e que precisa funcionar de uma forma crítica.

não estamos tentando ser bonitinhos.

não estamos tentando ser bonitinhos.

não estamos tentando chicotear um aplicativo java ou um aplicativo flash em trinta minutos ou menos.

não queremos fantasia, queremos lucro.

quebrar esse código para que ele seja facilmente legível.

zero/.

 

Obrigado por responder tão rapidamente. Tenho problemas para entender a diferença entre If else e |||

qual é a diferença ao escrever várias condições... Preciso usar se não for possível ou basta usar || .... Não entendo de forma alguma a diferença entre if else e || ...(-...-)

 

em vez de fazer isso:

if(x>y && y<r && p<=t) run();

talvez fazer algo como isto:

flag=1;

if(x<==y) flag=0;

if(y>==r) flag=0;

if(p>t)flag=0;

if(flag===1) execute();

veja o que eu quero dizer?

é muito mais fácil de seguir, o meu exemplo acima foi escrito rapidamente.

sempre escreva seu código comercial para que um idiota absoluto possa seguir a lógica do mesmo.

Caso contrário, talvez você não entenda totalmente seu código e então ele não fará o que você estava querendo que ele fizesse.

entende o que quero dizer?

e, há até outras maneiras de fazer o que estou falando.

se você tiver outras perguntas, ou se você realmente quiser que eu o ajude a simplificar o seu código acima, basta perguntar.

zero/.

Vídeo: Kid Rock - American Badass

 
if( MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
{}
else if  (MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
{}
else if  (  MAFast2 <= MASlow2 && MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
{}
else
//  (MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
/*
&& ( Ticket_L == 0 || Ticket_L == -1 ) 
&& ( Ticket_S == 0 || Ticket_S == -1 ))
*/
    {  
      Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
    }

há alguns erros realmente graves em seu código.

vamos ver se podemos resolvê-los E, no processo, vamos orientá-lo sobre como deve funcionar...

repare nos suportes encaracolados{} que eu inseri após a primeira, segunda e terceira linhas.

que você estava fazendo isso:

se(...)

caso contrário, se(...)

senão(...)

&& o que quer que seja

{}

que simplesmente não faz sentido.

se e se e se funciona assim:

if(comparação) {do isto}

senão se (comparar) {do isto}

senão {do isto}

me avise se precisar de mais ajuda.

zero/.

 
smoknfx:

em vez de fazer isso:

if(x>y && y<r && p<=t) run();

talvez fazer algo como isto:

flag=1;

if(x<==y) flag=0;

if(y>==r) flag=0;

if(p>t)flag=0;

if(flag===1) execute();

veja o que eu quero dizer?

é muito mais fácil de seguir, o meu exemplo acima foi escrito rapidamente.

sempre escreva seu código comercial para que um idiota absoluto possa seguir a lógica do mesmo.

Caso contrário, talvez você não entenda totalmente seu código e então ele não fará o que você estava querendo que ele fizesse.

entende o que quero dizer?

e, há até outras maneiras de fazer o que estou falando.

se você tem outras perguntas, ou se você realmente quer que eu o ajude a simplificar o seu código acima, basta perguntar.

zero/.

Vídeo: Kid Rock - American Badass


Obrigado por ajudar... na verdade, sou completamente novo na codificação e não entendo o que você escreveu acima... Sei que há muitas maneiras de escrever a mesma codificação ///

As pessoas que são usadas podem escrever o que eu quero escrever em 3 linhas enquanto eu escrevo 30.... Eu sei que é preciso esforço para poder escrever .... Bem, sim, eu apreciaria se pudesse me ajudar, mas comece de onde você sabe (-...-;)

Ainda sou um peixinho nadando no grande oceano e não conheço a dimensão do oceano ........ O que eu quero dizer é im lost....... Você poderia me explicar como simplesmente evitar 10 milhões de linhas, se não for necessário... Eu quero usar 4 cruzes CCI e faixas Bolinger para sair como você

pode ver com a fonte acima.... Bem, obrigado de qualquer forma. Cordiais cumprimentos.

 

Thanks i will try to understand....... SEE what i m doing coz it seems that i do not know what i m doing myself

 

Ok, tudo bem, eu não sabia que você era um iniciante.

Vamos então ir devagar.

a coisa mais básica que você pode fazer é isto:

if(
MAFast1 > MASlow1 && 
MAFast4 <= MASlow4 && 
MAFast3 > MASlow3 && 
cci3 < CCI_Buy_Point && 
cci2 <= CCI_Buy_Point && 
cci1 > CCI_Buy_Point )
    {  
      Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
    }

muito básico...

você percebe que && significa E, certo?

se você diz isto em código: if(x===1 && y===1) {dothis();}

você está realmente dizendo isto: if(x igual a 1 e y igual a 1) {dothis();}

me avise quando você estiver comigo até agora, ou me avise quando ficar confuso e eu o colocarei de volta no caminho certo.

SE VOCÊ É UM INICIANTE, FAÇA AS COISAS DE UMA MANEIRA MUITO BÁSICA. NÃO COMPLIQUE DEMAIS AS COISAS... MANTENHA AS COISAS SIMPLES...

 
smoknfx:

Ok, tudo bem, eu não sabia que você era um iniciante.

Vamos então ir devagar.

a coisa mais básica que você pode fazer é isto:

muito básico...

você percebe que && significa E, certo?

se você diz isto em código: if(x===1 && y===1) {dothis();}

você está realmente dizendo isto: if(x igual a 1 e y igual a 1) {dothis();}

me avise quando você estiver comigo até agora, ou me avise quando ficar confuso e eu o colocarei de volta no caminho certo.


Obrigado por me ensinarem. Sim, até agora entendo o que você quer dizer. Há 4 cruzamentos MAs e condições CCI a serem completadas antes de entrar. No entanto, há casos em que estes indicadores completam suas condições em diferentes momentos certos.

Por exemplo, os AG rápidos cruzam-se primeiro e depois os AG lentos e depois os CCI... ou CCI primeiro e depois os AG rápidos e os AG lentos . Ou os AGs Lentos primeiro, depois os AGs Rápidos primeiro e depois os CCI por último .... Preciso codificar todos os casos se quiser que minha EA entre em todos os casos...

Eu codifiquei todos os casos observando a primeira fonte que copiei no primeiro comentário ou eles são apenas não-sentidos... Aqui eu o escrevi com ||| em vez de If else.... Isso faz sentido... ainda diz Parênteses desequilibrados à esquerda, no entanto,.....

//マジックナンバーの定義
#define MAGIC  4649        

// parameter
extern double Lots = 1.0;     //取引ロット数
extern int Slip = 10;         //許容スリッページ数
extern string Comments =  ""; //コメント

extern int FastMA1_p = 34;
extern int SlowMA1_p = 34;
extern int modeMA1 = MODE_SMA;
extern int modeMA2 = MODE_EMA;
extern int MA1Cross_Timeframe = PERIOD_M15;
extern int FastMA2_p = 68;
extern int SlowMA2_p = 68;
extern int CCI_p = 20;
extern int CCI_Buy_Point = 100;
extern int CCI_Sell_Point = -100;
extern int CCI_Timeframe = PERIOD_M30;
extern int Band_p = 6;
extern int Band_Timeframe = PERIOD_M15;



//variables//
int Ticket_L = 0; 
int Ticket_S = 0; 
int Exit_L = 0;   
int Exit_S = 0;   


int start()
  {
  
  
  
    double MAFast1 = iMA(NULL, MA1Cross_Timeframe, FastMA1_p, 0, modeMA2, PRICE_CLOSE, 0);
    double MAFast2 = iMA(NULL, MA1Cross_Timeframe, FastMA1_p, 0, modeMA2, PRICE_CLOSE, 1);
    double MASlow1 = iMA(NULL, MA1Cross_Timeframe, SlowMA1_p, 0, modeMA1, PRICE_CLOSE, 0);
    double MASlow2 = iMA(NULL, MA1Cross_Timeframe, SlowMA1_p, 0, modeMA1, PRICE_CLOSE, 1);
    
    double MAFast3 = iMA(NULL, MA1Cross_Timeframe, FastMA2_p, 0, modeMA2, PRICE_CLOSE, 0);
    double MAFast4 = iMA(NULL, MA1Cross_Timeframe, FastMA2_p, 0, modeMA2, PRICE_CLOSE, 1);
    double MASlow3 = iMA(NULL, MA1Cross_Timeframe, SlowMA2_p, 0, modeMA1, PRICE_CLOSE, 0);
    double MASlow4 = iMA(NULL, MA1Cross_Timeframe, SlowMA2_p, 0, modeMA1, PRICE_CLOSE, 1);
     
     
    double cci1 = iCCI(NULL, CCI_Timeframe, CCI_p, PRICE_CLOSE, 0);
    double cci2 = iCCI(NULL, CCI_Timeframe, CCI_p, PRICE_CLOSE, 1);
    double cci3 = iCCI(NULL, CCI_Timeframe, CCI_p, PRICE_CLOSE, 2);
    
   double bands_upper1 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double bands_upper2 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_UPPER, 2);
   double bands_lower1 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_LOWER, 1);
   double bands_lower2 = iBands(NULL, Band_Timeframe, Band_p,1, 0, PRICE_CLOSE, MODE_LOWER, 2);
    
     
   //韮uy exit
   if(   Close[2]>= bands_upper2 && Close[0] <bands_upper1
       && ( Ticket_L != 0 && Ticket_L != -1 ))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    
    
   //Sell exit
   if(    Close[2] <= bands_lower2 && Close[0] > bands_lower1
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   
    
   // buy entrt
   if(    ( MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )//fast MA first, slow MA and cci later.
    || (MAFast1 > MASlow1 && MAFast4 <= MASlow4 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
    || ( ( MAFast2 <= MASlow2 && MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci1 > CCI_Buy_Point )
    || (MAFast1 > MASlow1 && MAFast3 > MASlow3 && cci3 < CCI_Buy_Point && cci2 <= CCI_Buy_Point && cci1 > CCI_Buy_Point )
   
       && ( Ticket_L == 0 || Ticket_L == -1 ) 
       && ( Ticket_S == 0 || Ticket_S == -1 ))
    {  
      Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
    }
    
   //sell entry
   if(  (MAFast1 < MASlow1 && MAFast4 >= MASlow4 && MAFast3 < MASlow3 cci3 > CCI_Sell_Point && cci2 >= CCI_Sell_Point && cci1 < CCI_Sell_Point)
   || (  MAFast1 < MASlow1 && MAFast4 >= MASlow4 && MAFast3 < MASlow3 && cci1 < CCI_Sell_Point )
      
       ||( MAFast2 >= MASlow2 && MAFast1 < MASlow1  &&  MAFast3 < MASlow3 && cci1 < CCI_Sell_Point)
       ||( MAFast1 < MASlow1 &&  MAFast3 < MASlow3 && cci3 > CCI_Sell_Point && cci2 >= CCI_Sell_Point && cci1 < CCI_Sell_Point )
       && ( Ticket_S == 0 || Ticket_S == -1 )
      
       && ( Ticket_L == 0 || Ticket_L == -1 ))
    {   
      Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue);     
    } 
    
     
   return(0);
  }












Razão: