Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 21

 
bablusut:

Danke für die Antwort ... Um also Aufträge in der Handelshistorie zu suchen, verwenden wir die FunktionOrdersHistoryTotal, die, nachdem wir alles Unnötige verworfen haben, wie folgt aussieht

for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - hier stellt sich die Frage, was "accTotal" in der Funktionsvorlage bedeutet, die wir verworfen haben, und warum haben Sie "i--" und nicht "i++" wie in der Vorlagegenommen?
- die zweite FunktionOrderComment gibt den Kommentar der ausgewählten Bestellung zurück, wenn diese durch die vorherige FunktionOrdersHistoryTotal ausgewählt wurde, und hat die Form

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- wobei "i", das ist "i>=0" aus der vorherigen Funktion, und "SELECT_BY_TICKET" wurde durch "SELECT_BY_POS" ersetztund "MODE_HISTORY" wurde hinzugefügt- warum?

- Die dritte Zeile ist die Definition, wir brauchen die notwendige Order nicht zu überprüfen, da wir in dieser Historie nur durch TP und SL geschlossene Market Orders haben (wir könnten eine geschlossene Pending Order haben, aber das wird selten sein), alle anderen Orderparameter sind für uns nicht wichtig. Der einzige wichtige Punkt ist, dass die Anzahl der abgeschlossenen Aufträge in der Historie ständig zunimmt. Ist es möglich, dass unsere Neuberechnung nicht alle abgeschlossenen Aufträge berücksichtigt, sondern nur eine bestimmte Anzahl der letzten, zum Beispiel 5-10?

- Die letzten vier Zeilen sind ziemlich klar, die einzige Frage betrifft die PlaySound-Funktion, deren Code nach jeder"Print("..."-Zeile wie folgt eingefügt werden sollte



OrderComment gibt den Kommentar des ausgewählten Auftrags zurück, wenn dieser von der vorherigen FunktionOrdersHistoryTotal ausgewählt wurde- diese Funktion wählt nichts aus - sie gibt die Gesamtzahl der geschlossenen und gelöschten Aufträge zurück(Die Anzahl der geschlossenen und gelöschten Aufträge in der Historie des aktuellen Kontos, die in das Client-Terminal geladen wurde. Die Größe der Verlaufsliste hängt von den aktuellen Einstellungen auf der Registerkarte "Kontoverlauf" des Terminals ab. Zitat aus dem Lernprogramm).


accTotal im Beispiel aus dem Lehrgang:

int i,accTotal=OrdersHistoryTotal(); - Dies ist eine int-Variable, die den Wert OrdersHistoryTotal annimmt
for(i=0;i<accTotal;i++)// Es ist nicht wichtig, wie die Schleife durch die History-Liste läuft, von der ersten zur letzten Bestellung oder umgekehrt, es wird immer noch die ganze Liste der Reihe nach durchlaufen.

Im vorherigen Fall gibt es jedoch 1 Variable weniger, aber die Anfrage OrdersHistoryTotalwird in jedem Zyklus verarbeitet.

SELECT_BY_POS - der Index-Parameter enthält die Indexnummer des Auftrags in der Liste, die Liste selbst ist der zweite Operator - MODE_HISTORY ist die Liste der geschlossenen, MODE_TRADES - offen oder anhängig. SELECT_BY_TICKET - die Ticketnummer wird im Indexparameter übergeben. Das sollte vor der Auswahl der Bestellung irgendwo hin mitgenommen werden.


- Die

letzten vier Zeilen sind im Allgemeinen klar, die einzige Frage betrifft die PlaySound-Funktion, deren Code nach jeder "Print("..."- Zeilein folgender Form eingefügt werden sollte:

bool PlaySound(

string payment // Dateiname

)

; ...

Oder wird es auch irgendwie umgewandelt?

Deklarieren Sie

bool PlaySound( im Programmkopf - dann haben Sie die Möglichkeit, den Ton in der eingestellten Datei ein- und auszuschalten extern bool Play = TRUE;

was wird dann gedruckt? Und unter welchen Bedingungen?

Was ist die Bedeutung dieser Aktion? Um einen Ton abzuspielen, wenn der Auftrag geschlossen wird, und um den Kommentar zu schreiben (per TP oder SL)?






 
bablusut:
Vielen Dankan Vitalie Postolache für die Hilfe, vielen Dank für die Beratung, und die Informationen über diese Lehrbücher ist wahrscheinlich ein wenig spät für mich in meinem sechsten Jahrzehnt zu studieren, kann ich wahrscheinlich nicht so viel zu tun, sollte ich früher haben, aber es war keine Zeit. Ich langweile Sie hier wirklich, tut mir leid, wenn das so ist, ich werde nicht weitermachen, ich gehe jetzt.
Ich hätte lieber ein eigenes Thema, ich möchte, dass es so funktioniert. Ich bin zum Beispiel daran interessiert, verschiedene Optionen zu sehen und auch zu verstehen, welche von ihnen vom Standpunkt der Logik aus gesehen richtiger ist.
 

Übrigens, ich habe auch eine Frage.

Ich muss einen Spread-Check ausstellen.

Ich habe eine einfache Abfrage des Wertes und ein Verbot, einen Auftrag zu eröffnen, wenn der Spread den angegebenen Wert überschreitet, verwendet.

Aber was passiert ist, ist, dass wenn der Spread abnimmt, der EA eine Order eröffnet und der Spread sich erhöht.

Jetzt kann ich nicht finden, den richtigen Weg, um es zu berücksichtigen: wenn wir die Ausbreitung auf das Array jeden Tick hinzufügen, wie groß wird das Array bekommen? Andererseits: Wie lange wird es dauern?

Natürlich dürfen wir keine ähnlichen Werte oder nur kleinere und größere Werte verwenden, aber in diesem Fall müssen wir sie irgendwie auf Null zurücksetzen.

Und vor allem kann ich nicht verstehen, ob ich die minimale und maximale Streuung oder einen Hinweis auf die Sprünge berücksichtigen soll.
 
struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем
  };
Können Sie mir sagen, welcher Spread-Wert gespeichert wird? Der Zustand zu Beginn der Bareröffnung?
 
A1exPit:
struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем
  };
Können Sie mir sagen, welcher Wert von Spread gespeichert wird? Ist es der Zustand zu Beginn der Bareröffnung?

int spread;// spread

d.h. keine

 
A1exPit:
struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем
  };
Können Sie mir sagen, welcher Spread-Wert gespeichert wird? Ist es der Zustand zu Beginn der Bareröffnung?
Wenn der aktuelle Balken abgefragt wird, dann der aktuelle Spread, wenn aus der Historie, dann zum Zeitpunkt des Abschlusses.
 
Vitalie Postolache:
Wenn Sie nach dem aktuellen Balken fragen, dann nach dem aktuellen Spread, wenn aus der Historie, dann zum Zeitpunkt der Schließung.
Ich danke Ihnen.
 

Verstehe ich das richtig, dass Sie, um Daten in das Array zu schreiben, jeder Zelle einen anderen Wert zuweisen müssen array1[i] = x; was eine bestimmte Zellennummer angibt

oder kann das Feld von i=0 an nacheinander gefüllt werden?

 
A1exPit:

Verstehe ich das richtig, dass Sie, um Daten in das Array zu schreiben, jeder Zelle einen anderen Wert zuweisen müssen array1[i] = x; was eine bestimmte Zellennummer angibt

oder kann das Feld von i=0 an nacheinander gefüllt werden?

Worin besteht der Unterschied? Ich habe den Eindruck, dass es sich dabei um zwei verschiedene Methoden handelt.
 
Renat Akhtyamov:
Ich glaube, es sind einfach zwei verschiedene Wege.
Ich meinte, dass wenn Sie Daten an ein Array übergeben, es sich selbst sequentiell füllen wird, d.h. array1[] = x; in welche Zelle wird der Wert von x geschrieben werden, wenn die Zellennummer nicht explizit angegeben wird?