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

 
Alexey Volchanskiy:
Youtube принимает все файлы в avi, если там нет рекламы насилия, порнухи, и размер вроде < 15 мб, если у вас не расширенный режим. Еще не должно быть рекламы, в т.ч. и в подписи
Отправил вам в ЛС. У меня не получается.
 
Karputov Vladimir:

Здесь технический форум и каждое замечание должно подтверждаться:

  • информацией о терминале и о операционной системе (первые три строки из вкладки "Журнал" после перезапуска терминала)
  • кодом
  • подробным описанием того, что делали и что получили.

Довольно подробно описал то, что наблюдал. Мне разработчики ничего не должны, и я им ничего не должен. Заинтересуются - пообщаемся в сервисдеске.

Код пустого индикатора очевиден.

 
comp:

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

Хостинги видео файл не принимают. Если нужно, могу в сервисдеск скинуть, как есть.

Запакуйте в архив и отправьте. Zip-ы поддерживаются.
 
Скажите, пожалуйста, как программно включать/выключать "Точную шкалу времени" в MetaTrader 5. Что-то не могу это найти.
Через CHART_SHOW_DATE_SCALE - это, как понимаю, не то.

Вручную интересующее включается по следующему пути:

Терминал  ->  Сервис  ->  Настройки  ->  Графики  ->  Точная шкала времени


Ниже прилагаю тестовый код. Если в торговом терминале вручную включить "Точную шкалу времени", то этот тестовый индикатор строит вертикальные отрезки линий с точками привязок между двумя барами. Если не включать, то не между барами.

На скрине ниже вертикальный отрезок линии, созданной тестовым кодом между барами, когда включена "Точная шкала времени"



Сразу скажу и второе, что интересует:

Если запустить этот код в тестере, то линии не строятся точками привязок между барами. Создаются не как на скрине выше, а как на скрине ниже.

MetaTrader 5 Version: 5.00 build 1295

Тут пока не знаю как точнее задать вопрос, не имея ответа на первый.



P./S.:

Внесла уточнения:

  • добавила скрины;
  • заменила тестовый код, убрав из него остававшиеся от варианта до сокращений перед выкладкой не используемую здесь переменную и отображение отдельного окна;
  • внесённые по тексту уточнения выделила тёмно-синим цветом шрифта.
Файлы:
 

Как в MT5 заставить САМ терминал вызвать OnCalculate? ChartRedraw не помогает. DLL-вариант не подходит.

Иными словами, нужно создать событие Calculate: https://www.mql5.com/ru/docs/runtime/event_fire#calculate

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Исходя из результатов поиска по сайту пришла к выводу, что вроде точно пока ещё нет в Справке по MQL5 функции, с помощью которой можно программно включать/выключать "Точную шкалу времени" в MetaTrader 5.

У меня почему-то отложилось, что в последние времена какие-то изменения были в этом плане. Хотя конечно, видимо ошибаюсь.

Если так, то переформулирую свой первый вопрос выше:

Будет ли введена функция для программного включения/выключения "Точной шкалы времени"?


И в любом случае (будет или не будет введена): как делать в тестере это включение/выключение?

 
comp:

Как в MT5 заставить САМ терминал вызвать OnCalculate? ChartRedraw не помогает. DLL-вариант не подходит.

Если найдете, мне тоже скажите )

На данный момент насколько я знаю ответ "никак".

 
Комбинатор:

Если найдете, мне тоже скажите )

На данный момент насколько я знаю ответ "никак".

Если советником, то так

#define PERIOD_NULL -1

void CallOnCalculates( void )
{
  const string Name = __FUNCTION__;

  if (GlobalVariableCheck(Name))
  {
    const int Value = (int)GlobalVariableGet(Name);

    if (Value == PERIOD_NULL)
    {
      GlobalVariableDel(Name);

      ExpertRemove();
    }
    else if (ChartSetSymbolPeriod(0, Symbol(), (ENUM_TIMEFRAMES)Value))
      GlobalVariableSet(Name, PERIOD_NULL);
  }
  else
  {
    const ENUM_TIMEFRAMES period = Period();

    if (ChartSetSymbolPeriod(0, Symbol(), (period == PERIOD_MN1) ? PERIOD_W1 : PERIOD_MN1))
    {
      GlobalVariableTemp(Name);

      GlobalVariableSet(Name, period);
    }
  }

  return;
}

void OnInit( void )
{
  CallOnCalculates();

  return;
}

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

 
comp:

Если советником, то так

Если скриптом, то можно (реализация совсем иная - без изменения ТФ) вызывать OnCalculate уже какого-то конкретного индикатора на чарте, либо всех сразу.

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

Но такой (скрипт) вариант тоже не подходит, если индикатор должен заставить терминал вызвать свой же OnCalculate (MT5).

 
Индикатором, мне надо индикатором.