Ошибки, баги, вопросы - страница 42

 
Kos:
Какой смысл компилировать такую конструкцию, если это приведет к невозможности загрузки MQL5-программы?

Спасибо за сообщение. Ошибка разбора NULL для сonditional оператора исправлена.
 

Каково максимальное количество динамических массивов  в индикаторе?

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

Каково максимальное количество динамических массивов  в индикаторе?

Ограничения диктуются вашими аппаратными ресурсами.

Насколько хватит памяти. 

 
dentraf:

Каково максимальное количество динамических массивов  в индикаторе?

Индикаторных массивов не более 512. Вообще любых массивов - сколько хватит памяти
 

написал такой скрипт для проверки функции

OrderCalcMargin()

возвращает ошибку 4002, что я не так сделал?

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());

     }
  }
 

странно если не использовать структуру запроса текущих цен то все считает за исключением инструментов типа #AA  в данном случае возвращает ноль, интересно почему? как тогда рассчитать маржу для подобных инструментвов

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
 
все разобрался почему первый вариант не работал, надо было прописать функцию 
SymbolInfoTick(SymbolName(i,false),pr);
в тело цикла для получения котировок запрашиваемого инструмента.
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());

     }
  }
вопрос по поводу нулевых значений инструментов типа #AA остается актуальным
 
sergey1294:

написал такой скрипт для проверки функции

возвращает ошибку 4002, что я не так сделал?


sergey1294:
все разобрался почему первый вариант не работал, надо было прописать функцию  в тело цикла для получения котировок запрашиваемого инструмента. вопрос по поводу нулевых значений инструментов типа #AA остается актуальным

Ну вот, только решишь помочь... :)

PS

Не знаю как все остальные, но по #AA рынок вроде как закрыть...

 
еще такой вопрос правильно я понимаю что код типа
AccountInfoDouble(ACCOUNT_FREEMARGIN) - OrderCalcMargin();
  является аналогом функции из MT4
AccountFreeMarginCheck()
 
sergey1294:
еще такой вопрос правильно я понимаю что код типа  является аналогом функции из MT4

Если открытых позиций нет то наверно утверждение скорей всего будет верным, при наличии открытых позиций будет немного иная картина...
Причина обращения: