Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1182

 
Igor Makanu:

L'aide MQL est la même que celle des autres langages

et suppose que vous avez au moins une expérience de base dans l'écriture de codes simples.

c'est pourquoi le mot "// placeholder" la plupart des gens ne le testent pas et ne le vérifient pas.

ushortfill_symbol='filler'// remplissage

C'est à peu près tout.

 
awsomdino:

Cela signifie-t-il qu'ici et dans des cas comme celui-ci, vous pouvez omettre ce champ ?

comme

(ce qui signifie qu'il est juste de l'utiliser)

et le deuxième paramètre peut être omis.

Non, ce n'est pas ça.

la "valeur par défaut" existe - vous devriez lire l'aide, où le terme "fonction" est expliqué.

mais pour utiliser" la valeur par défaut" c'est simple : si l'aide dans la description de la fonction a un signe = , alors c'est la valeur par défaut, et si vous n'écrivez rien vous-même à cet endroit, le compilateur utilisera la valeur écrite dans l'aide

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

Igor Makanu

Merci, beaucoup de choses sont claires maintenant. Sans connaissances initiales, il est difficile de tout faire

 
Artyom Trishkin:

Une moyenne mobile simple avec la période 14, décalage 0, calculée à partir des prix de clôture sur le graphique quotidien du symbole actuel. Nous prenons la valeur de la première barre (zéro étant le jour actuel) :

Existe-t-il un moyen d'obtenir rapidement sur les moyennes mobiles le prix au milieu entre l'ouverture et la fermeture avec un décalage de 0, vous voulez dire la barre actuelle ? Ou bien c'est une question délicate, il n'y a pas de variables toutes faites pour cette fonction.

 

Bonne journée à tous.

Lors de la clôture partielle d'un ordre, le message d'alerte "OrderClose (28800839, 0.01) error (method : CloseOrderPartial) - trade is not allowed in the expert properties" apparaît dans la fenêtre d'alerte.

Cependant, une partie d'ordre correcte est en fait fermée et l'EA effectue correctement l'ouverture et la fermeture de l'ordre. Je n'ai pas trouvé une telle erreur dans la documentation et les forums non plus. La traduction de l'erreur indique que "l'EA n'est pas autorisé à commercer" mais nous pouvons voir que ce n'est pas le cas et que l'EA commercera.

Peut-être que quelqu'un a été confronté à un tel problème ?

Code de méthode pour la fermeture partielle

//Закрытие ордера на продажу
//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:

Existe-t-il un moyen d'obtenir rapidement le prix au milieu entre l'ouverture et la fermeture avec un décalage de 0 sur les slides, vous voulez dire la barre actuelle ? Ou bien c'est une question délicate, il n'y a pas de variables toutes faites pour cette fonction.

L'utilisez-vous pour un hibou ou pour un indicateur ?
ils ont des pattes différentes, vous avez besoin de différentes glissières)

 
Medvedina:

Bonne journée à tous.

Lors de la clôture partielle d'un ordre, l'alerte "OrderClose (28800839, 0.01) error (method : CloseOrderPartial) - trade is not allowed in the expert properties" apparaît dans la fenêtre d'alerte.

Je pense que le problème ne réside pas dans la méthode mais dans les conditions de clôture.

Qu'est-ce que ça dit dans le journal ? Pouvez-vous faire une capture d'écran ?

 
Taras Slobodyanik:

cherchez-vous un hibou ou une dinde ?
ils ont des pattes différentes, vous avez besoin de patins différents)

Normale lissée (il y a aussi la moyenne pondérée lissée exponentielle et tout ce qui existe). J'ai besoin d'une moyenne mobile simple, peut-être lissée, qui passera bêtement par le milieu entre l'ouverture et la fermeture. Je me suis rendu compte que cela n'existe pas, qu'il faut faire, parce que personne ne penserait qu'un crétin comme moi viendrait utiliser des choses aussi simples dans des situations très compliquées, mais il m'est venu à l'esprit de faire des variables aussi complexes (Simle...).

...qui ne savent pas ce qu'ils calculent et redessinent simplement les prix. Je ne sais même pas si les grands investisseurs font attention aux moyennes (par exemple 200,30,21,14,7). Si je n'en ai pas, je le ferai plus tard.

 
MakarFX:

Je pense que le problème ne vient pas de la méthode, mais des conditions de clôture.

Qu'est-ce qui est écrit dans le journal de bord ? Je peux avoir une capture d'écran ?

Bon après-midi.

Merci pour cette réflexion. En effet, je ne l'avais pas remarqué mais ce n'est pas mon EA qui reçoit des avertissements mais un autre qui travaille en parallèle sur la même paire. Ce qui est étrange, c'est que les avertissements pour le deuxième EA ne sont apparus qu'en travaillant en parallèle.

 
Seric29:

Une moyenne régulière lissée (il existe aussi une moyenne pondérée lissée exponentielle et tout ce qui existe). J'ai besoin d'une moyenne mobile simple qui peut être lissée, qui stupidement passerait au milieu entre l'ouverture et la fermeture.

donc vous additionnez et divisez - (MA1 + MA2 + MA3) / 3 = Moyenne MA

Si vous comptez par le tampon, alors iMAOnArray

Raison: