diodio Опубликовано 11 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2020 1 час назад, usver73 сказал: ты его объявляешь на глобальном уровне, т.е. он будет доступен во всех функциях. Не нужно его передавать при вызове функции подсчета. Все это обкашлено 100 раз... Значит этот вариант правильный был? void CountOrder() { ArrayInitialize(arrCountOrders,0); for(int x=OrdersTotal()-1; x>=0; x--) { if(OrderSelect(x, SELECT_BY_POS, MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol() || OrderMagicNumber() != Magic) continue; arrCountOrders[OrderType()]++; } return; } В принципе он работает, но я засомневался просмотрев последний урок Павла, выложенный выше. Хотел уточнить синтаксис. Можно обойтись и без массива, как показал Rever27 первый пример, он все равно работает разово. Изменено 11 августа, 2020 пользователем diodio Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 11 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2020 22 минуты назад, diodio сказал: Можно обойтись и без массива, как ты показал первый пример, он все равно работает разово. Можно, как Rever27 показал. Просто с массивом лаконичнее запись, особенно если в боте будет использоваться не только рыночные ордера... И что-то я сомневаюсь, что количество ордеров используются одноразово, поэтому его и имеет смысл объявлять на глобальном уровне. Впрочем, как и альтернативные переменные. Изменено 11 августа, 2020 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 11 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2020 6 часов назад, diodio сказал: В принципе он работает, но я засомневался просмотрев последний урок В программировании нет понятия "в принципе работает, но сомневаюсь правильно я сделал или нет". В программировании есть понятия "работает" или "не работает". Не важно как мы этого добились в обход горы или напрямик через гору. Если программа выдала результат, значит работает и это правильно. В программирование есть понятие чувство хорошего тона, как "принято" и "не принято" писать код. Изменено 11 августа, 2020 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 13 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 августа, 2020 Всем привет! Нашел в старом советнике вариант торговли по времени. Код был таким: input enum_curtime CT =1;//выбор времени по брокеру или GMT void OnTick() { if(CT==0) curtime=TimeCurrent(); else curtime=TimeGMT(); .... } Насколько верна эта запись? После компиляции выдает ошибку именно на эту строку: input enum_curtime CT =1;//выбор времени по брокеру или GMT Видать параметры устарели, и вообще нужно ли так писать, можно просто переменную СТ записать так: input int CT =0;//выбор времени по брокеру или GMT и тогда функция вернет время сервера. Но я думаю что это не верно, тогда как записать по "новому"? Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 13 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 августа, 2020 @diodio Приветствую. Вы из старого советника забыли перенести еще часть кода, он примерно будет выглядеть так. enum enum_curtime { первая строчка что там вторая строчка что там }; И поэтому в вашем случае input enum_curtime CT =1;//выбор времени по брокеру или GMT он (компилятор) будет ругаться, что нет типа данных при объявлении переменой "CT". Переименовать запись правильный вариант, чтоб избавится от ошибки, которая связана с отсутствием части кода (выше описано). либо: Если той части кода не было в старом коде, значит достался он не полным. Тогда можно дописать самому, как показано выше. И значение первой строчки подставить в место "1". Изменено 13 августа, 2020 пользователем MikR0ReR 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 13 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 августа, 2020 2 часа назад, diodio сказал: Всем привет! Нашел в старом советнике вариант торговли по времени. Код был таким: Насколько верна эта запись? После компиляции выдает ошибку именно на эту строку: input enum_curtime CT =1;//выбор времени по брокеру или GMT Видать параметры устарели, и вообще нужно ли так писать, можно просто переменную СТ записать так: input int CT =0;//выбор времени по брокеру или GMT и тогда функция вернет время сервера. Но я думаю что это не верно, тогда как записать по "новому"? УУ, батенька. Ну ок, enums enum E_TIME { ET_BROKER, //По времени брокера ET_GMT, //По времени GMT }; input E_TIME CT = ET_BROKER;//выбор времени по брокеру или GMT void OnTick() { datetime referenceTime = 0; //инициализируем для порядка switch(CT). {//enum хорош тем, что он - целочисленный тип, можно ветвить по switch case ET_BROKER: referenceTime = TimeCurrent(); break; case ET_GMT: referenceTime = TimeGMT(); //со временем GMT в терминале засада, оно вычисляется с использованием локального времени и таймзоны компьютера, куча багов break; default: Print("Unimplemented time type: ", EnumToString(CT)); ExpertRemove(); } //и дальше используем переменую referenceTime .... } 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mishastar Опубликовано 18 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 августа, 2020 Всем привет! Хотелось бы выразить думаю не только мое желание))) Так сказать предложение на ближайшее будущее тем кто создает видео уроки по программированию . Создайте пожалуйста урок где в советнике в место рыночных ордеров размещаются отложенные ордера. Расскажите как это выполнять в коде. Особенно интересует как выставить лимитник на уровне пересечение машек с разными периодами когда фактическая цена расположена выше или ниже этого пересечения. Ссылка на сообщение Поделиться на другие сайты More sharing options...
lsv107 Опубликовано 18 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 августа, 2020 9 минут назад, mishastar сказал: Всем привет! Хотелось бы выразить думаю не только мое желание))) Так сказать предложение на ближайшее будущее тем кто создает видео уроки по программированию . Создайте пожалуйста урок где в советнике в место рыночных ордеров размещаются отложенные ордера. Расскажите как это выполнять в коде. Особенно интересует как выставить лимитник на уровне пересечение машек с разными периодами когда фактическая цена расположена выше или ниже этого пересечения. Темой следующего урока по MQL4, который должен выйти в начале сентября, как раз будет советник, работающий с отложками. Следите за обновлениями на портале или на канале в YouTube. Изменено 18 августа, 2020 пользователем lsv107 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Agronom Опубликовано 22 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 августа, 2020 По уроку 5 "ТРЕЙЛИНГ-СТОП" сделал советник – работает. При покупке стоп лосс передвигается только вверх по тралу. Но при продаже - стоп лосс Cоветник 5.7zпередвигается за ценой на каждом новом тике вверх-вниз - ??? (см. видео). Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 26 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 августа, 2020 Всем привет! У кого есть информационная панель готовая, себе перекинуть. Можно некрасивую Поделитесь если можете. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 27 августа, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2020 21 час назад, diodio сказал: Всем привет! У кого есть информационная панель готовая, себе перекинуть. Можно некрасивую Поделитесь если можете. В разделе индикаторы есть информационные. Тебе туда Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 1 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2020 Всем доброго времени, немного подзабыл, обязательно ли ставить индикаторы на график если советник работает по индикаторам и в папке присутствуют эти индикаторы. Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 1 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2020 @diodio Приветствую! Не обязательно ставить индикатор на график. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
scherbakovss Опубликовано 1 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2020 Добрый день. 1)Хочу с 01.12.2019 по 31.12.2019 найти средний бар по размеру и вывести его Hight и Low. 2)Как найти цену закрытия бара на указанную дату скажем на начало этого года 01.01.2020 а если его нет на случай выходного то следующая дата 02.01.2020 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 1 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2020 3 часа назад, scherbakovss сказал: 2)Как найти цену закрытия бара на указанную дату скажем на начало этого года 01.01.2020 а если его нет на случай выходного то следующая дата 02.01.2020 datetime some_time=D'2020.08.22 00:00'; int bar = -1; int extra_time = 0; //дополнительное время do { bar = iBarShift(NULL,0,some_time+extra_time,true); extra_time += 24*60*60; //прибавляем к текущему времени 1 день } while(bar == -1 && !IsStopped()); //выполнять цикл, пока bar не перестанет быть равен -1 Вводите время нужное. Узнаете бар (bar) на котором это время отображается. Если же такого бара нет, то значение bar будет равно -1. Тогда цикл do while прибавляет ко времени этого бара 24 часа (т.е. один день) и снова проверяет, будет ли такой бар на графике и так, пока не будет найден нужный. Если же нужен ближайший бар на время более раннее (на день или час, т.е. в Пятницу, если сейчас Суббота), то просто через эту формулу: int bar = iBarShift(NULL,0,some_time,false); 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlus777 Опубликовано 8 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 сентября, 2020 Новый урок https://tlap.com/mql4-ea-po-strategii-piramiding/ 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 Всем доброго времени. Что-то не получается снять показания с индикатора «BT 1 ssa». Может кто подскажет? Пользуюсь обычным кодом: double a1 = iCustom(NULL,0, "BT 1 ssa",0,1); // double a2 = iCustom(NULL,0, "BT 1 ssa",1,1); // Comment( "a1 = " + DoubleToString(a1) + "\n" + "a2 = " + DoubleToString(a2) + "\n" ); Оба буфера в итоге показывают одинаковые значения одновременно. В самом файле индикатора прописаны ещё 2, которые я прикрепил. BT 1 ssa.mq4 JStochastic.mq4 SSA of price.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 2 часа назад, diodio сказал: Что-то не получается снять показания с индикатора «BT 1 ssa». В вызове индикатора после "BT 1 ssa" нужно прописать все входные параметры индикатора, а их там 7 штук Посмотри справку Изменено 16 сентября, 2020 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 1 минуту назад, usver73 сказал: В вызове индикатора после "0" нужно прописать все входные параметры индикатора, а их там 7 штук Посмотри справку Я так тоже делал, все значения прописывал, результат такой же, оба буфера показывают одинаковые результаты: 0,000000 и пустое значение 2147863,000000 если я правильно написал, но все равно это пустое значение. В чем может быть ещё тормоза? Может в самом индикаторе тянутся значения с других 2-х индикаторов и это как-то мешает? Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 59 минут назад, diodio сказал: Может в самом индикаторе тянутся значения с других 2-х индикаторов и это как-то мешает? вряд ли. Он ведь рисует, если накинуть на график? Скорее всего ошибка вызова Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 19 минут назад, usver73 сказал: вряд ли. Он ведь рисует, если накинуть на график? Скорее всего ошибка вызова а может значение не типа double должно быть? но это же индикатор по типу допустим машки, и они все должны на выходе иметь дробное значение а как можно исправить ошибку вызова? Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 Вообщем тут дело в том что индикатор использует DLL. При переносе индикатора на график при тестировании и при включении галочки DLL, он все равно не выдает значения, а когда на весь терминал устанавливаю в советнике использовать DLL, то тоже не выдает значение в тестере, но что было замечено при остановке тестирования в нижнем окне появляется индикатор со всеми нулевыми значениями и тут уже галочку никак не поставить потому что тестирование остановилось. Можно ли в самом индикаторе прописать использование DLL сразу? Установка галочки в индикаторе или советника на использование библиотеки DLL влияет только на торговлю в реальном времени. Значит получается индикатор в тестере не прогнать а только в реальном времени? Может есть выход? Изменено 16 сентября, 2020 пользователем diodio Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 @diodio Добрый день. Пришлите дополнительные файлы "libSSA.dll" "JJMASeries.mqh". Еще нужно "PriceSeries.mqh". Изменено 16 сентября, 2020 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 16 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 сентября, 2020 @diodio Все работает*. "SSA of price" рисует. Проверено в тестере. "BT 1 ssa" рисует. Ну это и очевидно, он же строится на "SSA of price". Проверено в тестере. *Нужно ставить галочку "DLL" в настройках терминала либо при запуске модуля (эксперт, скрипт, индикатор). Изменено 16 сентября, 2020 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 17 сентября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 сентября, 2020 18 часов назад, MikR0ReR сказал: @diodio Добрый день. Пришлите дополнительные файлы "libSSA.dll" "JJMASeries.mqh". Еще нужно "PriceSeries.mqh". libSSA.dll JJMASeries.mqh PriceSeries.mqh Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти