Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2463

 
JRandomTrader #:

Когда-то давно столкнулся с тем, что OrderCheck() иногда, в каких-то редких условиях, возвращает false, хотя реально средств достаточно и ордер успешно отправляется (неттинг, ФОРТС, Открытие).

Поскольку ситуация трудновоспроизводимая, не стал исследовать, что именно в таком случае возвращается в структуре, а просто отказался от использования этой функции.

Я не совсем помню причину, но проблема была при использовании  OrderCheck() из СБ. Какое-то время тоже отказался, но потом решил проверить как будет работать с самостоятельно заполненной структурой  MqlTradeRequest и вроде бы никаких нареканий пока нет уже достаточно давно.

 
Привет всем , что нужно чтобы у советника на терминале mt5 был дублирующий файл но с расширением «mql5 Sourse file” ? У меня только mql5 program”. Все стандартные советники имеют по 2 файла  
Файлы:
image.jpg  7082 kb
 
Alex-1 #:
Привет всем , что нужно чтобы у советника на терминале mt5 был дублирующий файл но с расширением «mql5 Sourse file” ? У меня только mql5 program”. Все стандартные советники имеют по 2 файла  
Я заметил что в навигаторе видны советники с расширением Source file только 
 
Закройте папку с файлами терминала. Забудьте про нее. Запустите терминал и там файл-открыть каталог данных. В нем есть папка mql5, там папка experts. Туда и положите свой эксперт, перезапустите терминал. И там появится, то что Вы хотели
 
Alexey Viktorov #:

На счёте MQ-Demo всё вроде как работает. Сделайте упрощённый код для проверки, покажите всем… Может подскажут в чём ошибка.


Я пользуюсь функцией OrderCheck() и не смотрите, что там написано 

Достаточно посмотреть структуру 

и увидим, что и баланс, и эквити после сделки покажет, и маржу, и прочее… И пользоваться этой функцией вовсе не напряжно. Структура запроса MqlTradeRequest заполняется по-любому. Так вот её делаем на глобальном уровне, заполняем, проверяем и прямо с этой структурой отправляем OrderSend(). Правда есть беда в том, что в СБ она работает как-то не так. Я не понял причину, просто для открытия позиции не стал пользоваться СБ.

OrderCheck() ничем не отличается от OrderCalcMargin. 

То есть OrderCheck точно так же не работает там, где не работает  OrderCalcMargin.

Но вопрос не в том, почему не работает  OrderCalcMargin или  OrderCheck. Оставим их в покое. Вообще забудем и не будем вспоминать.

Вопрос в том, почему не получается получить маржу с помощью формул написанных в справке???

Простой код, который я писал выше, продублирую ещё раз.

void Margin()
  {
   double MarginInit = 0, MarginMain = 0, Lots = 1;
   if(!SymbolInfoMarginRate(_Symbol, ORDER_TYPE_BUY, MarginInit, MarginMain))
      return ;

   double InitialMargin  =  SymbolInfoDouble(_Symbol, SYMBOL_MARGIN_INITIAL);
   double MaintenanceMargin  =  SymbolInfoDouble(_Symbol, SYMBOL_MARGIN_MAINTENANCE);
   double margin = 0;

// Lots * Contract_Size / Leverage * Margin_Rate
   if((ENUM_SYMBOL_CALC_MODE)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_CALC_MODE) == SYMBOL_CALC_MODE_FOREX)
      margin = Lots * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE) / AccountInfoInteger(ACCOUNT_LEVERAGE) * MarginInit;

   Print(_Symbol, "; margin =", margin);
  }

Не будем проверять его на кросах и на обратных парах, только на прямых.

И всё равно если объём больше трёх расчет получается не верным.

В чём ошибка? Как исправить.

 
Alexey Viktorov #:

Я не совсем помню причину, но проблема была при использовании  OrderCheck() из СБ. Какое-то время тоже отказался, но потом решил проверить как будет работать с самостоятельно заполненной структурой  MqlTradeRequest и вроде бы никаких нареканий пока нет уже достаточно давно.

СБ я перестал пользоваться для торговли ещё до того.

 
Aleksei Stepanenko #:
Закройте папку с файлами терминала. Забудьте про нее. Запустите терминал и там файл-открыть каталог программы. В нем есть папка mql5, там папка experts. Туда и положите свой эксперт, перезапустите терминал. И там появится, то что Вы хотели
Не появилось к сожалению ничего, всё по прежнему (
 
А я понял, у Вас исполняемый файл .ex5, но нет исходника. Вы не сможете воссоздать исходник из исполняемого файла. Но этот файл, который у вас есть должен работать, если он рабочий. Если Вы добавили его, туда куда я говорил и перезапустили терминал, то он должен появится в терминале

 
Aleksei Stepanenko #:
А я понял, у Вас исполняемый файл .ex5, но нет исходника. Вы не сможете воссоздать исходник из исполняемого файла. Но этот файл который у вас есть должен работать, если он рабочий. Если Вы добавили его, туда куда я говорил и перезапустили терминал, то он должен появится в терминале

Я добавил всё как положено , но ничего не появилось , мало того, я поменял терминал от другого брокера - так-же. 
Может ли винда 7 ограничить какие то действия в терминале ?
Советник рабочий , параллельно он работает как минимум у 10 чел 
 
Скачайте файл любого советника из Codobase и попробуйте установить. Если получается, то дело в Вашем советнике, если нет, значит Вы делаете что-то не так