Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 735

 

Mql5 Jungs, könnt ihr mir helfen, einen Antrag auf Schließung einer Position in einem Hedge-Konto zu stellen? Situation: Wir haben eine BUY-Position eröffnet und müssen sie mit einem Sell Limit schließen. Frage: Wie schreibe ich korrekt eine Anfrage, um genau die gewählte Position zu schließen, und nicht, um neue SELL locking BUY zu eröffnen? Bitte schreiben Sie ein Stück Code mit Kommentaren! Vielen Dank im Voraus!

 

Hallo. Hilfe, bitte.

'LastDir' - illegal switch expression type


double LastDir[];
//............... 
switch(LastDir[i]){
                           case 0:
                              if(High[i]>LastHighValue[i]){
                                 LastHighValue[i]=High[i];
                                 LastHighTime[i]=Time[i];
                                 LastDir[i]=1;  
                                 ZZ[i]=High[i];                            
                                 PEACK[i]=High[i];
                              }   
                           break;                            
                           case 1:
                              if(High[i]>LastHighValue[i]){
                                 int lhb=iBarShift(NULL,0,LastHighTime[i],false);
                                 ZZ[lhb]=0;
                                 PEACK[lhb]=0;
                                 LastHighValue[i]=High[i];
                                 LastHighTime[i]=Time[i];
                                 LastDir[i]=1;  
                                 ZZ[i]=High[i];                            
                                 PEACK[i]=High[i];
                              }                           
                           break;
                           case -1:
                              if(High[i]>=LastLowValue[i]+Point*ZZReverse){
                                 LastHighValue[i]=High[i];
                                 LastHighTime[i]=Time[i];
                                 LastDir[i]=1;  
                                 ZZ[i]=High[i]; 
                                 PEACK[i]=High[i];                            
                              }
                        }
 
bij:

Hallo. Können Sie mir bitte helfen?


Die switch-Anweisung muss vom Typ Integer sein

 
Alekseu Fedotov:

Die switch-Anweisung muss vom Typ Integer sein

Aber"LastDir" ist ein Puffer, er kann nicht int sein.

Wie kommt man aus dieser Situation heraus?

 
bij:

Aber"LastDir" ist ein Puffer, er kann nicht int sein.

Wie kommt man aus dieser Situation heraus?

Schaffen Sieden Schalterbediener ab,

mit dem Operator if() arbeiten

 

Es ist nicht sicher, dass dies mit dem ersten Fall gleichzusetzen ist

                       if(LastDir[i]==0)
 
@Alekseu Fedotov, danke, es funktioniert) Im Jahr 2009hätte der Schalter doppelt sein können)
 
bij:
@Alekseu Fedotov, danke, es funktioniert) Im Jahr 2009hätte der Schalter doppelt sein können)

es war immer nur ein Ganzes )

 
bij:

Hallo. Hilfe, bitte.


Wenn der Puffer nur Integer-Werte enthalten kann, die als Double 0.0, 1.0 und -1.0 dargestellt werden, würde ich diese Option überprüfen

double LastDir[];
//............... 
switch((int) LastDir[i]){
                           case 0:
                              if(High[i]>LastHighValue[i]){
                                 LastHighValue[i]=High[i];
                                 LastHighTime[i]=Time[i];
                                 LastDir[i]=1;  
                                 ZZ[i]=High[i];                            
                                 PEACK[i]=High[i];
                              }   
                           break;                            
                           case 1:
                              if(High[i]>LastHighValue[i]){
                                 int lhb=iBarShift(NULL,0,LastHighTime[i],false);
                                 ZZ[lhb]=0;
                                 PEACK[lhb]=0;
                                 LastHighValue[i]=High[i];
                                 LastHighTime[i]=Time[i];
                                 LastDir[i]=1;  
                                 ZZ[i]=High[i];                            
                                 PEACK[i]=High[i];
                              }                           
                           break;
                           case -1:
                              if(High[i]>=LastLowValue[i]+Point*ZZReverse){
                                 LastHighValue[i]=High[i];
                                 LastHighTime[i]=Time[i];
                                 LastDir[i]=1;  
                                 ZZ[i]=High[i]; 
                                 PEACK[i]=High[i];                            
                              }
                        }
Außerdem würde ich den Fall -1 vor den Fall 0 setzen.
 
Alexey Viktorov:

Wenn der Puffer nur Integer-Werte enthalten kann, die als Double 0.0, 1.0 und -1.0 dargestellt werden, würde ich diese Option überprüfen

Außerdem würde ich den Fall -1 vor den Fall 0 setzen.

Hier sollte wahrscheinlich -1 als Standard gesetzt werden, zumal es keinen Standardfall gibt

Obwohl ... Man muss schon ein Autor sein, um zu wissen, was man besser als Standard einstellen sollte.