У робота есть два фильтра: Stochastic и RSI, у каждого набор параметров. Использоваться должен только один фильтр. Т.е. если включен Stochastic, то RSI должен быть выключен и наоборот.
Сейчас сделал так:
Сделал input переменные для Stochastic и RSI, включающую и выключающую их работы.
В блоке OnInitпроверяю, если Stochastic и RSI одновременно включены, то ошибка INIT_PARAMETERS_INCORRECT.
В блоке OnInit проверяю, если Stochasticвыключен, то все его параметры должны быть равны нулю, иначе ошибка INIT_PARAMETERS_INCORRECT/ Аналогично с RSI.
Цель:
Не тратить время при оптимизации на несовместимые варианты. Например, чтобы в случае, если выбран RSI, чтобы не перебирались параметры Stochastic(размер зон перекупленности/перепроданности, периоды K, D, замедление, метод сглаживание, цены).
Оказалось, что мой вариант не работает. При оптимизации эти варианты похоже все равно перебираются, что отражается на конечном результате оптимизации.
Посоветуйте, как сделать, чтобы оптимизатор при включенном RSI не перебирал параметры Stochastic и наоборот.
Здравствуйте и спасибо за ваш ответ. Я смог создать скрипт, который соответствует моим ожиданиям, но, к сожалению, есть две ошибки, которые я не могу понять или исправить. Не могли бы вы знать, к кому обратиться за небольшой помощью? Это всего лишь две строки кода, которые регистрируются как ошибки после компиляции...
Всем здравствуйте и с наступившим новым годом! Подскажите: как я могу реализовать, что бы мой скрипт использовал индикатор из маркета?
Конкретнее: есть индикатор "Automatic Trendline" в маркете. Я хочу на его основе сделать робота, который в момент пересечения цены данных линий по индикатору (ну и при заданных доп.условиях) открывал бы или закрывал ту или иную позицию.
Всем здравствуйте и с наступившим новым годом! Подскажите: как я могу реализовать, что бы мой скрипт использовал индикатор из маркета?
Конкретнее: есть индикатор "Automatic Trendline" в маркете. Я хочу на его основе сделать робота, который в момент пересечения цены данных линий по индикатору (ну и при заданных доп.условиях) открывал бы или закрывал ту или иную позицию.
Для себя нет проблем. Для маркета или CodeBase нельзя использовать чужие поделки из маркета…
Вот пример добавления индикатора, скачанного с Маркета, в советник
// Глобальная переменная для хендла индикатораint tlHandle;
intOnInit() {
// Создаем хендл индикатора
tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
// Можем добавить индикатор на график, если хотим. // Для использования в расчетах это необязательноChartIndicatorAdd(ChartID(), 0, tlHandle);
// Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилосьOnTick();
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason) {}
voidOnTick() {
// Объявляем массивы для буферов индикатораdouble tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...int res;
// Копируем нужное количество значений из индикаторных буферов в массивы
res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
// У разных индикаторов различное количество индикаторных буферов, // числа из которых используются для построения линий, значков, цветовых меток на графике// Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно// res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);// Пользуемся полученными значениямиArrayPrint(tlBuffer0);
ArrayPrint(tlBuffer1);
}
правильней будет в uint за пределами цикла определить
Часто так делаю, но всё же очень хочется верить, что такие стандартные вещи компилятор умеет оптимизировать.
У робота есть два фильтра: Stochastic и RSI, у каждого набор параметров. Использоваться должен только один фильтр. Т.е. если включен Stochastic, то RSI должен быть выключен и наоборот.
Сейчас сделал так:
Цель:
Посоветуйте, как сделать, чтобы оптимизатор при включенном RSI не перебирал параметры Stochastic и наоборот.
Перед этим сделал так, посчитал что справился и удалил свой пост.
Когда обновил страницу увидел что ответили. Да, с обработкой ошибок правильнее. Спасибо!
На всякий случай обращу внимание, что при большом количестве имён проще их писать одной строкой, как у меня показано, чем массив отдельных строк.
Здравствуйте,
Попробуйте поискать готовые решения на рынке - https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market
Вы также можете заказать индивидуальное решение у Freelance - https://www.mql5.com/fr/job.
Всем здравствуйте и с наступившим новым годом! Подскажите: как я могу реализовать, что бы мой скрипт использовал индикатор из маркета?
Конкретнее:
есть индикатор "Automatic Trendline" в маркете. Я хочу на его основе сделать робота, который в момент пересечения цены данных линий по индикатору (ну и при заданных доп.условиях) открывал бы или закрывал ту или иную позицию.
Всем здравствуйте и с наступившим новым годом! Подскажите: как я могу реализовать, что бы мой скрипт использовал индикатор из маркета?
Конкретнее:
есть индикатор "Automatic Trendline" в маркете. Я хочу на его основе сделать робота, который в момент пересечения цены данных линий по индикатору (ну и при заданных доп.условиях) открывал бы или закрывал ту или иную позицию.
Для себя нет проблем. Для маркета или CodeBase нельзя использовать чужие поделки из маркета…
Для себя нет проблем. Для маркета или CodeBase нельзя использовать чужие поделки из маркета…
Для себя. Я не знаю: как это сделать. Не могу найти код в открытом виде. Или как прикрутить в свой код, что бы он ловил положение линий.
Здравствуйте, @Rad89
Вам нужны функции iCustom() и CopyBuffer().
Вот пример добавления индикатора, скачанного с Маркета, в советник
enum ENUM_NAME { ENUM_1, ENUM_jsdf .... ENUM_FEF; };Как выделить память под массив E_NAME[], чтобы хватило на все возможные значения ENUM_NAME(без повторений) ?И проинициализировать E_NAME[] всеми возможными значениями ?