Отзыв о MQL5 - страница 4

 

Прокладки не сделаешь никак

Множественного наследования нет ни в каком виде

Непонятные указатели

Нет ссылок

Непонятная политика копирования структур. Да и классов.

Нет нормального описания ошибок и предупреждений компилятора с примерами

Проблемы с типизацией у целочисленных типов (и енумов вроде)

Это навскидку.

Просто все привыкли. Кодить можно, но отличным и чудесным язык MQL5 точно не назовешь

 
разработчикам можно только посочувствовать, одним упрощения подавай, что бы всё было просто, другим все возможности высокоуровневых языков и нужно и тем и другим угодить и ещё что бы всё работало )
 
Renat Fatkhullin:

Посмотрите вот сюда, пожалуйста: https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

Вообще маржа в общем случае не может быть рассчитана на основе одного инструмента, так как она является результирующей суперпозицией разных позиций/инструментов. Кроме того, при биржевом исполнении расчет маржи может быть передан(биржа так требует) самой бирже, которая на основе своей сложной и закрытой логике выдает итоговую маржу.

Для интегральной оценки "хватит ли мне маржи, если я совершу вот эту транзакцию" есть штатная функция OrderCalcMargin: https://www.mql5.com/ru/docs/trading/ordercalcmargin

Вот код

string txt=NULL;
double GetMarginInitial=0,GetMarginMain=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL,GetMarginInitial))
     {
      Print(" SYMBOL_MARGIN_INITIAL ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)(GetMarginInitial*SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN));

   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_MAINTENANCE,GetMarginMain))
     {
      Print(" SYMBOL_MARGIN_MAINTENANCE ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)GetMarginMain;
   
   Comment(txt);
   
   return(INIT_SUCCEEDED);
  }

На фьючах показывает начальные залоговые требования для одного лота 5800 рур, а при использовании этого кода на форексе пишет 0 ...

В справке написано

SYMBOL_MARGIN_INITIAL

Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. Используется при проверке средств клиента при входе в рынок.


И не чего более не указано .... Как рассчитать залог для валют ??? Выход только один я вижу, определять тип инструмента, и дальше считать по формулам ...

 
Vladimir Pastushak:

Вот код

На фьючах показывает начальные залоговые требования для одного лота 5800 рур, а при использовании этого кода на форексе пишет 0 ...

А в справке написано

SYMBOL_MARGIN_INITIAL

Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. Используется при проверке средств клиента при входе в рынок.


И не чего более не указано ....

Да, этот параметр для контроля маржевых требований для фьючерсов.

Хотя для форекса можем (нужно сделать) сами пересчитывать и отдавать грубое (так как не знаем, что хочет сделать трейдер - купить или продать) значение маржи на 1 лот.

 
Фьючерсные объемы для МТ:

Прокладки не сделаешь никак

Множественного наследования нет ни в каком виде

Это сделаем чуть позже. Обычное наследование есть.


Непонятные указатели

Нет ссылок

Есть ссылки и указатели. Безопасные и контролируемые.


Непонятная политика копирования структур. Да и классов.

Как раз понятные - вчистую автоматически копируются структуры с простыми (не динамическими) полями. Для остальных пишите функцию копирования.

Мы уже запланировали расширить механизм копирования структур с некоторыми (без классов) динамическими типами. Это облегчит большую часть работы.


Нет нормального описания ошибок и предупреждений компилятора с примерами

Тексты сообщений об ошибках и предупреждения одинаковы/похожи на другие компиляторы. Тут никто велосипедов не изобретал.


Проблемы с типизацией у целочисленных типов (и енумов вроде)

В приоритете жесткость типов. Поэтому не разрешается сишная свобода опасных присвоений и конвертаций.


Язык продолжает развиваться и скоро после выпуска в релиз нового оптимизирующего компилятора (сейчас включается через Optimize=1) мы серьезно проапгрейдим MQL4/MQL5 компилятор.

 
Serhiy Dotsenko:
дак уже ш писали, как можно в VS, править mql код, компилировать нельзя, но можно ш править в VS, а f7 в ME нажимать )

Заинтересовался... где писали? а если захочу стандартные классы использовать, то найдется или придется по памяти печатать?

К коду уже привык, а вот к редактору ну никак не могу привыкнуть, после других редакторов, как будто на блокнот перешел :) 

 
sigma7i:

Заинтересовался... где писали? а если захочу стандартные классы использовать, то найдется или придется по памяти печатать?

К коду уже привык, а вот к редактору ну никак не могу привыкнуть, после других редакторов, как будто на блокнот перешел :) 

Редактор тоже проапгрейдим, просто приоритеты другие были.

Возможно, откроем путь для плагинов.

 
Renat Fatkhullin:

Да, этот параметр для контроля маржевых требований для фьючерсов.

Хотя для форекса можем (нужно сделать) сами пересчитывать и отдавать грубое (так как не знаем, что хочет сделать трейдер - купить или продать) значение маржи на 1 лот.

На индексы цфд так же возвращаются нули ...  В справке есть формулы которых в принцепе достаточно но они не раскоментированы...

Может кто то знает что такое


Margin: (Lots*ContractSize*MarketPrice*Percentage)/Leverage

Profit:  (close_price-open_price)*Contract_Size*Lots


Percentage  - что это за процент такой ? 
 
Vladimir Pastushak:


Margin: (Lots*ContractSize*MarketPrice*Percentage)/Leverage

Profit:  (close_price-open_price)*Contract_Size*Lots


Percentage  - Об этом даже никто нигде в документации неи слова не говорит...

Посмотрите в справке терминала - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
 
Rashid Umarov:
Посмотрите в справке терминала - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
Получить эти коэффициенты можно с помощью SymbolInfoMarginRate, попробуйте