Soweit ich das beurteilen kann, besteht der Unterschied darin:
Sie können die Geschichte von Anfang an oder vom Ende her durchgehen. Es gibt keinen Unterschied. In jedem Fall sucht die Funktion nach dem Auftrag mit der spätesten Schlusszeit. Und wenn Sie Aufträge löschen oder schließen wollen, sollten wir vom Ende der Liste aus suchen. Andernfalls überspringt die Schleife Aufträge.
Soweit ich sehen kann, ist der Unterschied wie folgt:
In diesem Fall gibt es keinen Unterschied. Der Zyklus von OrersTotal bis 0 ist nur im Falle der Schließung von Positionen oder der Entfernung von Aufträgen obligatorisch. In anderen Fällen bleibt es Ihnen überlassen, wie Sie sich entscheiden.
Sie können die Geschichte von Anfang an oder vom Ende her durchgehen. Es gibt keinen Unterschied. In jedem Fall sucht die Funktion nach dem Auftrag mit der spätesten Schlusszeit. Und wenn Sie Aufträge löschen oder schließen wollen, müssen Sie vom Ende der Liste aus suchen. Andernfalls überspringt die Schleife Aufträge.
Wenn die Funktion nach dem Auftrag mit dem spätesten Abschlusszeitpunkt sucht, wird die Suche natürlich schneller vom Ende als vom Anfang der Historie aus erfolgen - von der aktuellen Zeit zur vergangenen Zeit.
Wenn die Funktion nach einem Auftrag mit der spätesten Schlusszeit sucht, wird die Suche natürlich schneller vom Ende der Historie aus erfolgen als vom Anfang der Historie - von der aktuellen Zeit zur vergangenen Zeit.
In umgekehrter Richtung findet die Funktion den Auftrag mit der spätesten Abschlusszeit schneller, ändert ihn bis zum Ende des Zyklus nicht und gibt das Ergebnis zurück. In Vorwärtsrichtung werden alle Aufträge durchsucht und einer der letzten Aufträge zurückgegeben. Der Unterschied besteht darin, dass die Variablen bei jedem Durchlauf der Schleife überschrieben werden. Ja, es gibt einen Unterschied. Aber ich denke, das ist nicht sehr wichtig. Allerdings würde ich die Schleife in umgekehrter Richtung der Vorwärtsschleife vorziehen. Trotzdem wird die Funktion auf die eine oder andere Weise funktionieren.
Hallo zusammen, gibt es eine Möglichkeit, programmatisch zwischen Diagrammfenstern zu wechseln, d.h. ein beliebiges Diagramm aus dem Programm heraus aktiv zu machen?
Maksim Mihajlov #: Hallo zusammen, gibt es eine Möglichkeit, programmatisch zwischen Diagrammfenstern umzuschalten, d.h. ein beliebiges Diagramm aus einem Programm heraus aktiv zu machen?
Sie können die Geschichte von Anfang an oder vom Ende her durchgehen. Es gibt keinen Unterschied. In jedem Fall sucht die Funktion nach dem Auftrag mit der spätesten Schlusszeit. Und wenn Sie Aufträge löschen oder schließen wollen, müssen Sie vom Ende der Liste aus suchen. Andernfalls überspringt die Schleife Aufträge.
Wie auch immer, ich habe zwei völlig identische EAs erstellt, bis auf die Zählung der Auftragslose!!! und hier ist das Ergebnis:
FUNKTIONIERT NICHT (d.h. öffnet nicht BAY statt SELL)
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
//Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy())
{
if(GetLotSize()>LotControl) vOrderOpenSell();
else vOrderOpenBuy();
}
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell())
{
if(GetLotSize()>LotControl) vOrderOpenBuy();
else vOrderOpenSell();
}
}
}
,,,
double GetLotSize()
{
double Ls=0;
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();}
}
}
}
return Ls;
}
WORKING ((d.h. öffnet BAY statt SELL)
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
//Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy())
{
if(GetLotSize()>LotControl) vOrderOpenSell();
else vOrderOpenBuy();
}
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell())
{
if(GetLotSize()>LotControl) vOrderOpenBuy();
else vOrderOpenSell();
}
}
}
...
double GetLotSize()
{
double Ls=0;
datetime t=0;
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
}
}
}
}
return Ls;
}
[in] Quelle der auszuwählenden Daten. Wird verwendet, wenn der Auswahlparameter SELECT_BY_POS lautet. Kann einer der folgenden Werte sein:
MODE_TRADES (Standard) - der Auftrag wird unter den offenen und schwebenden Aufträgen ausgewählt, MODE_HISTORY - der Auftrag wird unter den geschlossenen und gelöschten Aufträgen ausgewählt.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Soweit ich das beurteilen kann, besteht der Unterschied darin:
Sie können die Geschichte von Anfang an oder vom Ende her durchgehen. Es gibt keinen Unterschied. In jedem Fall sucht die Funktion nach dem Auftrag mit der spätesten Schlusszeit. Und wenn Sie Aufträge löschen oder schließen wollen, sollten wir vom Ende der Liste aus suchen. Andernfalls überspringt die Schleife Aufträge.
Soweit ich sehen kann, ist der Unterschied wie folgt:
In diesem Fall gibt es keinen Unterschied. Der Zyklus von OrersTotal bis 0 ist nur im Falle der Schließung von Positionen oder der Entfernung von Aufträgen obligatorisch. In anderen Fällen bleibt es Ihnen überlassen, wie Sie sich entscheiden.
Sie können die Geschichte von Anfang an oder vom Ende her durchgehen. Es gibt keinen Unterschied. In jedem Fall sucht die Funktion nach dem Auftrag mit der spätesten Schlusszeit. Und wenn Sie Aufträge löschen oder schließen wollen, müssen Sie vom Ende der Liste aus suchen. Andernfalls überspringt die Schleife Aufträge.
Wenn die Funktion nach dem Auftrag mit dem spätesten Abschlusszeitpunkt sucht, wird die Suche natürlich schneller vom Ende als vom Anfang der Historie aus erfolgen - von der aktuellen Zeit zur vergangenen Zeit.
Wenn die Funktion nach einem Auftrag mit der spätesten Schlusszeit sucht, wird die Suche natürlich schneller vom Ende der Historie aus erfolgen als vom Anfang der Historie - von der aktuellen Zeit zur vergangenen Zeit.
In umgekehrter Richtung findet die Funktion den Auftrag mit der spätesten Abschlusszeit schneller, ändert ihn bis zum Ende des Zyklus nicht und gibt das Ergebnis zurück. In Vorwärtsrichtung werden alle Aufträge durchsucht und einer der letzten Aufträge zurückgegeben. Der Unterschied besteht darin, dass die Variablen bei jedem Durchlauf der Schleife überschrieben werden. Ja, es gibt einen Unterschied. Aber ich denke, das ist nicht sehr wichtig. Allerdings würde ich die Schleife in umgekehrter Richtung der Vorwärtsschleife vorziehen. Trotzdem wird die Funktion auf die eine oder andere Weise funktionieren.
Hallo zusammen, gibt es eine Möglichkeit, programmatisch zwischen Diagrammfenstern umzuschalten, d.h. ein beliebiges Diagramm aus einem Programm heraus aktiv zu machen?
Überprüfen Sie
Diagramm über allen anderen Diagrammen anzeigen
bool
Überprüfen Sie
Diagramm über allen anderen Diagrammen anzeigen
bool
Ich danke Ihnen!
Sie können die Geschichte von Anfang an oder vom Ende her durchgehen. Es gibt keinen Unterschied. In jedem Fall sucht die Funktion nach dem Auftrag mit der spätesten Schlusszeit. Und wenn Sie Aufträge löschen oder schließen wollen, müssen Sie vom Ende der Liste aus suchen. Andernfalls überspringt die Schleife Aufträge.
Wie auch immer, ich habe zwei völlig identische EAs erstellt, bis auf die Zählung der Auftragslose!!! und hier ist das Ergebnis:
FUNKTIONIERT NICHT (d.h. öffnet nicht BAY statt SELL)
WORKING ((d.h. öffnet BAY statt SELL)
Wie auch immer, ich habe zwei völlig identische EAs gemacht, bis auf die Zählung der Auftragslose!!! und hier ist das Ergebnis:
FUNKTIONIERT NICHT (d.h. öffnet nicht BAY statt SELL)
WORKING (d.h. öffnet BAY anstelle von SELL)
Ich betone noch einmal den Unterschied
1 Variante
2 Variante
Wie auch immer, ich habe zwei völlig identische EAs gemacht, bis auf die Zählung der Auftragslose!!! und hier ist das Ergebnis:
FUNKTIONIERT NICHT (d.h. öffnet nicht BAY statt SELL)
WORKING ((d.h. öffnet BAY statt SELL)
Versuchen Sie zu verstehen, was Sie kodieren, anstatt blindlingsOrdersTotal,OrdersHistoryTotal zu kopieren,
BestellungAuswählen
pool=MODE_TRADES
[in] Quelle der auszuwählenden Daten. Wird verwendet, wenn der Auswahlparameter SELECT_BY_POS lautet. Kann einer der folgenden Werte sein:
MODE_TRADES (Standard) - der Auftrag wird unter den offenen und schwebenden Aufträgen ausgewählt,MODE_HISTORY - der Auftrag wird unter den geschlossenen und gelöschten Aufträgen ausgewählt.