Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 24

 
Bitte sagen Sie mir, dass ich eine Funktion innerhalb einer anderen verwende. In outer deklariere ich eine Variable. Im internen Bereich verwende ich es. Hier ist über
  string PositionSymboll = "";
   if  (PositionSymboll=PositionGetSymbol(i)){//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней
    if (PositionGetInteger(POSITION_MAGIC)== MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
              { BU_();}}

Etc. Es flucht wie folgt: 'PositionSymboll' - nicht deklarierter Bezeichner Redo.mq5 2472 5

Ich habe ehrlich gesagt nicht erwartet, dass es hier einen Haken gibt. Wenn ich es innerhalb der BU_()-Funktion, die ich verwende, kapsle, wird das Pyrimen "null". Was sollte ich besser machen?

Es wäre sehr gut, wenn ich sie innerhalb der ersten Funktion, innerhalb der if-Schleife, deklarieren würde.

 
Und selbst wenn man es innerhalb der Funktion void OnTick() deklariert, schwört der Compiler dasselbe, schon bei der ersten Funktion! Ich bin raus, ich bin raus...
 
Dimka-novitsek:
Und selbst wenn man es innerhalb der void OnTick() Funktion deklariert, beschwert sich der Compiler immer noch auf die gleiche Weise, schon bei der ersten Funktion! Ich passe, bin gerade rausgefallen...
void OnStart()
  {
   int i=0; long MAGIC=1234;
   
   string PositionSymboll="";
   if(PositionSymboll=PositionGetSymbol(i))
     {//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней
      if(PositionGetInteger(POSITION_MAGIC)==MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
        { BU_();}
     }
  }
void  BU_(){} 

kompiliert normal, aber das Konstrukt

string PositionSymboll="";
   if(PositionSymboll)

fraglich, sind Sie für true/false String-Variable ????????? ich bin verwirrt überprüfen

Die Frage ist rhetorisch.

 
Ich danke Ihnen!!! Ich bin immer noch nur lernen, dies ist mein erster EA in MQL5. Was meinen Sie mit rhetorisch?
 
Dimka-novitsek:
Danke!!! Ich lerne gerade, dies ist mein erster EA in MQL5. Was meinen Sie mit rhetorisch?

Das bedeutet, dass keine Antwort verlangt wird.

Eine Variable vom Typ String, die als Ausdruck in einer if-Anweisung übergeben wird, ergibt nur in einem Fall false, wenn die Variable nicht initialisiert wurde.

In allen anderen Fällen wird der Variableninhalt wahr ausgegeben.

 
Ich danke Ihnen!!!
 

Könnten Sie mir bitte sagen, ob es eine Funktion gibt, die "true" zurückgibt, wenn es einen schwebenden Auftrag zu dem Preis gibt, der an die Funktion gesendet wurde. Es wird jedoch "kahl" zurückgegeben (abwechselnd wahr/falsch). Bitte teilen Sie mir mit, wo ich die Logik der Arbeit mit Aufträgen in mql5 vermisse? (lernt gerade).


bool OrderExist(double price)                                                                      // функция возвращает наличие ордера на передаваемой цене
{
         
uint total=OrdersTotal();
ulong    ticket;

for(uint i=0;i<total;i++)
   {
   if((ticket=OrderGetTicket(i))>0)      
      {
      if(NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN),4)== price)
         {
         return(true);
         }
      }
   }
return(false);
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
DMXX:

Es gibt eine Funktion, die "true" zurückgeben sollte, wenn es eine ausstehende Order zu dem Preis gibt, den ich an die Funktion gesendet habe. Es wird jedoch ein kahler Wert zurückgegeben (abwechselnd wahr/falsch). Bitte teilen Sie mir mit, wo ich die Logik der Arbeit mit Aufträgen in mql5 vermisse? (lernt gerade).

Aber es ist nicht sicher, dass der Auftrag zum gegebenen Preis eröffnet wurde, es könnte einen Schlupf gegeben haben, also erhalte ich folgendes: wenn der Auftrag rechtzeitig eröffnet wurde - wahr, wenn nicht (der Preis hat sich verschoben) - falsch.

 
fyords:
Aber es ist nicht die Tatsache, dass der Auftrag zum festgelegten Preis eröffnet wurde, es könnte zu einem Slippage gekommen sein und deshalb haben wir das folgende Ergebnis: wenn der Auftrag rechtzeitig eröffnet wurde - wahr, wenn er nicht rechtzeitig eröffnet wurde (der Preis hat sich bewegt) - falsch.
Ja, er wird im Terminal zu diesem Preis angezeigt. Wenn sie in Betrieb ist, bedeutet das, dass sie erfolgreich platziert wurde, richtig?
 
DMXX:
Ja, es hängt zu diesem Preis im Terminal. Wenn sie in Betrieb ist, bedeutet das, dass sie erfolgreich platziert wurde, richtig?

Ja, sie ist eingestellt, aber wenn sie ausgelöst wird...

Oder ein anderes Beispiel: Wir haben einen schwebenden Auftrag, dessen Preis um 1 Punkt vom aktuellen Preis abweicht, beim nächsten Tick springt der Preis nicht um 1 Punkt, sondern, sagen wir, um 3-5 Punkte, was zu einer Eröffnung zu einem falschen Preis führt. Ein offensichtliches Beispiel ist eine Lücke.

Oder vielleicht verstehe ich die Frage nicht und bin dumm.

Grund der Beschwerde: