Erreurs, bugs, questions - page 42

 
Kos:
Quel est l'intérêt de compiler une telle construction si cela conduit à l'impossibilité de charger le programme MQL5 ?

Merci pour cet article. L'erreur d'analyse de NULL pour l'opérateur condit a été corrigée.
 

Quel est le nombre maximum de tableaux dynamiques dans un indicateur ?

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
dentraf:

Quel est le nombre maximum de tableaux dynamiques dans un indicateur ?

Les limites sont dictées par vos ressources matérielles.

Combien de mémoire est disponible.

 
dentraf:

Quel est le nombre maximum de tableaux dynamiques dans un indicateur ?

Il n'y a pas plus de 512 tableaux d'indicateurs. En général, n'importe quel tableau - autant qu'il y a de mémoire.
 

J'ai écrit ce script pour vérifier la fonction

OrderCalcMargin()

il renvoie l'erreur 4002, qu'est-ce que j'ai fait de mal ?

void OnStart()
  {
   int total=SymbolsTotal(false);
   double marginbay;
   double marginsell;
   MqlTick pr;
   for(int i=0;i<=total;i++)
     {
      if(OrderCalcMargin(ORDER_TYPE_BUY,SymbolName(i,false),1.0,pr.ask,marginbay))
         Print("Маржа для покупки "+SymbolName(i,false)+" = ",DoubleToString(marginbay));
      else Print("Ошибка  № - ",GetLastError());

      if(OrderCalcMargin(ORDER_TYPE_SELL,SymbolName(i,false),1.0,pr.bid,marginsell))
         Print("Маржа для продажи "+SymbolName(i,false)+" = ",DoubleToString(marginsell));
      else Print("Ошибка  № - ",GetLastError());

     }
  }
 

il est étrange si vous n'utilisez pas la structure de la demande pour les prix actuels, tout compte sauf pour les instruments comme #AA dans ce cas il retourne zéro, je me demande pourquoi ? comment alors calculer la marge pour de tels instruments

void OnStart()
  {
   int total=SymbolsTotal(false);
   double marginbay;
   double marginsell;
   //MqlTick pr;
   for(int i=0;i<=total;i++)
     {
      if(OrderCalcMargin(ORDER_TYPE_BUY,SymbolName(i,false),1.0,SymbolInfoDouble(SymbolName(i,false),SYMBOL_ASK),marginbay))
         Print("Маржа для покупки "+SymbolName(i,false)+" = ",DoubleToString(marginbay));
      else Print("Ошибка  № - ",GetLastError());

      if(OrderCalcMargin(ORDER_TYPE_SELL,SymbolName(i,false),1.0,SymbolInfoDouble(SymbolName(i,false),SYMBOL_BID),marginsell))
         Print("Маржа для продажи "+SymbolName(i,false)+" = ",DoubleToString(marginsell));
      else Print("Ошибка  № - ",GetLastError());

     }
  }
Документация по MQL5: Получение рыночной информации / SymbolInfoTick
Документация по MQL5: Получение рыночной информации / SymbolInfoTick
  • www.mql5.com
Получение рыночной информации / SymbolInfoTick - Документация по MQL5
 
J'ai compris pourquoi la première option ne fonctionnait pas, j'aurais dû écrire la fonction
SymbolInfoTick(SymbolName(i,false),pr);
dans le corps de la boucle pour obtenir la cotation du symbole demandé.
void OnStart()
  {
   int total=SymbolsTotal(false);
   double marginbay;
   double marginsell;
   MqlTick pr;
   for(int i=0;i<=total;i++)
     {
      SymbolInfoTick(SymbolName(i,false),pr);
      if(OrderCalcMargin(ORDER_TYPE_BUY,SymbolName(i,false),1.0,pr.ask,marginbay))
         Print("Маржа для покупки "+SymbolName(i,false)+" = ",DoubleToString(marginbay));
      else Print("Ошибка  № - ",GetLastError());

      if(OrderCalcMargin(ORDER_TYPE_SELL,SymbolName(i,false),1.0,pr.bid,marginsell))
         Print("Маржа для продажи "+SymbolName(i,false)+" = ",DoubleToString(marginsell));
      else Print("Ошибка  № - ",GetLastError());

     }
  }
La question des valeurs nulles des instruments de type #AA est toujours d'actualité.
 
sergey1294:

J'ai écrit ce script pour vérifier la fonction

Retourne l'erreur 4002, qu'est-ce que j'ai fait de mal ?


sergey1294:
J'ai compris pourquoi la première version ne fonctionnait pas, j'aurais dû écrire la fonction dans le corps de la boucle pour obtenir les guillemets pour le symbole demandé.

Vous décidez juste d'aider... :)

PS

Je ne sais pas pour les autres, mais le marché est un peu fermé pour #AA...

 
Est-ce que je comprends bien qu'un code du type suivant
AccountInfoDouble(ACCOUNT_FREEMARGIN) - OrderCalcMargin();
est un analogue de la fonction MT4
AccountFreeMarginCheck()
 
sergey1294:
J'ai également une question, ai-je bien compris que ce type de code est un analogue de la fonction de MT4.

S'il n'y a pas de postes ouverts, la déclaration sera probablement correcte, mais s'il y a des postes ouverts, la situation est un peu différente...
Raison: