Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 916

 
Zorian43:
Всем добрый вечер! Не знаю, в той ли теме пишу, извините, если не в той. При установке Metatrader 5 на андроид демо-счет создался автоматически и при каждом запуске приложения к нему сразу осуществлялось подключение. Когда я захотел подключить к приложению ещё один счёт уже от брокера, не нашёл, где могу посмотреть пароль от демо-счета. В итоге нажал "сбросить пароль" и после этого к демо уже никак не могу подключиться. Подскажите, пожалуйста, есть ли способ восстановить доступ к этому счету? 
Нет. Откройте новый демо счет.
 

Здравствуйте!

Подскажите, пожалуйста, по какой причине метод CAccountInfo::MarginCheck() может возвращать требуемую маржу ноль в тестере? Возвращает ноль только при вызове для лимитного ордера на покупку ORDER_TYPE_BUY_LIMIT.

Инструмент Si-9.18 - фьючерс на доллар от ММВБ.

В тестовом проекте следущий вызов в тестере даёт не ноль, а 90 - маленькое значение, что выглядит совсем непрадоподобным:

ENUM_ORDER_TYPE     orderType   = NULL;
uint                orderVolume = 1;
double              orderPrice  = gvTick.last;
double marginRequired = 0;

orderType       = ORDER_TYPE_BUY_LIMIT;
marginRequired  = gnCAccountInfo.MarginCheck( gsIns, orderType, orderVolume, orderPrice);
Print("  Требуемая маржа ", marginRequired);
Вывод в журнал:
2018.09.01 13:38:56.040	2018.06.13 12:10:00     Требуемая маржа 90.0

 
rel18:

Здравстсвуйте!

Подскажите, пожалуйста, по какой причине метод CAccountInfo::MarginCheck() может возвращать требуемую маржу ноль в тестере? Возвращает ноль только при вызове для лимитного ордера на покупку ORDER_TYPE_BUY_LIMIT.

Инструмент Si-9.18 - фьючерс на доллар от ММВБ.

В тестовом проекте следущий вызов в тестере даёт не ноль, а 90 - маленькое значение, что выглядит совсем непрадоподобным:

Подозреваю потому-что запрашивать нужно только

ORDER_TYPE_BUY

Market Buy order

ORDER_TYPE_SELL

Market Sell order

 
Vladimir Karputov:

Подозреваю потому-что запрашивать нужно только

ORDER_TYPE_BUY

Market Buy order

ORDER_TYPE_SELL

Market Sell order

Вот результат выполнения лимитного ордера на покупку в тестере для того же примера. Маржа 90 - очень маленькая, разве так бывает?


И вот получил в тестере маржу ноль:



Все тесты на истории проведены с помощью реального счёта.
 

Перестал работать индикатор, помогите откомпилировать 
Спасибо.

Файлы:
VP-Range-v6.mq5  44 kb
VP-v6.mq5  42 kb
 
rel18:

Вот результат выполнения лимитного ордера на покупку в тестере для того же примера. Маржа 90 - очень маленькая, разве так бывает?


Может, дело в демо-счете? Попробуйте на реале у того же брокера.

 
Aliaksei Karalkou:

Перестал работать индикатор, помогите откомпилировать 
Спасибо.

Начиная с 1861 билда появилась встроенная функция iBarShift, ее нельзя использовать в качестве пользовательской. Переименуйте функцию.

 

Здравствуйте! Помогите решить задачу. Есть значение типа String в формате "PERIOD_M1" "PERIOD_M2" "PERIOD_M3"  и т.д.. Нужно эти значения заменить на значения типа ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 соответственно и т.д.. 

в ПРИМЕРЕ ниже все бы хорошо, но нельзя использовать в выражении switch строковую переменную, как быть? Можно было бы использовать просто конструкцию if....else, но думаю есть более изящные способы. Какие предложения есть? Спасибо!

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   ENUM_TIMEFRAMES tfr=Period();
   switch(timeframe) 
     {
      case "M1"  : tfr=PERIOD_M5;  break;
      case "M2"  : tfr=PERIOD_M6;  break;
      case "M3"  : tfr=PERIOD_M5;  break;
      }
//---
   return(tfr);
  }
 
Tango_X:

Здравствуйте! Помогите решить задачу. Есть значение типа String в формате "PERIOD_M1" "PERIOD_M2" "PERIOD_M3"  и т.д.. Нужно эти значения заменить на значения типа ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 соответственно и т.д.. 

в ПРИМЕРЕ ниже все бы хорошо, но нельзя использовать в выражении switch строковую переменную, как быть? Можно было бы использовать просто конструкцию if....else, но думаю есть более изящные способы. Какие предложения есть? Спасибо!

Используйте if() конструкции

 
Tango_X:

Здравствуйте! Помогите решить задачу. Есть значение типа String в формате "PERIOD_M1" "PERIOD_M2" "PERIOD_M3"  и т.д.. Нужно эти значения заменить на значения типа ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 соответственно и т.д.. 

в ПРИМЕРЕ ниже все бы хорошо, но нельзя использовать в выражении switch строковую переменную, как быть? Можно было бы использовать просто конструкцию if....else, но думаю есть более изящные способы. Какие предложения есть? Спасибо!

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   return
     (
      timeframe == "M1"   ?  PERIOD_M1  :
      timeframe == "M2"   ?  PERIOD_M2  :
      timeframe == "M3"   ?  PERIOD_M3  :
      timeframe == "M4"   ?  PERIOD_M4  :
      timeframe == "M5"   ?  PERIOD_M5  :
      timeframe == "M6"   ?  PERIOD_M6  :
      timeframe == "M10"  ?  PERIOD_M10 :
      timeframe == "M12"  ?  PERIOD_M12 :
      timeframe == "M15"  ?  PERIOD_M15 :
      timeframe == "M20"  ?  PERIOD_M20 :
      timeframe == "M30"  ?  PERIOD_M30 :
      timeframe == "H1"   ?  PERIOD_H1  :
      timeframe == "H2"   ?  PERIOD_H2  :
      timeframe == "H3"   ?  PERIOD_H3  :
      timeframe == "H4"   ?  PERIOD_H4  :
      timeframe == "H6"   ?  PERIOD_H6  :
      timeframe == "H8"   ?  PERIOD_H8  :
      timeframe == "H12"  ?  PERIOD_H12 :
      timeframe == "D1"   ?  PERIOD_D1  :
      timeframe == "W1"   ?  PERIOD_W1  :
      timeframe == "MN1"  ?  PERIOD_MN1 : 
      PERIOD_CURRENT
     );
  }
//+------------------------------------------------------------------+
Причина обращения: