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

 
Уважаемые, возникла необходимость программно определить на каком временном интервале будет проходить оптимизация. Подскажите, есть ли такая возможность? В OnInit.
 
Anzhela Sityaeva:

Запятая не играет роли в формуле, вы правильно заметили, она просто отделяет значение от типа, для облегчения понимания не больше. 5 класс это давно было :), да и с математикой ни когда не дружила, так уж получилось. Но о порядке выполнения действий помню.

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

Смею предположить что вы родились когда я уже закончил не только пятый класс, но и несколько следующих. Так-что для меня это было как вчера... А если вы помните о порядке выполнения действий, то почему возникает такой вопрос с вашей голове? Если в результате вычислений получается одинаковый результат разве может быть один из вариантов правильнее другого? Ну ведь очевидно что никакой разницы.
 
Alexey Viktorov:
Смею предположить что вы родились когда я уже закончил не только пятый класс, но и несколько следующих. Так-что для меня это было как вчера... А если вы помните о порядке выполнения действий, то почему возникает такой вопрос с вашей голове? Если в результате вычислений получается одинаковый результат разве может быть один из вариантов правильнее другого? Ну ведь очевидно что никакой разницы.
У девушки не принято спрашивать о возрасте, да это и не имеет отношения к сути вопроса. Мне нужно было мнение кого-то кто в теме и кроме меня самой, сомнения, знаете :)
 
Anzhela Sityaeva:
У девушки не принято спрашивать о возрасте, да это и не имеет отношения к сути вопроса. Мне нужно было мнение кого-то кто в теме и кроме меня самой, сомнения, знаете :)

Я и не спрашивал о вашем возрасте. Я только предположил, что вы ещё очень молоды и только притворяетесь что уже ничего не помните.

 
Decromor:

Всем здрасти...

Пытаюсь из советника удалить им же добавленный индикатор. Делаю так:

В индикаторе:

Индикатор добавляется, номер подокна и короткое имя верное, но при удалении ошибка:

2019.05.08 12:01:10.068 2019.04.03 12:39:31   Не удалось удалить индикатор blablabla с окна №2. Код ошибки 4014

4014 - "Системная функция не разрешена для вызова". Подскажите, пожалуйста, что это значит, как удалить индикатор?

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

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

Верно? Может есть ещё варианты?

 
Decromor:

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

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

Верно? Может есть ещё варианты?

Эксперту индикатор на графике как собаке поворотки.

 
Alexey Viktorov:

Эксперту индикатор на графике как собаке поворотки.

Для настройки эксперта самое-то.

Я именно так его и добавляю, а удалить не получается.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Decromor, 2019.05.08 09:17

Всем здрасти...

Пытаюсь из советника удалить им же добавленный индикатор. Делаю так:

//Объявляю переменные
int win_ind=-1,
    handle_ind = INVALID_HANDLE;

//Создаю
   handle_ind= iCustom(NULL,0,"ind");
   if(handle_ind== INVALID_HANDLE){
      Print("Не удалось создать индикатор. Код ошибки: ",GetLastError());
      return(false);
   }
   win_ind=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); //--- получим номер нового подокна, в которое добавим индикатор 
   if(!ChartIndicatorAdd(0,win_ind,handle_ind)){
      Print("Не удалось добавить индикатор на окно графика. Код ошибки: ",GetLastError());
      return(false);
   }

//Удаляю
   string name = ChartIndicatorName(0, win_ind, 0);
   bool res = ChartIndicatorDelete(0, win_ind, name); 
   if (!res) PrintFormat("Не удалось удалить индикатор %s с окна №%d. Код ошибки %d", name,win_ind,GetLastError());

В индикаторе:

int OnInit(){
   IndicatorSetString(INDICATOR_SHORTNAME,"blablabla");

Индикатор добавляется, номер подокна и короткое имя верное, но при удалении ошибка:

2019.05.08 12:01:10.068 2019.04.03 12:39:31   Не удалось удалить индикатор blablabla с окна №2. Код ошибки 4014

4014 - "Системная функция не разрешена для вызова". Подскажите, пожалуйста, что это значит, как удалить индикатор?


 
Decromor:

Для настройки эксперта самое-то.


Это не ответ на мой вопрос. Точней сказать реплику. Тогда ставлю свою мысль в виде вопроса: Зачем советнику индикатор на графике?

Если надо отказаться от неиспользуемого хендла индикатора, то для этого есть другая функция. А сам-то индикатор на графике для каких целей?

 
Есть готовое решение что б велосипед не изобретать?
Надо ответить на простой вопрос - сколько закрытых сделок (назовем это так) было в истории (по конкретной паре или за период это не важно, главное принцип). Как я понял в mql5 это не тривиальная задача. Даже названия нет у этой сущности ))
 
Evgeny Dyuka:
Есть готовое решение что б велосипед не изобретать?
Надо ответить на простой вопрос - сколько закрытых сделок (назовем это так) было в истории (по конкретной паре или за период это не важно, главное принцип). Как я понял в mql5 это не тривиальная задача. Даже названия нет у этой сущности ))

Почему нет?

bool  HistorySelect(
   datetime  from_date,     // с даты
   datetime  to_date        // по дату
   );

а дальше в цикле отсеиваем всё что нужно.

Или по конкретной позиции.

bool  HistorySelectByPosition(
   long   position_id     // идентификатор позиции - POSITION_IDENTIFIER
   );
Документация по MQL5: Торговые функции / HistorySelect
Документация по MQL5: Торговые функции / HistorySelect
  • www.mql5.com
Функция HistorySelect() создает в mql5-программе список ордеров и список сделок для дальнейшего обращения к элементам списка посредством соответствующих функций. Размер списка сделок можно узнать с помощью функции HistoryDealsTotal(), размер списка ордеров в истории можно получить с HistoryOrdersTotal(). Перебор элементов списка ордеров лучше...