Leute, Hilfe wird gebraucht. Die Funktion muss die Hälfte der Aufträge abschließen, beginnend mit dem ältesten. Im ersten Fall werden die Aufträge aus irgendeinem Grund einer nach dem anderen geschlossen, im zweiten Fall beginnen sie in der falschen Reihenfolge zu schließen.
void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
int count = 0; double CTbuy = CountTrades(OP_BUY); double CTsell = CountTrades(OP_SELL);
for (int i = 0; i<=OrdersTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
{
if (otype == OP_BUY)
{
if (count<CTbuy/2 && CTbuy>3 )
OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
count++;
Sleep(1000);
}
elseif (otype == OP_SELL)
{
if (count<CTsell/2 && CTsell>3)
OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
count++;
Sleep(1000);
}
}
}
}
}
Hallo, ich habe Kim's durchsucht, aber ich kann nichts finden, was mich wissen lässt: Von welchem Auftrag (pending) wurde die Position eröffnet? Aus einem Limitauftrag oder einem Stoppauftrag?
Ich habe versucht, die Preise der letzten geöffneten Bestellung zu vergleichen
Leute, Hilfe wird gebraucht. Die Funktion sollte die Hälfte der Aufträge abschließen, beginnend mit dem ältesten. Im ersten Fall werden die Aufträge aus irgendeinem Grund einer nach dem anderen geschlossen, im zweiten Fall beginnen sie in der falschen Reihenfolge zu schließen.
Es gab eine Frage wie diese, wie man Aufträge schließt, beginnend mit dem ältesten, ein paar Seiten später gibt es eine Antwort und den richtigen Code.
Hallo, ich habe Kim's durchsucht, aber ich kann nichts finden, was mich wissen lässt: Von welchem Auftrag (pending) wurde die Position eröffnet? Aus einem Limitauftrag oder einem Stoppauftrag?
Ich habe versucht, die Preise der letzten geöffneten Bestellung zu vergleichen
mit einer geöffneten Position, aber die ganze Logik ist kaputt. Vielleicht gibt es etwas, das besser geeignet ist? Danke!
Boris. Versuchen Sie, die Kommentare zu den Aufträgen einzutragen - Limit zu Limit, Stop zu Stop. Aus den Kommentaren zu den offenen Stellen können Sie dann ersehen, woher die Beine kommen. Nur eine teilweise Schließung dieser Kommentare löscht sie. Vielleicht kann etwas anderes die Kommentare löschen. Nur gelöschte Positionen werden in der Historie gespeichert. Die, die funktioniert haben, sind nicht mehr da. Sie müssen durch... Du findest heraus, was du durchmachen musst...
Ich brauche also eine ganze Zahl...
Leute, Hilfe wird gebraucht. Die Funktion muss die Hälfte der Aufträge abschließen, beginnend mit dem ältesten. Im ersten Fall werden die Aufträge aus irgendeinem Grund einer nach dem anderen geschlossen, im zweiten Fall beginnen sie in der falschen Reihenfolge zu schließen.
Ich brauche also eine ganze Zahl...
MathRound
dies ist also eine Rundung, die Zahl wird nicht int, sondern bleibt double
dies ist also eine Rundung, die Zahl wird nicht int, sondern bleibt double
Und? Gibt es einen grundlegenden Unterschied zwischen 1 und 1,0 für Berechnungen? Das Format ist natürlich double, aber der Wert ist integer.
Eine besonders perverse Variante dann: DoubleToStr und dann StringToInteger
Bitte sagen Sie mir, wie ich die Warnung im neuen Compiler entfernen kann
möglicher Datenverlust aufgrund von Typumwandlung
Danke, also keine Vorwarnung, es frisst schon mein Auge)
Hallo, ich habe Kim's durchsucht, aber ich kann nichts finden, was mich wissen lässt: Von welchem Auftrag (pending) wurde die Position eröffnet? Aus einem Limitauftrag oder einem Stoppauftrag?
Ich habe versucht, die Preise der letzten geöffneten Bestellung zu vergleichen
mit einer geöffneten Position, aber die ganze Logik ist kaputt. Vielleicht gibt es etwas, das besser geeignet ist? Danke!
Leute, Hilfe wird gebraucht. Die Funktion sollte die Hälfte der Aufträge abschließen, beginnend mit dem ältesten. Im ersten Fall werden die Aufträge aus irgendeinem Grund einer nach dem anderen geschlossen, im zweiten Fall beginnen sie in der falschen Reihenfolge zu schließen.
Es gab eine Frage wie diese, wie man Aufträge schließt, beginnend mit dem ältesten, ein paar Seiten später gibt es eine Antwort und den richtigen Code.
https://www.mql5.com/ru/forum/145455/page406
Hallo, ich habe Kim's durchsucht, aber ich kann nichts finden, was mich wissen lässt: Von welchem Auftrag (pending) wurde die Position eröffnet? Aus einem Limitauftrag oder einem Stoppauftrag?
Ich habe versucht, die Preise der letzten geöffneten Bestellung zu vergleichen
mit einer geöffneten Position, aber die ganze Logik ist kaputt. Vielleicht gibt es etwas, das besser geeignet ist? Danke!