Hilfe bei der Suche nach unsymmetrischen linken Klammern

 

Könnte mir jemand helfen, diesen Fehler zu finden Unbalancierte linke Klammer.... ich habe alle Kombinationen ausprobiert, aber es löst sich nie....

und auch ein Rat, wenn alle Fälle sind richtig geschrieben ....

Ich habe versucht, die 4 ma Kreuze und cci über 100 oder -100 zu kaufen und verkaufen zu schreiben ... Vielen Dank im Voraus!

//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);    
 
Die Zeile zeigt drei öffnende, aber nur zwei schließende Klammern
 
   //  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);
    }

Prüfen Sie den obigen Mischmasch, darin liegt das Problem.

Dieser Haufen "if else if else"-Quatsch muss komplett neu geschrieben werden.

Vergessen Sie nicht, dass wir hier eine Handelsanwendung schreiben.

Eine Handelsanwendung, die ohne Unterbrechung laufen muss, und zwar in einer geschäftskritischen Art und Weise.

Wir versuchen nicht, nett zu sein.

Wir versuchen nicht, schick zu sein.

Wir wollen nicht in dreißig Minuten oder weniger eine Java- oder Flash-Anwendung auf die Beine stellen.

Wir wollen nichts Ausgefallenes, wir wollen Profit.

brechen sie den code so auf, dass er leicht lesbar ist.

null/.

 

Danke, dass Sie so schnell geantwortet haben. Ich habe Probleme, den Unterschied zwischen If else und || zu verstehen.

was ist der Unterschied, wenn ich mehrere Bedingungen schreibe... Muss ich if else verwenden oder ist es ok, einfach || .... zu verwenden? Ich verstehe überhaupt nicht den Unterschied zwischen if else und || ...(-..-)

 

anstatt dies zu tun:

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

vielleicht so etwas wie dies:

flag=1;

if(x<=y) flag=0;

if(y>=r) flag=0;

wenn(p>t)flag=0;

if(flag==1) run();

Sehen Sie, was ich meine?

es ist viel einfacher zu folgen, obwohl mein Beispiel oben schnell geschrieben wurde.

Schreiben Sie Ihren Handelscode immer so, dass ein absoluter Idiot die Logik nachvollziehen kann.

Andernfalls verstehst du deinen Code vielleicht nicht ganz, und er tut dann nicht das, was du eigentlich wolltest.

Sehen Sie, was ich meine?

Und es gibt sogar noch andere Möglichkeiten, das zu tun, wovon ich spreche.

wenn du weitere fragen hast oder wenn du wirklich möchtest, dass ich dir helfe, deinen obigen code zu vereinfachen, frag einfach.

null/.

Video: 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);
    }

Ihr Code enthält einige wirklich schwerwiegende Fehler.

Mal sehen, ob wir sie ausmerzen können UND dabei werden wir dir beibringen, wie es funktionieren sollte...

Beachten Sie die geschweiften Klammern{}, die ich nach der ersten, zweiten und dritten Zeile eingefügt habe...

Du hast dies getan:

if(...)

else if(...)

else(..)

&& was auch immer was auch immer

{}

das macht einfach keinen Sinn.

if und else if und else funktioniert wie folgt:

if(Vergleich) {das tun}

else if(Vergleich) {das tun}

else {tue dies}

Lassen Sie es mich wissen, wenn Sie weitere Hilfe benötigen.

null/.

 
smoknfx:

anstatt dies zu tun:

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

vielleicht so etwas wie dies:

flag=1;

if(x<=y) flag=0;

if(y>=r) flag=0;

wenn(p>t)flag=0;

if(flag==1) run();

Sehen Sie, was ich meine?

es ist viel einfacher zu folgen, auch wenn mein obiges Beispiel schnell geschrieben war.

Schreiben Sie Ihren Handelscode immer so, dass ein absoluter Idiot die Logik nachvollziehen kann.

Andernfalls verstehst du deinen Code vielleicht nicht ganz, und er tut dann nicht das, was du eigentlich wolltest.

Sehen Sie, was ich meine?

Und es gibt sogar noch andere Möglichkeiten, das zu tun, wovon ich spreche.

wenn du weitere fragen hast oder wenn du wirklich möchtest, dass ich dir helfe, deinen obigen code zu vereinfachen, frag einfach.

null/.

Video: Kid Rock - American Badass


Danke für die Hilfe ... in der Tat bin ich komplett neu in der Codierung und ich verstehe nicht, was Sie oben geschrieben haben... Ich weiß, dass es viele Möglichkeiten gibt, die gleiche Kodierung zu schreiben ///

Leute, die daran gewöhnt sind, können schreiben, was ich in 3 Zeilen schreiben will, während ich 30.... schreibe. Ich weiß, dass man sich Mühe geben muss, um .... schreiben zu können. Nun ja, ich würde es zu schätzen wissen, wenn du mir helfen könntest, aber fang da an, wo du weißt (-..-;)

Ich bin immer noch ein kleiner Fisch, der in einem großen Ozean schwimmt und die Dimensionen des Ozeans nicht kennt ........ Was ich meine ist, dass ich verloren....... Könnten Sie mir erklären, wie ich einfach 10 Millionen Zeilen vermeiden kann, wenn ich sie nicht benötige... Ich möchte 4 ma kreuzt CCI und Bolinger Bands zu beenden, wie Sie sehen können mit der obigen Quelle

können mit der obigen Quelle sehen.... Nun, danke in irgendeiner Weise. Mit freundlichen Grüßen.

 

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, gut, ich wusste nicht, dass du ein Anfänger bist.

Dann lass es uns langsam angehen.

Das Einfachste, was du tun kannst, ist dies:

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);
    }

sehr grundlegend ...

dir ist schon klar, dass && UND bedeutet, oder?

wenn du das im code sagst: if(x==1 && y==1) {dothis();}

heißt das in Wirklichkeit: if(x ist gleich 1 und y ist gleich 1) {dothis();}

lass mich wissen, wenn du so weit bist, oder lass mich wissen, wenn du verwirrt bist, und ich bringe dich wieder auf den richtigen Weg.

WENN DU EIN ANFÄNGER BIST, MACH DIE DINGE AUF EINE SEHR EINFACHE WEISE... VERKOMPLIZIEREN SIE DIE DINGE NICHT ZU SEHR... HALTE ES EINFACH...

 
smoknfx:

OK, gut, ich wusste nicht, dass du ein Anfänger bist.

Dann lass es uns langsam angehen.

Das Grundlegendste, was du tun kannst, ist dies:

sehr grundlegend ...

dir ist schon klar, dass && UND bedeutet, oder?

wenn du das im code sagst: if(x==1 && y==1) {dothis();}

heißt das in Wirklichkeit: if(x ist gleich 1 und y ist gleich 1) {dothis();}

Lassen Sie mich wissen, wenn Sie mit mir so weit sind, oder lassen Sie mich wissen, wenn Sie verwirrt sind, und ich werde Sie wieder auf den richtigen Weg bringen.


Danke, dass Sie mich belehrt haben. Ja, bis jetzt sehe ich, was Sie meinen. Es gibt 4 MAs Kreuze und CCI Bedingungen vor der Eingabe abgeschlossen werden. Allerdings gibt es Fälle, in denen diese Indikatoren ihre Bedingungen in verschiedenen Timing Recht abzuschließen...

Zum Beispiel kreuzen sich die Fast MAs zuerst und dann die Slow MAs und dann der CCI... oder der CCI zuerst und dann die Fast MAs und die Slow MAs . Oder zuerst die Slow MAs, dann die Fast MAs und zuletzt der CCI .... Ich muss alle Fälle codieren, wenn ich möchte, dass mein EA in jedem Fall eintritt...

Habe ich Code alle Fälle durch die Beobachtung der ersten Quelle, die ich kopiert auf den ersten Kommentar oder sind sie einfach keinen Sinn... Hier habe ich es mit || anstelle von If else.... geschrieben. Macht das Sinn... es steht immer noch Unbalanced left parenthesis though,,.....

//マジックナンバーの定義
#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);
  }












Grund der Beschwerde: