Errores, fallos, preguntas - página 42

 
Kos:
¿Qué sentido tiene compilar una construcción de este tipo si va a provocar la imposibilidad de cargar el programa MQL5?

Gracias por la publicación. Seha corregido el error de análisis de NULL parael operador condit.
 

¿Cuál es el número máximo de matrices dinámicas en un indicador?

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

¿Cuál es el número máximo de matrices dinámicas en un indicador?

Las limitaciones vienen dictadas por sus recursos de hardware.

La cantidad de memoria disponible.

 
dentraf:

¿Cuál es el número máximo de matrices dinámicas en un indicador?

No hay más de 512 matrices de indicadores. En general, cualquier matriz -tanto como haya suficiente memoria
 

escribió este script para comprobar la función

OrderCalcMargin()

devuelve el error 4002, ¿qué he hecho 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());

     }
  }
 

es extraño si no se utiliza la estructura de la solicitud de los precios actuales entonces se calcula todo excepto para los instrumentos como #AA en este caso devuelve cero, me pregunto por qué? cómo entonces para calcular el margen para tales instrumentos

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
 
He descubierto por qué la primera opción no funcionaba, tenía que escribir la función
SymbolInfoTick(SymbolName(i,false),pr);
en el cuerpo del bucle para obtener la cotización del símbolo solicitado.
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 pregunta sobre los valores nulos de los instrumentos de tipo #AA sigue siendo pertinente
 
sergey1294:

escribió este script para comprobar la función

Devuelve el error 4002, ¿qué he hecho mal?


sergey1294:
He descubierto por qué la primera versión no funcionaba, debería haber escrito la función en el cuerpo del bucle para obtener las comillas del símbolo solicitado.

Simplemente decides ayudar... :)

PS

No sé los demás, pero el mercado está un poco cerrado para #AA...

 
¿Entiendo correctamente que un código del tipo
AccountInfoDouble(ACCOUNT_FREEMARGIN) - OrderCalcMargin();
es un análogo de la función MT4
AccountFreeMarginCheck()
 
sergey1294:
También tengo una pregunta, ¿he entendido bien que este tipo de código es un análogo de la función de MT4?

Si no hay posiciones abiertas la afirmación será probablemente correcta, si hay posiciones abiertas el panorama es un poco diferente...