Cycle Operator 'für' Fragen - Seite 16

 
RaptorUK:

Nö, das ist falsch ... weg damit. Die Positionen und Indizes sind dasselbe und sie sind 0 bis 9 ... . es gibt nichts, was 1 bis 10 ist ... streichen Sie es aus Ihrem Gehirn.

Das muss schnellstens korrigiert werden.

Wenn Indizes und Positionsnummern identisch sind, dann ist das so...

Insgesamt zehn Tickets im Auftragspool für aktive Trades:

Die Positionsnummern der Tickets lauten wie folgt: 0,1,2,3,4,5,6,7,8,9

Die Positionsnummern der Tickets sind wie folgt indiziert: |0|1|2|3|4|5|6|7|8|9|

Wenn dies tatsächlich der Fall ist, kann die Positionsnummer einer Fahrkarte Null (0) sein.

Bitte bestätigen Sie obige Aussagen oder geben Sie das Gegenteil an.


Ich danke Ihnen.

 
WhooDoo22:

Das muss schnellstens korrigiert werden.

Wenn Indizes und Positionsnummern identisch sind, dann ist dies richtig...

Insgesamt zehn Tickets im Auftragspool für aktive Trades:

Die Positionsnummern der Tickets lauten wie folgt: 0,1,2,3,4,5,6,7,8,9

Die Positionsnummern der Tickets sind wie folgt indiziert: |0|1|2|3|4|5|6|7|8|9|

Wenn dies tatsächlich der Fall ist, kann eine Ticketpositionsnummer Null (0) sein.

Wir haben das schon einmal durchgespielt ... eine Order hat eine Ticketnummer ... eine Order hat auch eine Position im Trading-Pool für offene/ausstehende Orders oder im History-Pool für geschlossene Orders...

Wenn wir 10 offene Aufträge haben, sind die Auftragspositionen 0 bis 9 oder 0,1,2,3,4,5,6,7,8,9 oder |0|1|2|3|4|5|6|7|8|9| end, Fin, done

 
RaptorUK:

Wir haben das schon einmal durchgespielt ... eine Order hat eine Ticketnummer ... eine Order hat auch eine Position im Trading-Pool für offene/ausstehende Orders oder im History-Pool für geschlossene Orders.

Wenn wir 10 offene Aufträge haben, sind die Auftragspositionen 0 bis 9 oder 0,1,2,3,4,5,6,7,8,9 oder |0|1|2|3|4|5|6|7|8|9| end, Fin, done


Ich danke Ihnen.
 

Hallo MQL4 Community Forum,

Zurzeit versuche ich, Preiswerte für Auftragsabschlüsse zu speichern. Ich habe versucht, die Funktion OrderProfit() einzubinden, aber sie gefällt mir nicht. No-no :O .Will es verwenden, wenn alle anderen Wege scheitern. Ich möchte den Preis des Orderschlusses speichern :) und stattdessen die Funktion OrderClosePrice() verwenden. Sobald alle Schlusskurse gespeichert sind, könnte ich die Ergebnisse in Paaren gruppieren. Sobald sie paarweise gruppiert sind, addiere ich jede Gruppe und teile dann jede Gruppe durch zwei, um ihren Durchschnitt zu ermitteln. Sobald alle Paare gemittelt sind, gruppieren Sie die Ergebnisse neu und wiederholen den Vorgang. Sobald alle Paare gemittelt sind und nur noch eine Gesamtsumme übrig ist, würde ich den Spread von dieser Gesamtsumme subtrahieren, und wenn das Ergebnis größer oder gleich (>=) dem Eröffnungskurs der Bestellung ist, würde ein Boolescher Wert falsch bleiben. Ist das Ergebnis kleiner als der offene Preis der Bestellung, würde ein Boolean mit true initialisiert werden.

Ist jemand schon einmal auf diese Weise vorgegangen? Wenn ja, können Sie einige Warnhinweise geben, die zu beachten sind?

Ich danke Ihnen

 
WhooDoo22:

Hat jemand diesen Weg schon einmal beschritten? Wenn ja, können Sie einige Warnungen geben, die man beachten sollte?

Tun Sie es nicht ... lesen Sie aus dem History-Pool, was Sie brauchen, es ist alles da drin. Halten Sie die Dinge einfach ... wenn Sie die Daten in einem Array speichern, müssen Sie sie in einer Datei speichern, damit Sie sie im Falle eines MT4- oder PC-Absturzes wiederherstellen können ... usw. usw.

HEADACHE
 

Ach ja, der Geschichtspool. "No-brainer!". Du bist ein echter Profi, Simon! Hahaha! ;) Warum bin ich nicht zuerst darauf gekommen, oder?

Du wirst noch einen "MQL4-Coding-Rockstar" aus mir machen! Hahahaha!

Danke, Simon!

 

Simon,

Ich habe mir die Dokumentation zu den Operatoren "Break" und "Continue" angesehen. Soweit ich sehen kann, beendet ein 'Break'-Operator einen 'while'- oder 'for'-Zyklus und übergibt die Programmkontrolle an die nächste Codezeile unterhalb des 'while'- oder 'for'-Zyklus. Ein 'Continue'-Operator beendet das Lesen des Körpers des 'while'- oder 'for'-Zyklus und übergibt die Programmkontrolle entweder an den Ausdruck in einem 'while'-Zyklus ODER an 'Ausdruck 2', wenn ein 'for'-Zyklus keinen 'Ausdruck 3' besitzt, oder an 'Ausdruck 3', wenn der 'for'-Zyklus einen 'Ausdruck 3' besitzt.

Was denken Sie darüber?

Ich danke Ihnen

 
WhooDoo22:

Simon,

Ich habe mir die Dokumentation zu den Operatoren "Break" und "Continue" angesehen. Soweit ich sehen kann, beendet ein 'Break'-Operator einen 'while'- oder 'for'-Zyklus und übergibt die Programmkontrolle an die nächste Codezeile unterhalb des 'while'- oder 'for'-Zyklus. Ein 'Continue'-Operator beendet das Lesen des Körpers des 'while'- oder 'for'-Zyklus und übergibt die Programmkontrolle entweder an den Ausdruck in einem 'while'-Zyklus ODER an 'Ausdruck 2', wenn ein 'for'-Zyklus keinen 'Ausdruck 3' besitzt, oder an 'Ausdruck 3', wenn der 'for'-Zyklus 'Ausdruck 3' besitzt.

Was denken Sie darüber?

Dankeschön

Alles in allem: Verwenden Sie continue innerhalb einer Schleife, um zum Einstiegspunkt zurückzuspringen. verwenden Sie break, um die Schleife sofort zu verlassen.

Und noch etwas: break und continue sind Code-Optimierungsoperationen, man braucht sie eigentlich nie. Außerdem sollte man sie mit Vorsicht verwenden, da sie zu schwer zu findenden Fehlern führen können.

Wie fast immer bei der Programmierung sagt ein einfaches Beispiel mehr als 1000 Worte:

for(int i=0;i<10;i++){
 Print("1");
 continue;
 Print(2);
}

//Prints: 1111111111

for(int i=0;i<10;i++){
 Print("1");
 break;
 Print(2);
}

//Prints: 1

 

Michael, ich danke Ihnen für Ihre Erklärung in Worten und in Code. Beide sind erklärend.

Dankeschön

Grund der Beschwerde: