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

 
Igor Makanu:

Die MQL-Hilfe ist die gleiche wie bei anderen Sprachen

und setzt voraus, dass Sie zumindest einige grundlegende Erfahrungen im Schreiben einfacher Codes haben

Deshalb das Wort "// Platzhalter" - die meisten Leute werden es nicht einmal testen und überprüfen.

ushortfill_symbol='filler'// filler

Das war's dann auch schon.

 
awsomdino:

Heißt das, dass man hier und in Fällen wie diesem dieses Feld weglassen kann?

wie

(d. h. wie richtig es ist, es zu benutzen)

und der zweite Parameter kann weggelassen werden.

Nein, das ist es nicht.

es gibt so etwas wie den "Standardwert" - Sie sollten in der Hilfe nachlesen, wo der Begriff "Funktion" erklärt wird

aber" den Standardwert" zu verwenden ist einfach: wenn die Hilfe in der Beschreibung der Funktion ein Zeichen = enthält, dann ist dies der Standardwert, und wenn Sie selbst nichts an dieser Stelle schreiben, wird der Compiler den in der Hilfe angegebenen Wert verwenden

string  IntegerToString(
   long    number,              // число
   int     str_len=0,           // длина строки на выходе
   ushort  fill_symbol=' '      // заполнитель
   )
 

@Igor Makanu

Danke, jetzt ist vieles klar. Ohne Vorkenntnisse ist es schwer, alles zu tun

 
Artyom Trishkin:

Ein einfacher gleitender Durchschnitt mit Periode 14, Verschiebung 0, berechnet aus den Schlusskursen auf dem Tages-Chart des aktuellen Symbols. Wir nehmen den Wert des ersten Balkens (Null ist der aktuelle Tag):

Gibt es eine Möglichkeit, schnell auf die gleitenden Durchschnitte der Preis in der Mitte zwischen der Eröffnung und Schließung mit 0 Verschiebung, Sie meinen, die aktuelle Bar? Oder ist es eine knifflige Sache, weil es keine vorgefertigten Variablen für diese Funktion gibt.

 

Einen guten Tag an alle.

Wenn ein Auftrag teilweise geschlossen wird, zeigt das Alarmfenster die Warnung "OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties".

Tatsächlich wird jedoch ein korrekter Auftragsteil geschlossen, und der EA führt sowohl das Öffnen als auch das Schließen von Aufträgen korrekt aus. Ich habe einen solchen Fehler in der Dokumentation nicht gefunden und auch nicht in den Foren. Die Fehlerübersetzung besagt, dass "der EA nicht handeln darf", aber wir können sehen, dass dies nicht der Fall ist und der EA tatsächlich handelt.

Vielleicht hat jemand schon einmal ein solches Problem gehabt?

Methodencode für partiellen Abschluss

//Закрытие ордера на продажу
//NumberOrder = тикет ордера, 0 - закрытие всех ордеров
//ValueClose = объем закрытия ордера
bool CloseOrderSell(int NumberOrder, double ValueClose)
{
   if (NumberOrder == 0)
   {
      for (int i = OrdersTotal() - 1; i >= 0; i--)
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
            {
               if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrMaroon) == false)
               {
                  Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());    
                  return false;       
               }
               else
               {
                  if (EnableMgs == true)
                     Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
                  return true;            
               }         
            }      
         }
   }
   else
   {
      if (OrderSelect(NumberOrder, SELECT_BY_TICKET) == true)
      {
         ValueClose = NormalizeDouble(ValueClose * OrderLots(), 2);
         if(OrderClose(OrderTicket(), ValueClose, Ask, Slippage, clrMaroon) == false)
         {
            Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());   
            return false;
         }
         else
         {
            if (EnableMgs == true)
               Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
            return true;
         } 
      }
      else
         Print("Ошибка #" + (string)GetLastError() + " выбора ордера на продажу #" + (string)NumberOrder + " при закрытии ордера");
   }
   return false;
} 
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Seric29:

Gibt es eine Möglichkeit, schnell den Preis in der Mitte zwischen Eröffnung und Schließung mit einer 0 Verschiebung auf Dias, Sie meinen, die aktuelle Bar zu bekommen? Oder ist es eine knifflige Sache, weil es keine vorgefertigten Variablen für diese Funktion gibt.

Benutzt du es für eine Eule oder für einen Blinker?
sie haben unterschiedliche Beine, du brauchst unterschiedliche Folien)

 
Medvedina:

Einen guten Tag an alle.

Wenn eine Order teilweise geschlossen wird, erscheint im Alarmfenster die Meldung "OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties".

Ich denke, das Problem liegt nicht in der Methode, sondern in den Abschlussbedingungen.

Was steht im Protokoll? Können Sie einen Screenshot machen?

 
Taras Slobodyanik:

Suchst du eine Eule oder einen Truthahn?
sie haben unterschiedliche Beine und brauchen unterschiedliche Gleiter)

Normal geglättet (es gibt auch den exponentiell geglätteten gewichteten Mittelwert und alles andere, was es gibt). Ich brauche einen einfachen, vielleicht geglätteten gleitenden Durchschnitt, der stumpf durch die Mitte zwischen Eröffnungs- und Schlusskurs geht. Mir wurde klar, dass es so etwas nicht gibt, man muss es tun, denn niemand würde denken, dass ein Idiot wie ich daherkommt und solch einfache Dinge in sehr komplizierten Situationen verwendet, aber es kam mir in den Sinn, solch komplexe Variablen zu machen (Simle...).

...die nicht wissen, was sie berechnen, und die Preise einfach umzeichnen. Ich weiß nicht einmal, ob Großanleger auf die Mittelwertbildung achten (z. B. 200,30,21,14,7). Wenn ich keins habe, werde ich es später nachholen.

 
MakarFX:

Ich denke, das Problem liegt nicht bei der Methode, sondern bei den Abschlussbedingungen.

Was steht im Logbuch? Kann ich einen Screenshot haben?

Guten Tag.

Ich danke Ihnen für diesen Gedanken. In der Tat habe ich es nicht bemerkt, aber es ist nicht mein EA, der Warnungen bekommt, sondern ein anderer, der parallel auf dem gleichen Paar arbeitet. Das Seltsame ist, dass die Warnungen für den zweiten EA nur beim parallelen Arbeiten aufgetreten sind.

 
Seric29:

Ein reguläres geglättetes Mittel (es gibt auch ein exponentiell geglättetes gewichtetes Mittel und was es sonst noch gibt). Ich brauche einen einfachen geglätteten gleitenden Durchschnitt, der dummerweise in der Mitte zwischen Eröffnung und Schließung verlaufen würde.

also selbst addieren und dividieren - (MA1 + MA2 + MA3) / 3 = Durchschnitts-MA

Wenn Sie durch den Puffer zählen, dann wird iMAOnArray

Grund der Beschwerde: