Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXVIII): Schließen, Entfernen und Ändern von schwebenden Handelsanfragen"

 

Neuer Artikel Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXVIII): Schließen, Entfernen und Ändern von schwebenden Handelsanfragen :

Dies ist der dritte Artikel über das Konzept der schwebenden Anfragen. Wir werden die Tests von schwebenden Anfragen abschließen, indem wir die Methoden für das Schließen von Positionen, die Entfernung von schwebenden Anfragen und die Änderung der Parameter von Positionen und den Parametern von Pending-Orders erstellen.

Dies ist der dritte Artikel über das Konzept von schwebenden Anfragen. In diesem Artikel werden wir die Tests des Konzepts abschließen, indem wir die Methoden für das Schließen von Positionen, das Entfernen von Orders und das Ändern der Stop-Orders von Positionen und der Parameter von Pending-Orders, die modifiziert werden können, erstellen.

Außerdem werden wir die Klasse der abstrakten Orders leicht verbessern, indem wir die Rückgabe der beiden Order- und Positionseigenschaftswerte hinzufügen — das Ausfüllen der Order und den Typ des Ablaufes. Der Code aller Handelsmethoden des grundlegenden plattformübergreifenden Handelsobjekts wurde leicht optimiert. Es macht keinen Sinn, sich mit den Änderungen aufzuhalten. Stattdessen werde ich ein einziges Beispiel für eine der geänderten Methoden zeigen.

Autor: Artyom Trishkin

 

Hallo Artyom, gibt es einen bestimmten Grund, warum Sie einem Zeiger dynamischen Speicher zuweisen, um die folgende Arbeit auszuführen?

int CTrading::GetIndexPendingRequestByOrder(const ulong ticket)
  {
   CPendingReq *req=new CPendingReq();
   if(req==NULL)
      return WRONG_VALUE;
   req.SetOrder(ticket);
   this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET);
   int index=this.m_list_request.Search(req);
   delete req;
   return index;
  }

Meiner bescheidenen Meinung nach würde die Verwendung einer einfachen lokalen Variablen die Methode vereinfachen und den überflüssigen Code für die Zeigerbehandlung weiter oben überflüssig machen.

int CTrading::GetIndexPendingRequestByOrder(const ulong ticket)
  {
   CPendingReq req;
   req.SetOrder(ticket);
   this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET);
   int index=this.m_list_request.Search(req);
   return index;
  }

Ich bin neugierig zu verstehen, warum Sie sich für den ersteren Ansatz entschieden haben... vielleicht übersehe ich einige bewährte Verfahren?

/dima

 
ddiall :

Hallo Artyom, gibt es einen bestimmten Grund, warum Sie dynamischen Speicher für einen Zeiger zuweisen, um die Arbeit unten durchzuführen?

Meiner bescheidenen Meinung nach würde die Verwendung einer einfachen lokalen Variablen die Methode vereinfachen und den überflüssigen Code für die Zeigerbehandlung weiter oben überflüssig machen.

Ich bin neugierig, warum Sie sich für den erstgenannten Ansatz entschieden haben... vielleicht übersehe ich ja eine Best Practice?

/dima

Die Methode Search() arbeitet mit einem Zeiger auf ein Objekt:

 int Search(
   CObject*  element       // Beispiel 
   ) const 
 
Artyom Trishkin:

Die Methode Search() arbeitet mit einem Zeiger auf ein Objekt:

Ah, richtig... aber könnte man die Methode nicht aufrufen und stattdessen den Zeiger der lokalen Variablen übergeben?

int index=this.m_list_request.Search(GetPointer(req));
 
ddiall :

Ah, richtig... aber könnten Sie nicht die Methode aufrufen und stattdessen den Zeiger der lokalen Variablen übergeben?

Man kann das auf verschiedene Arten machen ... Ich habe das getan ... :)

 
Artyom Trishkin:

Man kann es auf verschiedene Arten machen ... Ich habe das getan ... :)

Cool, danke - ich wollte nur mein Verständnis bestätigen, da ich immer noch die Artikel lese und den Code studiere ;-)
 
ddiall:
Cool, danke - es war nur eine Bestätigung meines Verständnisses, da ich immer noch die Artikel lese und den Code studiere ;-)
OK. Sind Sie willkommen :)
 
   CEventsCollection*GetObject(void)                                                                     { return &this;