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

 

всем добрый день! такая вот проблема случилась! тестировал советника на МТ4, весь день тестировал, в итоге смотрю к вечеру не осталось памяти на жёстком диске, сразу понял что это из-за тестов, решил почистить , зашёл в винде в папку  MetaQuotes, и поудалял дурак там многое, в итоге все платформы слетели, и мт4 и мт5, штук 10 было в общем количестве, они запускаются, но они совсем "чистые" -ни индикаторов из маркета, ни советников, ничего нет! мне был дорог один советник в одном терминале мт5, копию я не сохранял, активаций нет больше, что делать ?!

решил при помощи программы восстановить удалённые файлы, файл советника удалось восстановить, закинув в папку expert при обновлениии терминал его просто не видит, а скачать с аккаунта маркета просто не получается, пишет установка не удалась! может кто сталкивался с таким? подскажите

Файлы:
 

Помогите пожалуйста справиться с одной проблемой! 

Я только учусь писать коды и в связи с этим прошу Вас быть снисходительными к моей не грамотности.

  

Помогите разобраться с функцией OnChartEvent, которая при изменении тайм фрейма, или изменении настроек в меню индикатора - будет обновлять графические объекты на графике, а при закрытии индикатора - будет полностью удалять с графика все графические объекты - этого индикатора. 

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда,  как по новой создать эти объекты....... , или я что то не понимаю ? А может быть есть другой способ - обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.


 
Sprut 185:

Помогите пожалуйста справиться с одной проблемой! 

Я только учусь писать коды и в связи с этим прошу Вас быть снисходительными к моей не грамотности.

  

Помогите разобраться с функцией OnChartEvent, которая при изменении тайм фрейма, или изменении настроек в меню индикатора - будет обновлять графические объекты на графике, а при закрытии индикатора - будет полностью удалять с графика все графические объекты - этого индикатора. 

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда,  как по новой создать эти объекты....... , или я что то не понимаю ? А может быть есть другой способ - обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.


Не сочтите за грубость, но ведь в документации есть все примеры. Вам только надо обратить внимание на функции ObjectSet*** которые изменяют параметры графического объекта.

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

Не сочтите за грубость, но ведь в документации есть все примеры. Вам только надо обратить внимание на функции ObjectSet*** которые изменяют параметры графического объекта.

Спасибо за участие.

К сожалению функция  ObjectSet***  не подошла для моей задачи.

С проблемой разобрался сам с помощью функции OnDeinit().
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll (0, -1, -1);
  }

теперь всё работает - как надо.

 
Sprut 185:

Спасибо за участие.

К сожалению функция  ObjectSet***  не подошла для моей задачи.

С проблемой разобрался сам с помощью функции OnDeinit().

теперь всё работает - как надо.

Но ведь в вашем вопросе есть такие слова

Sprut 185:

Помогите пожалуйста справиться с одной проблемой! 

Я только учусь писать коды и в связи с этим прошу Вас быть снисходительными к моей не грамотности.

  

Помогите разобраться с функцией OnChartEvent, которая при изменении тайм фрейма, или изменении настроек в меню индикатора - будет обновлять графические объекты на графике, а при закрытии индикатора - будет полностью удалять с графика все графические объекты - этого индикатора. 

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда,  как по новой создать эти объекты....... , или я что то не понимаю ? А может быть есть другой способ - обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.

И для того, чтобы не удалять, достаточно просто изменить нужное свойство объекта одной из функций ObjectSet*** .

А что касается удаления всех объектов……… Надо быть очень осторожным удаляя все без разбору… Среди объектов на графике могут находиться объекты созданные руками или другим советником\индикатором. Если вас устраивает вариант с удалением объектов, то уж обратите внимание на удаление по префиксу. Правда и создавать надо с префиксом. Это не сложно.

 
Какой результат выдаёт функция 

iSpread ?


Смотрю он примерно похож значению спреда если сделать запрос баров в Символах/Бары в терминале.

При этом естественно эти значения не соответствуют реальным значениям выдаваемым SYMBOL_SPREAD.

Почему такая разница? И какой такой нереальный спред выдаётся по iSpread ?

 
Aleksei Skrypnev:
Какой результат выдаёт функция 

iSpread ?


Смотрю он примерно похож значению спреда если сделать запрос баров в Символах/Бары в терминале.

При этом естественно эти значения не соответствуют реальным значениям выдаваемым SYMBOL_SPREAD.

Почему такая разница? И какой такой нереальный спред выдаётся по iSpread ?

Минимальный спред в баре. 

Для проверки я добавил один буфер - он берет данные с индикаторного массива spread[] и для текущего бара выводит на экран комментарий - результат iSpread


Как запускать инструкция здесь: Spread Control

Spread Control
Spread Control
  • www.mql5.com
Просмотр спреда
Файлы:
 

Приветствую!

Подскажите такой момент: почему переменная "ATR14" не меняется?  И как сделать чтобы видеть её изменение?

void OnTick()
{

double ATR14=iATR(NULL,PERIOD_CURRENT,14);

Comment(
 
      "ATR14==: ",ATR14,"\n");
}
 
Alexey Belyakov:

Приветствую!

Подскажите такой момент: почему переменная "ATR14" не меняется?  И как сделать чтобы видеть её изменение?

Потому, что в MQL5 хендл индикатора (и он, кстати имеет тип int) создаётся ОДИН раз и делается это в OnInit.

А для получения данных с индикатора используется CopyBuffer.

 
Vladimir Karputov:

Потому, что в MQL5 хендл индикатора (и он, кстати имеет тип int) создаётся ОДИН раз и делается это в OnInit.

А для получения данных с индикатора используется CopyBuffer.

Такс, ну допустим 

double  ATR14m[];   

int ATR14;

int OnInit()
  {
ATR14=iATR(NULL,PERIOD_CURRENT,14);
  return(0);   
  }
  
  
void OnDeinit(const int reason)
  {
//---  
  }


void OnTick()
{
CopyBuffer(ATR14,0,0,3,ATR14m);



Comment(

      "ATR14==: ",ATR14,"\n");

}



Ничего не изменилось