А как оптимизируете параметры мультивалютника? В тестере MT4 ведь нет возможности сразу несколько инструментов тестировать... Я думаю над мультивалютником и пока пришёл к тому, что параметры оптимизируются на каждом инструменте по отдельности, а для торговли потом все эти параметры переносить в эксперт, который предназначен для мультивалютного режима.
Я в правильном направлении двигаюсь или всё проще на самом деле?)))
В mql5 это всё можно реализовать в одном эксперте сразу и для тестов и для торговли, но я пока решил mql4 изучить.
Просто размышляя на эту тему я подумал, если нельзя протестировать несколько инструментов сразу, зачем тогда в один эксперт всё городить, если можно на каждый график инструмента просто установить свою копию и будет тоже самое. Хотелось бы услышать мнения членов сообщества.)))
У меня не мультивалютник, я просто на каждый инструмент вешаю один и тот же советник.
Смотри поиском по запросу через гугл: "как правильно оптимизировать советника site:mql4.com", также - здесь.
Рекомендую грамотную книжку по этому же вопросу: Ральф Винс "Разработка, тестирование и оптимизация торговых систем для биржевого трейдера" - все подробно, по полочкам и понятно.
Задача: на рисунке показана некая кривая (например МА). Точки A,C,E - это локальные максимумы, а точки B,D - это локальные минимумы. Вопрос: как их вычислить, если расстояние между соседними максимумом и минимумом больше, чем N пунктов? Попыталась сделать, но как-то уж слишком громоздко все получается. Может есть готовый алгоритм решения подобной задачи? Подскажите, если кто сталкивался
Задача: на рисунке показана некая кривая (например МА). Точки A,C,E - это локальные максимумы, а точки B,D - это локальные минимумы. Вопрос: как их вычислить, если расстояние между соседними максимумом и минимумом больше, чем N пунктов? Попыталась сделать, но как-то уж слишком громоздко все получается. Может есть готовый алгоритм решения подобной задачи? Подскажите, если кто сталкивался
Определяем направление скользящей.
Если оно вверх и при этом переемнные В,C,D и E пустые, то вносим в переменную А текущее значение скользящей.
Если Переменная А не пустая и при этом скользящая направлена вниз, и при этом переменные С,D,E пустые, то в переменную В вносим текущее значение скользящей. Если переменная А и переменная B не пустые и при этом скользящая направлена вверх и при этом переменные D и Е - пустые, то в переменную С вносим текущее значение скользящей.
Ну и так далее заполняем значения переменных значениями.
Теперь если переменная А и С не пустые и при этом модуль разности между А и С более или равен заранее заданному количеству пунктов, то выполняется задуманное Вами действие.
Вобщем, код сделать вполне можно. Только нужно определить, в какой именно точке алгоритма мы будем обнулять переменные чтоб советник понял, что он пришёл в точку нового старта. Можно через цикл и массивы сделать и вполне возможно, что код окажется короче и проще, но для понимания лучше рассмотреть алегоритм именно через переменные - ну просто чтоб не путаться в индексах массивив и в номерах свеч в цикле.
Ребята, недавно, столкнулся с данным вопросом. Кто в теме - прокомментируйте. Сам - благо быстро нашел ошибку... При написании кода - все компилится без ошибок, при этом не работает трал... т.е. не идем дальше по циклу перебора ордеров... Участки кода - привожу... Ошибка была в следующем - во внешних переменных магик ордера был задан с большой буквы, а в условиях перебора ордеров в цикле - с маленькой, при этом поиск через CTRL+F - на запрос "Мagic" переходил и на "magic"...компилятор ошибки не выдавал, но в цикле до перехода на вид трала исполнение программы не доходило... цикл прерывался на "magic"... Вообще, так и должно быть??? Я всегда считал, что "magic" и "Magic" - это разные переменные... и, следовательно, компилятор должен был указать на эту ошибку, что переменная "magic" - не определена... В коде, в таком виде, как сейчас исполнение до выбора трала и Printa () уже не доходит - выход из цикла по этому условию - из-за magic - т.е. это условие - никогда выполнено не будет, из-за различных имен - "magic" и "Magic".
Ребята, недавно, столкнулся с данным вопросом. Кто в теме - прокомментируйте. Сам - благо быстро нашел ошибку... При написании кода - все компилится без ошибок, при этом не работает трал... т.е. не идем дальше по циклу перебора ордеров... Участки кода - привожу... Ошибка была в следующем - во внешних переменных магик ордера был задан с большой буквы, а в условиях перебора ордеров в цикле - с маленькой, при этом поиск через CTRL+F - на запрос "Мagic" переходил и на "magic"...компилятор ошибки не выдавал, но в цикле до перехода на вид трала исполнение программы не доходило... цикл прерывался на "magic"... Вообще, так и должно быть??? Я всегда считал, что "magic" и "Magic" - это разные переменные... и, следовательно, компилятор должен был указать на эту ошибку, что переменная "magic" - не определена... В коде, в таком виде, как сейчас исполнение до выбора трала и Printa () уже не доходит - выход из цикла по этому условию - из-за magic - т.е. это условие - никогда выполнено не будет, из-за различных имен - "magic" и "Magic".
П.С. Кто не в курсе - знайте об этом, иначе возможно не понятно сколько провозекаться с кодом...
У меня если объявлена Magic, а орбащение идет к magic, то компилятор пишет, что переменная magic не объявлена.
Ребята, недавно, столкнулся с данным вопросом. Кто в теме - прокомментируйте. Сам - благо быстро нашел ошибку... При написании кода - все компилится без ошибок, при этом не работает трал... т.е. не идем дальше по циклу перебора ордеров... Участки кода - привожу... Ошибка была в следующем - во внешних переменных магик ордера был задан с большой буквы, а в условиях перебора ордеров в цикле - с маленькой, при этом поиск через CTRL+F - на запрос "Мagic" переходил и на "magic"...компилятор ошибки не выдавал, но в цикле до перехода на вид трала исполнение программы не доходило... цикл прерывался на "magic"... Вообще, так и должно быть??? Я всегда считал, что "magic" и "Magic" - это разные переменные... и, следовательно, компилятор должен был указать на эту ошибку, что переменная "magic" - не определена... В коде, в таком виде, как сейчас исполнение до выбора трала и Printa () уже не доходит - выход из цикла по этому условию - из-за magic - т.е. это условие - никогда выполнено не будет, из-за различных имен - "magic" и "Magic".
П.С. Кто не в курсе - знайте об этом, иначе возможно не понятно сколько провозекаться с кодом...
Сравните с моим простейшим тралом. В частности цикл перебора ордеров:
// В глоб. переменныхstring sy=Symbol();
// ...................................................................color cl;
double sl, StopLevel;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderMagicNumber()!=Magic) continue;
if (OrderType()>1) continue;
sl=OrderStopLoss();
if (OrderType()==OP_BUY) {
cl=clModifyBuy;
StopLevel=NormalizeDouble(strG-DeltaStop*PointX, dg);
if (sl<StopLevel) ModifyOrder(-1, StopLevel, -1, -1, cl);
}
if (OrderType()==OP_SELL) {
cl=clModifySell;
StopLevel=NormalizeDouble(strR+DeltaStop*PointX, dg);
if (sl>StopLevel) ModifyOrder(-1, StopLevel, -1, -1, cl);
}
}
}
Думаю принцип ясен будет.
А переменные magic и Magic - действительно разные. Во время поиска их по Ctrl+F поставьте галочку "Учитывать регистр"
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А как оптимизируете параметры мультивалютника? В тестере MT4 ведь нет возможности сразу несколько инструментов тестировать... Я думаю над мультивалютником и пока пришёл к тому, что параметры оптимизируются на каждом инструменте по отдельности, а для торговли потом все эти параметры переносить в эксперт, который предназначен для мультивалютного режима.
Я в правильном направлении двигаюсь или всё проще на самом деле?)))
В mql5 это всё можно реализовать в одном эксперте сразу и для тестов и для торговли, но я пока решил mql4 изучить.
Просто размышляя на эту тему я подумал, если нельзя протестировать несколько инструментов сразу, зачем тогда в один эксперт всё городить, если можно на каждый график инструмента просто установить свою копию и будет тоже самое. Хотелось бы услышать мнения членов сообщества.)))
ответить
Извините, не понял ответ
Смотри поиском по запросу через гугл: "как правильно оптимизировать советника site:mql4.com", также - здесь.
Рекомендую грамотную книжку по этому же вопросу: Ральф Винс "Разработка, тестирование и оптимизация торговых систем для биржевого трейдера" - все подробно, по полочкам и понятно.
Задача: на рисунке показана некая кривая (например МА). Точки A,C,E - это локальные максимумы, а точки B,D - это локальные минимумы. Вопрос: как их вычислить, если расстояние между соседними максимумом и минимумом больше, чем N пунктов? Попыталась сделать, но как-то уж слишком громоздко все получается. Может есть готовый алгоритм решения подобной задачи? Подскажите, если кто сталкивался
Задача: на рисунке показана некая кривая (например МА). Точки A,C,E - это локальные максимумы, а точки B,D - это локальные минимумы. Вопрос: как их вычислить, если расстояние между соседними максимумом и минимумом больше, чем N пунктов? Попыталась сделать, но как-то уж слишком громоздко все получается. Может есть готовый алгоритм решения подобной задачи? Подскажите, если кто сталкивался
Определяем направление скользящей.
Если оно вверх и при этом переемнные В,C,D и E пустые, то вносим в переменную А текущее значение скользящей.
Если Переменная А не пустая и при этом скользящая направлена вниз, и при этом переменные С,D,E пустые, то в переменную В вносим текущее значение скользящей. Если переменная А и переменная B не пустые и при этом скользящая направлена вверх и при этом переменные D и Е - пустые, то в переменную С вносим текущее значение скользящей.
Ну и так далее заполняем значения переменных значениями.
Теперь если переменная А и С не пустые и при этом модуль разности между А и С более или равен заранее заданному количеству пунктов, то выполняется задуманное Вами действие.
Вобщем, код сделать вполне можно. Только нужно определить, в какой именно точке алгоритма мы будем обнулять переменные чтоб советник понял, что он пришёл в точку нового старта. Можно через цикл и массивы сделать и вполне возможно, что код окажется короче и проще, но для понимания лучше рассмотреть алегоритм именно через переменные - ну просто чтоб не путаться в индексах массивив и в номерах свеч в цикле.
Ребята, недавно, столкнулся с данным вопросом. Кто в теме - прокомментируйте. Сам - благо быстро нашел ошибку... При написании кода - все компилится без ошибок, при этом не работает трал... т.е. не идем дальше по циклу перебора ордеров... Участки кода - привожу... Ошибка была в следующем - во внешних переменных магик ордера был задан с большой буквы, а в условиях перебора ордеров в цикле - с маленькой, при этом поиск через CTRL+F - на запрос "Мagic" переходил и на "magic"...компилятор ошибки не выдавал, но в цикле до перехода на вид трала исполнение программы не доходило... цикл прерывался на "magic"... Вообще, так и должно быть??? Я всегда считал, что "magic" и "Magic" - это разные переменные... и, следовательно, компилятор должен был указать на эту ошибку, что переменная "magic" - не определена... В коде, в таком виде, как сейчас исполнение до выбора трала и Printa () уже не доходит - выход из цикла по этому условию - из-за magic - т.е. это условие - никогда выполнено не будет, из-за различных имен - "magic" и "Magic".
П.С. Кто не в курсе - знайте об этом, иначе возможно не понятно сколько провозекаться с кодом...
Ребята, недавно, столкнулся с данным вопросом. Кто в теме - прокомментируйте. Сам - благо быстро нашел ошибку... При написании кода - все компилится без ошибок, при этом не работает трал... т.е. не идем дальше по циклу перебора ордеров... Участки кода - привожу... Ошибка была в следующем - во внешних переменных магик ордера был задан с большой буквы, а в условиях перебора ордеров в цикле - с маленькой, при этом поиск через CTRL+F - на запрос "Мagic" переходил и на "magic"...компилятор ошибки не выдавал, но в цикле до перехода на вид трала исполнение программы не доходило... цикл прерывался на "magic"... Вообще, так и должно быть??? Я всегда считал, что "magic" и "Magic" - это разные переменные... и, следовательно, компилятор должен был указать на эту ошибку, что переменная "magic" - не определена... В коде, в таком виде, как сейчас исполнение до выбора трала и Printa () уже не доходит - выход из цикла по этому условию - из-за magic - т.е. это условие - никогда выполнено не будет, из-за различных имен - "magic" и "Magic".
П.С. Кто не в курсе - знайте об этом, иначе возможно не понятно сколько провозекаться с кодом...
У меня если объявлена Magic, а орбащение идет к magic, то компилятор пишет, что переменная magic не объявлена.
MetaEditor 4 401.
Ребята, недавно, столкнулся с данным вопросом. Кто в теме - прокомментируйте. Сам - благо быстро нашел ошибку... При написании кода - все компилится без ошибок, при этом не работает трал... т.е. не идем дальше по циклу перебора ордеров... Участки кода - привожу... Ошибка была в следующем - во внешних переменных магик ордера был задан с большой буквы, а в условиях перебора ордеров в цикле - с маленькой, при этом поиск через CTRL+F - на запрос "Мagic" переходил и на "magic"...компилятор ошибки не выдавал, но в цикле до перехода на вид трала исполнение программы не доходило... цикл прерывался на "magic"... Вообще, так и должно быть??? Я всегда считал, что "magic" и "Magic" - это разные переменные... и, следовательно, компилятор должен был указать на эту ошибку, что переменная "magic" - не определена... В коде, в таком виде, как сейчас исполнение до выбора трала и Printa () уже не доходит - выход из цикла по этому условию - из-за magic - т.е. это условие - никогда выполнено не будет, из-за различных имен - "magic" и "Magic".
П.С. Кто не в курсе - знайте об этом, иначе возможно не понятно сколько провозекаться с кодом...
Сравните с моим простейшим тралом. В частности цикл перебора ордеров:
Думаю принцип ясен будет.
А переменные magic и Magic - действительно разные. Во время поиска их по Ctrl+F поставьте галочку "Учитывать регистр"
Где-то в коде вы всё-таки объявили их обе
А переменные magic и Magic - действительно разные. Во время поиска их по Ctrl+F поставьте галочку "Учитывать регистр"
Где-то в коде вы всё-таки объявили их обе
:-)))
Получалось, в ф-ии открытия ордеров я учитывал - Magic, а в цикле - magic, поэтому цикл перебора ордеров для их трала и не работал...:-)))
От души благодарю Вас - разобрался с вопросом. Галочку "Учитывать регистр" - поставил - все работает исправно.
П.С. От как бывает-то!!!... (Когда пруха по коду идет - готов и не только по нескольку маджиков объявлять...:-))))
Сравните с моим простейшим тралом. В частности цикл перебора ордеров:
Думаю принцип ясен будет.