"Wie schreibe ich das auf?" - wo 0,01 Lot steht, müssen Sie den verfügbaren Mindestbetrag berechnen.
Das kann ich sehen. Wenn Sie 0,02 einstellen, wird der Auftrag mit dem 0,02-Lot ausgewählt. Ich habe gefragt, wie man einstellen kann, dass zuerst das 0,01-Lot betrachtet wird, dann das 0,02-Lot und so weiter.
Sergey Gridnev #: Sie benötigen 2 Zyklen: im ersten ermitteln Sie das Mindestvolumen, im zweiten schließen Sie es. Und beachten Sie, dass beim Schließen die Aufträge um 1 Position verschoben werden, so dass Sie den Zyklus von der maximalen Position bis 0 durchführen müssen.
Das kann ich sehen. Wenn Sie es auf 0,02 einstellen, werden Aufträge mit 0,02 Lot ausgewählt. Ich frage, wie man es so einstellt, dass es zuerst 0,01, dann 0,02 usw. betrachtet.
Aggregieren Sie das Array in ein zweidimensionales Array, mit Losen in der ersten und Tickets in der zweiten Dimension. Sortieren Sie das Array und schließen Sie es, wenn die erste Dimension die kleinste Menge hat. Oder wenn Sie alle schließen müssen, aber da die Menge zunimmt, schließen Sie zum Ende hin...
Sergey Gridnev #: Sie benötigen 2 Zyklen: im ersten ermitteln Sie das Mindestvolumen und im zweiten schließen Sie es. Und beachten Sie, dass beim Schließen die Aufträge um 1 Position verschoben werden, so dass Sie den Zyklus von der maximalen Position bis 0 durchführen müssen.
Bitte helfen Sie mir, eine Sache zu verstehen. Ich schreibe gerade den Anfang einer Funktion und habe beschlossen, einen Teil des Codes mit einem Skript zu überprüfen:
//+------------------------------------------------------------------+//| 3.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
/* Создадим запрос на сервер и получим ответ с результатом */MqlTradeRequest request= {};
MqlTradeResult result= {0};
/* запустим цикл для перебора всех установленных отложенных ордеров */for(int i=OrdersTotal()-1; i>=0; i--)
{
/* определим параметры установленного ордера */string symbol=OrderGetString(ORDER_SYMBOL); // символ ордераint digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятойdouble point=SymbolInfoDouble(symbol,SYMBOL_POINT); // значение одного пунктаulong ticket=OrderGetTicket(i); // тикет ордераENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордераdouble volume=OrderGetDouble(ORDER_VOLUME_INITIAL); // объём ордераulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордераdouble price_current=OrderGetDouble(ORDER_PRICE_CURRENT); // текущая цена по символу ордераdouble price_order_open=OrderGetDouble(ORDER_PRICE_OPEN); // цена открытия указанная в ордереdouble sl=OrderGetDouble(ORDER_SL); // стоп лосс ордераdouble tp=OrderGetDouble(ORDER_TP); // тейк профит ордера/* выведем информацию об установленных отложенных ордерах */PrintFormat("#%I64u %s %s %.2f price_current: %.5f price_order_open: %.5f sl: %.5f tp: %.5f magic: %d",
ticket,symbol,EnumToString(type),volume,price_current,price_order_open,sl,tp,magic);
}
}
//+------------------------------------------------------------------+
Aber das Ergebnis, das auf der Registerkarte "Experten" ausgedruckt wird, ist etwas rätselhaft. Der schwebende Auftrag ORDER_TYPE_BUY_STOP hat das Symbol, aber der ORDER_TYPE_SELL_STOP hat es aus irgendeinem Grund nicht.
Womit kann sie in Verbindung gebracht werden? Mit freundlichen Grüßen, Vladimir.
Bitte helfen Sie mir, eine Sache zu verstehen. Ich schreibe gerade den Anfang einer Funktion und habe beschlossen, einen Teil des Codes mit einem Skript zu überprüfen:
Aber das Ergebnis, das auf der Registerkarte "Experten" ausgedruckt wird, ist ein wenig rätselhaft. Der schwebende Auftrag ORDER_TYPE_BUY_STOP hat das Symbol, aber der ORDER_TYPE_SELL_STOP hat es aus irgendeinem Grund nicht.
Womit kann sie in Verbindung gebracht werden? Mit freundlichen Grüßen, Vladimir.
Das liegt daran, dass Sie kein Ticket ausgewählt haben, sondern versuchen, dessen Eigenschaften zu ermitteln.
Sergey Gridnev #: Das hat damit zu tun, dass Sie kein Ticket ausgewählt haben, sondern versuchen, dessen Eigenschaften zu erfahren.
Vielen Dank, Sergey, für deine Antwort! Ihre Antwort hat mich noch mehr verblüfft. Wie kann das sein? Wenn ich das Skript ausführe, werden alle eingestellten schwebenden Aufträge abgefragt. Wie in der Abbildung zu sehen ist, gibt es zwei von ihnen auf dem Diagramm, und zur gleichen Zeit ist ein Ticket ausgewählt und das andere nicht? Das ist nicht ganz klar.
Können Sie das näher erläutern?
Ich stelle diese Frage nicht aus reiner Neugierde, sondern um das Selbststudium fortzusetzen.
Sehen Sie es wirklich nicht selbst?
"Wie schreibe ich das auf?" - wo 0,01 Lot steht, müssen Sie den verfügbaren Mindestbetrag berechnen.
Das kann ich sehen. Wenn Sie 0,02 einstellen, wird der Auftrag mit dem 0,02-Lot ausgewählt. Ich habe gefragt, wie man einstellen kann, dass zuerst das 0,01-Lot betrachtet wird, dann das 0,02-Lot und so weiter.
Sie benötigen 2 Zyklen: im ersten ermitteln Sie das Mindestvolumen, im zweiten schließen Sie es. Und beachten Sie, dass beim Schließen die Aufträge um 1 Position verschoben werden, so dass Sie den Zyklus von der maximalen Position bis 0 durchführen müssen.
Wie geht man vom Maximum auf 0?
Ich möchte wissen, wie man zuerst 0,01, dann 0,02 und so weiter anzeigen lassen kann.
Wie das geht, wurde Ihnen bereits zweimal gesagt.
Das kann ich sehen. Wenn Sie es auf 0,02 einstellen, werden Aufträge mit 0,02 Lot ausgewählt. Ich frage, wie man es so einstellt, dass es zuerst 0,01, dann 0,02 usw. betrachtet.
Aggregieren Sie das Array in ein zweidimensionales Array, mit Losen in der ersten und Tickets in der zweiten Dimension. Sortieren Sie das Array und schließen Sie es, wenn die erste Dimension die kleinste Menge hat. Oder wenn Sie alle schließen müssen, aber da die Menge zunimmt, schließen Sie zum Ende hin...
Sie benötigen 2 Zyklen: im ersten ermitteln Sie das Mindestvolumen und im zweiten schließen Sie es. Und beachten Sie, dass beim Schließen die Aufträge um 1 Position verschoben werden, so dass Sie den Zyklus von der maximalen Position bis 0 durchführen müssen.
Nein. Vom frühesten bis zum spätesten.
Ich wusste, was sie sagten. Nun, ich werde wie immer durch Versuch und Irrtum lernen müssen.
Ich wusste, was sie sagten. Nun, ich werde wie immer durch Versuch und Irrtum lernen müssen.
Guten Abend, liebe Experten!
Bitte helfen Sie mir, eine Sache zu verstehen. Ich schreibe gerade den Anfang einer Funktion und habe beschlossen, einen Teil des Codes mit einem Skript zu überprüfen:
Aber das Ergebnis, das auf der Registerkarte "Experten" ausgedruckt wird, ist etwas rätselhaft. Der schwebende Auftrag ORDER_TYPE_BUY_STOP hat das Symbol, aber der ORDER_TYPE_SELL_STOP hat es aus irgendeinem Grund nicht.
Womit kann sie in Verbindung gebracht werden? Mit freundlichen Grüßen, Vladimir.
Guten Abend, liebe Experten!
Bitte helfen Sie mir, eine Sache zu verstehen. Ich schreibe gerade den Anfang einer Funktion und habe beschlossen, einen Teil des Codes mit einem Skript zu überprüfen:
Aber das Ergebnis, das auf der Registerkarte "Experten" ausgedruckt wird, ist ein wenig rätselhaft. Der schwebende Auftrag ORDER_TYPE_BUY_STOP hat das Symbol, aber der ORDER_TYPE_SELL_STOP hat es aus irgendeinem Grund nicht.
Womit kann sie in Verbindung gebracht werden? Mit freundlichen Grüßen, Vladimir.
Das hat damit zu tun, dass Sie kein Ticket ausgewählt haben, sondern versuchen, dessen Eigenschaften zu erfahren.
Vielen Dank, Sergey, für deine Antwort! Ihre Antwort hat mich noch mehr verblüfft. Wie kann das sein? Wenn ich das Skript ausführe, werden alle eingestellten schwebenden Aufträge abgefragt. Wie in der Abbildung zu sehen ist, gibt es zwei von ihnen auf dem Diagramm, und zur gleichen Zeit ist ein Ticket ausgewählt und das andere nicht? Das ist nicht ganz klar.
Können Sie das näher erläutern?
Ich stelle diese Frage nicht aus reiner Neugierde, sondern um das Selbststudium fortzusetzen.
Mit freundlichen Grüßen, Vladimir.