Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 75

 
ilnur17021992:
SELL_Lvl ist die Anzahl der Knies (Aufträge) des Verkaufsrasters undSELL_NoLossLevel ist das Gesamtniveau (Preis) der CU dieser Aufträge. Die Idee ist die folgende: Wir brauchen eine Linie, die auf der Ebene einer Kauflinie gezeichnet wird und die jeweils neu gezeichnet wird, wenn neue Linien geöffnet werden. Ich weiß nicht, wie man das macht.

Sie verstehen nicht, wie Sie die BU-Linie aller Aufträge bestimmen können?

 

Können Sie mir sagen, wie ich sie aufschreiben kann, um Ressourcen zu sparen und aktuelle Preise zu erhalten?

  for(int i=OrdersTotal(); i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symb) {
      if(OrderType()==OP_BUY) {
       tk=OrderTicket();
       SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
       ask=Last_Tick.ask;
       bid=Last_Tick.bid;
       ...

oder so?

 SymbolInfoTick(symb,Last_Tick); <<<
  for(int i=OrdersTotal(); i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symb) {
      if(OrderType()==OP_BUY) {
       tk=OrderTicket();
       ask=Last_Tick.ask;
       bid=Last_Tick.bid;
       ...
 
Vitaly Muzichenko:

Können Sie mir sagen, wie ich sie aufschreiben kann, um Ressourcen zu sparen und aktuelle Preise zu erhalten?

  for(int i=OrdersTotal(); i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symb) {
      if(OrderType()==OP_BUY) {
       tk=OrderTicket();
       SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
       ask=Last_Tick.ask;
       bid=Last_Tick.bid;
       ...

oder so?

SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
  for(int i=OrdersTotal(); i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symb) {
      if(OrderType()==OP_BUY) {
       tk=OrderTicket();
       ask=Last_Tick.ask;
       bid=Last_Tick.bid;
       ...


Die erste Option ist richtiger. In der zweiten sollten Sie diese Zeile schreibenSymbolInfoTick(symb,Last_Tick); <<<<
 
Vitaly Muzichenko:

Können Sie mir sagen, wie ich sie aufschreiben kann, um Ressourcen zu sparen und aktuelle Preise zu erhalten?

  for(int i=OrdersTotal(); i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symb) {
      if(OrderType()==OP_BUY) {
       tk=OrderTicket();
       SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
       ask=Last_Tick.ask;
       bid=Last_Tick.bid;
       ...

oder so?

SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
  for(int i=OrdersTotal(); i>=0; i--) {
   if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symb) {
      if(OrderType()==OP_BUY) {
       tk=OrderTicket();
       ask=Last_Tick.ask;
       bid=Last_Tick.bid;
       ...


Ich würde sagen, es hängt von der Größe von OrdersTotal() und der Wahrscheinlichkeit von Preisänderungen während des Zyklus ab.

Meiner Meinung nach ist es richtiger, frische Daten direkt in die Schleife zu bekommen.

Und ich halte zusätzliche Variablen (im Code hervorgehoben) für absolut unnötig.

 
Alexey Viktorov:

In der Dokumentation finden Sie ein Beispiel.

Es wäre wahrscheinlich besser, die Aufträge in der Schleife durchzugehen und, sofern der nächste Auftrag niedriger ist als der vorherige, diesen für die weitere Arbeit mit ihm auszuwählen. So wird nach Verlassen der Schleife der zu löschende Auftrag ausgewählt.

Sie können aber auch zunächst seine Position in der Liste der Aufträge in der Schleife speichern und ihn dann nach Verlassen der Schleife anhand des in der Schleife gespeicherten Index auswählen.

Es ist nicht so einfach, sowohl höhere als auch niedrigere Aufträge zu erteilen, wenn
 
Sergey Gritsay:
Die erste Option ist richtiger. Die zweite sollteSymbolInfoTick(symb,Last_Tick); <<<< schreiben.

Ja, ich habe es einfach kopiert und nicht bemerkt.

Ich frage mich, obSymbolInfoTick ist der richtige Weg, um es innerhalb der Schleife zu setzen, wenn es dort benötigt wird, oder wenn es vor der Schleife gesetzt werden kann. Bei Verwendung des Trailing-Stopps kann das Raster bis zu 50pc gezogen werden.

 
Vitaly Muzichenko:

Ja, ich habe es einfach kopiert und nicht bemerkt.

Ich frage mich, obSymbolInfoTick ist der richtige Weg, um es innerhalb der Schleife zu setzen, wenn es benötigt wird, oder wenn es vor der Schleife gesetzt werden kann. Bei Verwendung des Trailing-Stops kann ein Raster von bis zu 50 % gezogen werden.

Für den Trailing-Stop ist es natürlich besser, ihn einmal vor dem Zyklus zu setzen.
 
Alexey Viktorov:

Sie können nicht herausfinden, wie Sie die BU-Zeile aller Aufträge ermitteln können?

Ich weiß, wie ich die BU bestimmen kann, ich muss die Linie auf diesem Niveau ziehen
 
Alexey Viktorov:
Für den Trailing-Stop ist es natürlich besser, einmal vor dem Zyklus zu kaufen.

Ich schreibe es jetzt langsam für 5. Ich meine, dass sich der Preis sehr schnell ändern kann und das Niveau unter dem Stop-Loss-Wert liegen kann, was zu einem Fehler führen wird. Ich meine damit, dass sich der Preis sehr schnell ändern kann und das Niveau unter dem zulässigen Stoppniveau liegt, was zu einem Fehler führt.

Ich verstehe, dass dieser"SymbolInfoTick"-Hut benötigt wird, um aktuelle Preise zu erhalten?

 
Problem durch Preisvergleich gelöst