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

 
pivomoe:
Verstehe ich das richtig, dass die Methode Volume der Klasse CPositionInfo die Lautstärke zurückgibt, die dem Zeitpunkt entspricht, zu dem die Methode Select() zuletzt aufgerufen wurde? Das heißt, Sie können das Volumen herausfinden, das vor einem Monat für dieses Symbol war?
Sie haben das alles falsch verstanden. Die Methode Volume der Klasse CPositionInfo gibt das Volumen einer Position zurück. Die Position, die zuvor über PositionSelect ausgewählt wurde.
 

Sie haben erklärt, wie man CPositionInfo vorbereitet. Zwei Dinge verstehe ich allerdings immer noch nicht:

1) Wie folgt dieses Rezept aus der CPositionInfo-Klasse helfen?

2) Wozu brauchen wir die Klasse selbst, wenn man normalerweise nicht mehr als ein Objekt verwenden kann, denn vor jedem Zugriff auf die Positionseigenschaft müssen wir die Position mit der Select-Methode konfigurieren, sonst verwenden wir plötzlich die Select-Methode für ein anderes CPositionInfo-Objekt irgendwo anders.

 
pivomoe:

Sie haben erklärt, wie man CPositionInfo vorbereitet. Zwei Dinge verstehe ich allerdings immer noch nicht:

1) Wie folgt dieses Rezept aus der CPositionInfo-Klasse helfen?

2) Wozu brauchen wir die Klasse selbst, wenn man normalerweise nicht mehr als ein Objekt verwenden kann, denn vor jedem Zugriff auf die Positionseigenschaft müssen wir ihre Position mit der Select-Methode konfigurieren, sonst verwenden wir plötzlich die Select-Methode für ein anderes CPositionInfo-Objekt an einer anderen Stelle.

1). All dies steht in der Hilfe. Mit etwas Fleiß und Aufmerksamkeit sowie etwas selbständigem Schreiben werden Sie dies verstehen.
2). Noch einmal: Die Klasse CPositionInfo ist keine Schatulle, die alle Daten aller Positionen speichert; sie ist nur ein praktisches Werkzeug, um auf die Eigenschaften einer Position zuzugreifen.

Und das war schon immer so: Zuerst wird die Position ausgewählt, und dann erhalten wir ihre Eigenschaften. Danach wiederholt sich der Zyklus: Die Position wird hervorgehoben und erst dann werden die Positionseigenschaften abgerufen.
 

Ich verstehe nicht, was mein Fehler bei der Verwendung der Hilfe ist.

1) Ich brauchte das Volumen der Position im Programm.

2) Durch eine Suche fand ich die Volume-Methode aus der CPositionInfo-Klasse.

3) Sie enthält einen Verweis auf die Verwendung der Select-Methode vor dem Aufruf von Volume.

4) In der Beschreibung der Select-Methode fehlt ein Hinweis. Um auf Nummer sicher zu gehen, studiere ich die Beschreibung der Klasse CPositionInfo.

5) Ich schreibe den Code. Ich erhalte ein Ergebnis, das sich nicht aus dem Verweis ergibt.


Wo liegt der Fehler?

Auch hier weiß ich, dass ich eine Position und einen Auftrag auswählen muss, bevor ich auf die Eigenschaften zugreifen kann. Aber dieses Wissen und das Wissen von CPositionInfo in der Hilfe überschneiden sich nicht.

 
pivomoe:

Wo liegt der Fehler?

Wenn Sie lernen, ausführlicher zu schreiben, können Sie erkennen, wo Sie falsch liegen.

Versuchen Sie, so zu schreiben:

CPositionInfo PositionInfoKotiryemii,PositionInfoVedygii;
double Volume1=0; Volume2=0;
string Symbol1=""; Symbol2="";

if ( PositionInfoVedygii.Select("SBRF-12.17") ) // Select 1
{ Volume1=PositionInfoVedygii.Volume(); Symbol1=PositionInfoVedygii.Symbol(); } // Use 1
else Print("Не удалось выбрать позицию по символ SBRF-12.17 ");

if ( PositionInfoKotiryemii.Select("SBRF-3.18") ) // Select 2
{ Volume2=PositionInfoKotiryemii.Volume(); Symbol2=PositionInfoKotiryemii.Symbol(); } // Use 2
els Print("Не удалось выбрать позицию по символ SBRF-3.18 ");
 
Print(Symbol2," Объем ",Volume2," ",Symbol1," Объем ",Volime1);
 
pivomoe:

Ich verstehe nicht, was mein Fehler bei der Verwendung der Hilfe ist.

1) Ich brauchte das Volumen der Position im Programm.

2) Durch eine Suche fand ich die Volume-Methode aus der CPositionInfo-Klasse.

3) Sie bezieht sich auf die Verwendung der Select-Methode vor dem Aufruf von Volume.

4) In der Beschreibung der Select-Methode fehlt ein Hinweis. Um auf Nummer sicher zu gehen, studiere ich die Beschreibung der Klasse CPositionInfo.

5) Ich schreibe den Code. Ich erhalte ein Ergebnis, das sich nicht aus dem Verweis ergibt.


Wo liegt der Fehler?

Noch einmal zur Positionsauswahl, Reihenfolge, vor dem Zugriff auf Eigenschaften, die ich kenne. Dieses Wissen und das CPositionInfo-Wissen in der Hilfe überschneiden sich jedoch nicht.


Es handelt sich um einen Codeblock, der alle Positionen umgeht und Informationen ausgibt, die denen im Terminal auf der Registerkarte "Handel" ähneln:

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         string str_position_type=(m_position.PositionType()==POSITION_TYPE_BUY)?"buy":"sell";
         Print(m_position.Symbol()+" | "+
               IntegerToString(m_position.Ticket())+" | "+
               TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" | "+
               str_position_type+" | "+
               DoubleToString(m_position.Volume(),2)+" | "+
               DoubleToString(m_position.PriceOpen(),2));

}

Algorithmus der Arbeit: zuerst wählen wir die Position (nehmen Sie ein Glas Marmelade aus dem Supermarktregal), dann greifen wir auf die Eigenschaften der ausgewählten Position zu und drucken diese Eigenschaften aus (lesen Sie das Etikett auf dem Glas Marmelade).

 
pivomoe:

Es stellt sich heraus, dass die CPositionInfo-Klasse keinen Sinn macht, da man normalerweise nur mit einem Objekt dieser Klasse arbeiten kann.

Ja, es ist eine Verpackung.
 

Ivan Ivanov ,Vladimir Karputov, fxsaber danke für Ihre Hilfe.

 

Ich rufe Daten von Indikatoren im Expert Advisor ab. Zuerst berechne ich den Handle, dann kopiere ich die letzten Ist-Werte aus den Indikatorpuffern.

Fragen:

1. Welche Tiefe haben diese Indikatoren in der Geschichte?

2. Gibt es eine Methode, um die Tiefe der Berechnungen zu begrenzen?
In diesem Fall benötigen wir nur einige wenige letzte Werte, um die Beugung oder die Richtung nach oben/unten zu bestimmen.
Der Expert Advisor ist mehrwährungsfähig, es gibt Dutzende von Indikatoren, so dass ich keine unnötigen Berechnungen anstellen muss.

 
User_mt5:

Ich rufe Daten von Indikatoren im Expert Advisor ab. Zuerst berechne ich den Handle, dann kopiere ich die letzten Ist-Werte aus den Indikatorpuffern.

Fragen:

1. Wie tief ist die Geschichte in diesen Indikatoren?

2. Gibt es eine Möglichkeit, die Tiefe der Berechnungen zu begrenzen?
In diesem Fall benötigen wir nur ein paar letzte Werte, um die Wende oder die Auf-/Abwärtsrichtung zu bestimmen.
Der Expert Advisor ist mehrwährungsfähig, es gibt Dutzende von Indikatoren, so dass Sie keine unnötigen Berechnungen durchführen müssen.


Ich hoffe, Sie erstellen Indikator-Handles EINMAL in OnInit()?

Die Berechnungstiefe hängt vom jeweiligen Indikator ab. Seltene Indikatoren schränken die Tiefe zwangsweise ein - in der Regel berechnen sie alle die gesamte Historie. Daher ist vielleicht die folgende Variante sinnvoll: die für die Tiefe verantwortliche Variable in den Indikator einzuführen und diesen Parameter dann über iCustom im Expert Advisor zu übergeben.

Grund der Beschwerde: