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

 

Ich verstehe das alles nicht. Meine Frage wurde von der Moderation von MKL5 nach MKL4 verschoben. Bin dem Link gefolgt - ja, meine Frage hängt dort, aber die letzte Antwort ist vom 5.02.2018. Kam hierher - auch MKL4 und das Leben kocht... Warum also wirft der Moderator einen toten Thread rein? Also gut, machen wir weiter. Nun zur Sache: Ich werfe mein "Problem" hierher.


Vladimir Karputov:

Für Bedingung 1 setzen Sie die magische Zahl ID +1, für Bedingung 2 die magische Zahl +2 usw. Auf diese Weise können Sie dann nachvollziehen, dass diese Position durch Bedingung 1 oder durch Bedingung 2 eröffnet wurde ...

Nachmittags. Ich habe mich nur für eine Position BAY. Das Magie-Set für den Verkauf funktioniert aus irgendeinem Grund nicht. Alles ist absolut identisch, außer dem Magier natürlich. Was habe ich falsch gemacht?

int total=OrdersTotal();

      for(int i=OrdersTotal()-1;i>=0;i--)

      {

        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

        

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && OrderMagicNumber==111 && MathAbs(WPR1)<20)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);

      

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

           

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && MathAbs(WPR1)>96)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);               

         }

       continue;  

      } 
 
novichok2018:

Ich verstehe das alles nicht. Meine Frage wurde von der Moderation von MKL5 nach MKL4 verschoben. Bin dem Link gefolgt - ja, meine Frage hängt dort, aber die letzte Antwort ist vom 5.02.2018. Kam hierher - auch MKL4 und das Leben kocht... also warum wirft der Moderator einen toten Thread rein? Also gut, machen wir weiter. Nun zur Sache: Ich werfe mein "Problem" hierher.


Nachmittags. Es funktionierte nur für eine Position BAY. Die Magie, die für SELL eingerichtet wurde, funktioniert aus irgendeinem Grund nicht. Alles ist absolut identisch, außer dem Magier selbst natürlich. Was habe ich falsch gemacht?

1. es kennt kein mql4.

2. Um einen Auftrag mit magic 222 zu schließen, sollte er zuerst mit magic 222 geöffnet werden. Prüfen Sie, welcher Assistent für die Eröffnung von SELL-Aufträgen verwendet wird

3. Nach der OrderMagicNumber sollte eine Klammer () stehen.

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

4. Warum ist der Zustand hervorgehoben?

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))
 

Leute, ich habe eine Frage - wie kann ich Variablenwerte in ein eindimensionales Array einfügen?

Schicken Sie es nicht zur Hilfe - es gibt KEIN Beispiel für ein solches Problem.


Angenommen, es gibt eine Variable a, die sich unter bestimmten Bedingungen ändert.

Ich möchte ein Array zum Speichern der letzten 3 Werte dieser Variablen. Wie wird dies in mql4 umgesetzt?


Ich schreibe int mas[3];

mas[]=a; innerhalb der Schleife, nach einer Bedingung, die a ändert,

Der Compiler gibt ']' aus, aber nichts funktioniert, obwohl es logischerweise sollte. - Ausdruck erwartet, will er, dass ich einen unbekannten Ausdruck innerhalb von Klammern in mas[]=a einfüge.

Hat MQL4 jede Funktion, die das Array mit einem variablen Wert bei jeder Schleifeniteration füllt?


 
John Smith:

Leute, hier ist eine Frage - wie kann ich einen variablen Wert in ein eindimensionales Array setzen?

Schicken Sie es nicht zur Hilfe - es gibt dort KEIN Beispiel für ein solches Problem.


Angenommen, es gibt eine Variable a, die sich unter bestimmten Bedingungen ändert.

Ich möchte ein Array zum Speichern der letzten 3 Werte dieser Variablen. Wie wird dies in mql4 umgesetzt?


Ich schreibe int mas[3];

mas[]=a; innerhalb der Schleife, nach einer Bedingung, die a ändert,

Der Compiler gibt ']' aus, aber nichts funktioniert, obwohl es logischerweise sollte. - Ausdruck erwartet, will er, dass ich einen unbekannten Ausdruck innerhalb von Klammern in mas[]=a einfüge.

Verfügt MQL4 über eine Funktion, die das Array mit einem variablen Wert bei jeder Iteration der Schleife füllt?


In welche Zelle des Arrays wird wohl der Wert der Variablen "a" gesetzt, etwa so: mas[]=a; ?

Ich würde Sie zur Hilfe schicken, lesen Sie von Anfang an :)

 
John Smith:

Leute, ich habe eine Frage - wie kann ich Variablenwerte in ein eindimensionales Array einfügen?

Schicken Sie es nicht zur Hilfe - es gibt KEIN Beispiel für ein solches Problem.


Angenommen, es gibt eine Variable a, die sich unter bestimmten Bedingungen ändert.

Ich möchte ein Array zum Speichern der letzten 3 Werte dieser Variablen. Wie wird dies in mql4 umgesetzt?


Ich schreibe int mas[3];

mas[]=a; innerhalb der Schleife, nach einer Bedingung, die a ändert,

Der Compiler gibt ']' aus, aber nichts funktioniert, obwohl es logischerweise sollte. - Ich soll einen unbekannten Ausdruck innerhalb von Klammern in mas[]=a eingeben.

Hat MQL4 jede Funktion, die das Array mit einem variablen Wert bei jeder Schleifeniteration füllt?


Vielleicht sollten Sie nicht nur die Codebeispiele, sondern auch einige andere Briefe lesen.

Hier ist ein Zitat aus der Dokumentation:

Gruppe von Funktionen für die Arbeit mit Arrays

Es sind nicht mehr als vierdimensionale Arrays erlaubt. Jede Dimension wird von 0 bis dimension_size-1 indiziert . In einem besonderen Fall eines eindimensionalen Arrays mit 50 Elementen ist das erste Element array[0], das letzte Element array[49].

 
Alexey Viktorov:

1. er kennt mql4 nicht.

2. Um einen Auftrag mit magic 222 zu schließen, muss er zunächst mit magic 222 geöffnet werden. Sehen Sie sich an, welcher Assistent SELL-Aufträge eröffnet

3. Nach der OrderMagicNumber sollte eine Klammer () stehen.

4. Warum ist der Zustand so gekennzeichnet?

Ich danke Ihnen für Ihre Antwort. Es ist klar, dass ich zuerst mit einer Magie eröffnen muss. Ich habe das Orderticket entfernt und die Logik mit Kommentaren überprüft. Es hat sich herausgestellt, dass die Schließung von Positionen gemäß den Bedingungen der ersten offenen Position erfolgt. Das heißt, wenn Sie zunächst eine Kauf- oder Verkaufsposition mit Bedingung 1 und dann eine zweite Position mit derselben Bedingung, aber mit Bedingung 2 eröffnen, wird die Schließungsbedingung ignoriert und die zweite Position trotz der anderen Magie ebenfalls mit Bedingung 1 geschlossen.

Ich habe eine Unterbrechung angewandt, nachdem der Auftrag geschlossen wurde, aber die Lösung war halbherzig:nur wenn eine Position desselben Typs geöffnet wird. Wenn z.B. eine Verkaufsposition zuerst eröffnet und noch nicht geschlossen wurde, während eine Kaufposition eröffnet und geschlossen wird, sieht die Verkaufsposition keine Bedingungen, um geschlossen zu werden, bis eine andere Verkaufsposition eröffnet und geschlossen wird (in Übereinstimmung mit ihren Bedingungen). Und wenn BAY erneut öffnet und schließt, verfehlt es erneut seine Schließungsbedingungen. Was ist also zu tun?

 
Guten Tag zusammen. Liebe Programmierer, bitte helfen Sie mir, eine Zeile einzufügen, in der man für jeden Alert3.Lv1;2;3 eine Sounddatei angeben kann, um einen anderen Sound auszulösen, den man angibt. Ich selbst bin nicht gut im Programmieren und Programmieren.
Dateien:
 
Guten Tag, liebe Programmierer und MQL-Kenner! Ich habe einen Expert Advisor, der das Autotrading auf der Grundlage der Nachrichten stoppt. Ich habe im Netz eine gefunden, die entweder nicht oder nur schlecht funktioniert. Oder kann jemand einen Indikator auf der Grundlage des Urdala-Indikators schreiben?
 
Hallo Leute. Können Sie mir sagen, wie ich die Fehlermeldung [Trade context is busy] loswerde?
 
Rustam Bikbulatov:
Hallo Leute. Können Sie mir sagen, wie ich die Fehlermeldung [Trade context is busy] loswerde?
if(!IsTradeContextBusy())   //торговый поток свободен
  {
 // здесь оформляем запрос
 // на торговую операцию

  }
Grund der Beschwerde: