В документации сказано, что для вызова сторонних индикаторов нужно применять функцию iCustom.
В данной функции вторым параметром является timeframe. Если у меня в индикаторе этот параметр выступает отдельно, и я его буду указывать дальше в параметрах функции iCustom, после параметра name есть же место, чтобы вписать список параметр передаваемых их индикатора.
Так вот. Я в любом случае буду с индикатора передавать параметр таймфрейма, который в индикаторе необходим. Если указывать тот же параметр в 2 местах, это не логично. Тогда как правильнее поступить?
В документации сказано, что для вызова сторонних индикаторов нужно применять функцию iCustom.
В данной функции вторым параметром является timeframe. Если у меня в индикаторе этот параметр выступает отдельно, и я его буду указывать дальше в параметрах функции iCustom, после параметра name есть же место, чтобы вписать список параметр передаваемых их индикатора.
Так вот. Я в любом случае буду с индикатора передавать параметр таймфрейма, который в индикаторе необходим. Если указывать тот же параметр в 2 местах, это не логично. Тогда как правильнее поступить?
Всё в порядке. Всё надо указать. Второй параметр это ТФ, на котором физически прикрепляется индикатор, пользовательский ТФ это откуда индикатор берёт данные для расчёта. Конечно, можно второй параметр убрать из кода индикатора, если есть логика в этом.
Zhunko: Всё в порядке. Всё надо указать. Второй параметр это ТФ, на котором физически прикрепляется индикатор, пользовательский ТФ это откуда индикатор берёт данные для расчёта. Конечно, можно второй параметр убрать из кода индикатора, если есть логика в этом.
Теперь понятно. Благодарю.
Только вот те же параметры, что в индикаторе нужно объявить в совке. Получается, что и все значения параметров для правильной совместной работы индикатора и советника должны задаваться одинаково и там и так?
Ведь если вписать переменные в iCustom и не объявить их в советнике, то при компиляции сразу в журнале пишится, что те переменные, которые я вписал не объявлены.
Кто знает, в каком советнике из Code Base можно подсмотреть, как закодирована функция OrderCloseBy() со всеми пирогами. Смотрел скрипт closeby в учебнике, но что-то не догоняю, как сделать функцией, чтобы вызывать из советника и т.д. Может, надоумите, что делать! Спасмбо!
borilunad: Кто знает, в каком советнике из Code Base можно подсмотреть, как закодирована функция OrderCloseBy() со всеми пирогами. Смотрел скрипт closeby в учебнике, но что-то не догоняю, как сделать функцией, чтобы вызывать из советника и т.д. Может, надоумите, что делать! Спасмбо!
Конечно, смотрел! Принцип я понимаю, но не получается, а надо использовать возможность сэкономить на спреде. Потому хотел посмотреть примеры, которые работают. Просматриваю в Code Base, но пока безуспешно. Что-то никто не использует в этих советниках это взаимное закрытие. Надеюсь встретить в сборе, а не по винтикам. Доброй ночи! Может, утро вечера мудренее!
Подскажите как удалять трендовые линии,индикаторы и т.д., на обычном компе в винде я делала правой кнопкой мышки после их выделения, а на imac не знаю как. И еще так же не могу найти как добавить gold в общий список ?
feeje: Подскажите как удалять трендовые линии,индикаторы и т.д., на обычном компе в винде я делала правой кнопкой мышки после их выделения, а на imac не знаю как. И еще так же не могу найти как добавить gold в общий список ?
Доброго времени суток. ЛЮДИ, НУ КТО-НИБУДЬ, ОТВЕТЬТЕ ПОЖАЛУЙСТА НА ВОПРОС (3-й раз уже размещаю). Вопрос по файловому указателю... В книге по MQL4, к-я находится на MQL4.community в главе "Стандартные функции", в разделе "Файловые операции" приведен пример скрипта timetablenews.mq4, к-й предназначен для считывания данных из файла и отображения графических объектов в окне финансового инструмента:
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Ниже, при анализе данного скрипта в Книге по MQL4 приведена следующая фраза: "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9"
Правильно ли я понимаю???... Файловый указатель находится НЕ МЕЖДУ СИМВОЛАМИ ТЕКСТА (напр.: тек|ст, где |— файловый указатель), а является указателем С ВЫДЕЛЕНИЕМ, напр.: текст, где к — символ "к", к-й выделен файловым указателем. Этим и объясняется необходимость наличия строк (см. стр.164):
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Действительно. На предпоследней итерации, после создания ПОСЛЕДНЕГО объекта
файловый указатель находится в позиции последнего объекта, т.е.:
2007.05.11 18:30;JPY Промышленное производство
(где о — символ "о", к-й выделен файловым указателем). Тогда при передаче управления в заголовок оператора while, функция FileIsEnding(handle), очевидно вернет true, т.к. файловый указатель находится НЕ В КОНЦЕ файла, а на ПОСЛЕДНЕМ СИМВОЛЕ этого файла. Тогда при выполнении первых двух строк файловый указатель переместится на ПУСТОЕ место и при отсутствии строк
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
скрипт создаст графический (т.е. линию) с пустым описанием и координатой времени, к-я соответствует 0. Это и имеется в виду во фразе: "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект."
Вопрос: правильно ли я понимаю:
а) определение файлового указателя;
б) смысл фразы "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9"
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
В документации сказано, что для вызова сторонних индикаторов нужно применять функцию iCustom.
В данной функции вторым параметром является timeframe. Если у меня в индикаторе этот параметр выступает отдельно, и я его буду указывать дальше в параметрах функции iCustom, после параметра name есть же место, чтобы вписать список параметр передаваемых их индикатора.
Так вот. Я в любом случае буду с индикатора передавать параметр таймфрейма, который в индикаторе необходим. Если указывать тот же параметр в 2 местах, это не логично. Тогда как правильнее поступить?
В документации сказано, что для вызова сторонних индикаторов нужно применять функцию iCustom.
В данной функции вторым параметром является timeframe. Если у меня в индикаторе этот параметр выступает отдельно, и я его буду указывать дальше в параметрах функции iCustom, после параметра name есть же место, чтобы вписать список параметр передаваемых их индикатора.
Так вот. Я в любом случае буду с индикатора передавать параметр таймфрейма, который в индикаторе необходим. Если указывать тот же параметр в 2 местах, это не логично. Тогда как правильнее поступить?
Всё в порядке. Всё надо указать. Второй параметр это ТФ, на котором физически прикрепляется индикатор, пользовательский ТФ это откуда индикатор берёт данные для расчёта. Конечно, можно второй параметр убрать из кода индикатора, если есть логика в этом.
Теперь понятно. Благодарю.
Только вот те же параметры, что в индикаторе нужно объявить в совке. Получается, что и все значения параметров для правильной совместной работы индикатора и советника должны задаваться одинаково и там и так?
Ведь если вписать переменные в iCustom и не объявить их в советнике, то при компиляции сразу в журнале пишится, что те переменные, которые я вписал не объявлены.
Кто знает, в каком советнике из Code Base можно подсмотреть, как закодирована функция OrderCloseBy() со всеми пирогами. Смотрел скрипт closeby в учебнике, но что-то не догоняю, как сделать функцией, чтобы вызывать из советника и т.д. Может, надоумите, что делать! Спасмбо!
Тут смотрели? https://docs.mql4.com/ru/trading/OrderCloseBy
Тут смотрели? https://docs.mql4.com/ru/trading/OrderCloseBy
Конечно, смотрел! Принцип я понимаю, но не получается, а надо использовать возможность сэкономить на спреде. Потому хотел посмотреть примеры, которые работают. Просматриваю в Code Base, но пока безуспешно. Что-то никто не использует в этих советниках это взаимное закрытие. Надеюсь встретить в сборе, а не по винтикам. Доброй ночи! Может, утро вечера мудренее!
Подскажите как удалять трендовые линии,индикаторы и т.д., на обычном компе в винде я делала правой кнопкой мышки после их выделения, а на imac не знаю как. И еще так же не могу найти как добавить gold в общий список ?
Доброго времени суток. ЛЮДИ, НУ КТО-НИБУДЬ, ОТВЕТЬТЕ ПОЖАЛУЙСТА НА ВОПРОС (3-й раз уже размещаю). Вопрос по файловому указателю... В книге по MQL4, к-я находится на MQL4.community в главе "Стандартные функции", в разделе "Файловые операции" приведен пример скрипта timetablenews.mq4, к-й предназначен для считывания данных из файла и отображения графических объектов в окне финансового инструмента:
Ниже, при анализе данного скрипта в Книге по MQL4 приведена следующая фраза: "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9"
Правильно ли я понимаю???... Файловый указатель находится НЕ МЕЖДУ СИМВОЛАМИ ТЕКСТА (напр.: тек|ст, где | — файловый указатель), а является указателем С ВЫДЕЛЕНИЕМ, напр.: текст, где к — символ "к", к-й выделен файловым указателем. Этим и объясняется необходимость наличия строк (см. стр.164):
Действительно. На предпоследней итерации, после создания ПОСЛЕДНЕГО объекта
2007.05.11 18:30;JPY Промышленное производство
файловый указатель находится в позиции последнего объекта, т.е.:
2007.05.11 18:30;JPY Промышленное производство
(где о — символ "о", к-й выделен файловым указателем). Тогда при передаче управления в заголовок оператора while, функция FileIsEnding(handle), очевидно вернет true, т.к. файловый указатель находится НЕ В КОНЦЕ файла, а на ПОСЛЕДНЕМ СИМВОЛЕ этого файла. Тогда при выполнении первых двух строк файловый указатель переместится на ПУСТОЕ место и при отсутствии строк
скрипт создаст графический (т.е. линию) с пустым описанием и координатой времени, к-я соответствует 0. Это и имеется в виду во фразе: "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект."
Вопрос: правильно ли я понимаю:
а) определение файлового указателя;
б) смысл фразы "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9"
P.S. Чтобы не захламлять форум, заранее благодарю за ответ