usver73 Опубликовано 11 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 октября, 2021 56 минут назад, diodio сказал: Только теперь я не понимаю почему нулевой бар не давал сигнал на открытие ордера Телепатить без кода сложно, но предположу, что сигнал от индикатора получаем при открытии 0-го бара, но показания индюка считываем по ближайшей закрытой свече, т.е. 1-й. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Gamakiv Опубликовано 16 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 октября, 2021 Ребят, а можно ли получить имена файлов в каталоге? Такое вообще возможно на mql4 ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
chww Опубликовано 16 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 октября, 2021 Здравствуйте! Подскажите пожалуйста неопытному как правильно использовать функцию iMAOnArray() в советнике для получения средних значений индикатора на последней закрывшейся свече, extern string a = "WPR"; extern int period_indicatora = 8; extern int period_usredneniy = 15; extern int metod_usredneniy = 3; //значения 0,1,2,3 //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { double h=ABC(); Comment("h="+DoubleToString(h)); } //+------------------------------------------------------------------+ double ABC() { double sz[]; double ss,wpr; for(int i=0; i<period_usredneniy; i++) { wpr=iWPR(NULL,0,period_indicatora,i+1); sz[i]=wpr; } ss=iMAOnArray(sz,0,period_usredneniy,0,metod_usredneniy,0); return(ss); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Gamakiv Опубликовано 16 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 октября, 2021 8 часов назад, Gamakiv сказал: Ребят, а можно ли получить имена файлов в каталоге? Такое вообще возможно на mql4 ? Прошу прощения за то, что долбился в глаза. Нашел. https://docs.mql4.com/ru/files/filefindfirst Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 17 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 октября, 2021 20 часов назад, chww сказал: Подскажите пожалуйста неопытному как правильно использовать функцию iMAOnArray() А что, переменная ss , получает не то, что ожидается? Ссылка на сообщение Поделиться на другие сайты More sharing options...
chww Опубликовано 17 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 октября, 2021 usver73 спасибо что откликнулись, написал функцию и для проверки вывел данные на экран , при запуске тестера в журнале пишет массив вне диапазона. то есть расчет не производится. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 18 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 октября, 2021 7 часов назад, chww сказал: при запуске тестера в журнале пишет массив вне диапазона Если это весь код, то правильно пишет. Вы нигде не устанавливаете размер массива sz. double sz[]; объявите на глобальном уровне В double ABC() добавьте ArrayInitialize(sz, 0.0); В OnInit добавьте ArrayResize(sz, period_usredneniy); p.s. В OnTick() вызов Print(ABC()); нужно завернуть в NewBar(), чтобы расчеты делались на на каждом тике, а при поступлении нового бара Изменено 18 октября, 2021 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
chww Опубликовано 19 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 октября, 2021 usver73 Спасибо,с этим разобрался, но появился новый вопрос, как программируется Moving Average( с применением к First Indicators Data) , а так же не понятно индикатор рассчитывает среднее значение за определенный период и рисуется на последней закрывшейся свече с определенным числовым значением, при этом это числовое значение не является расчетным средним. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 20 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 октября, 2021 7 часов назад, chww сказал: как программируется Moving Average( с применением к First Indicators Data) Что значит "программируется"? Вы же вызов у себя прописали. Если что-то не получилось, конкретизируйте. 8 часов назад, chww сказал: при этом это числовое значение не является расчетным средним. сильное заявление. Если считаете не SMA, то имеет значение последовательность значений в передаваемом массиве. Иными словами, массив sz нужно сделать AsSerias (см. справку iMAOnArray) Ссылка на сообщение Поделиться на другие сайты More sharing options...
chww Опубликовано 20 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 октября, 2021 5 часов назад, usver73 сказал: Вы же вызов у себя прописали. Если что-то не получилось, конкретизируйте. Я хотел получить значения Moving Average наложенной на индикатор WPR с возможностью изменения метода усреднения, при запуске в тестере выдает на график какое то расчетное число. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 20 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 октября, 2021 22 минуты назад, chww сказал: при запуске в тестере выдает на график какое то расчетное число. Проведите эксперимент: перед вызовом iMaOnArray сделайте принты входных параметров, в первую очередь массив sz. Можно прямо в цикле, где записываете значения WPR Возьмите небольшой период усреднения, например, 5. Метод усреднения -SMA. Посчитайте среднее значение полученных принтов. Сравните с тем, что выдает функция iMAOnArray Изменено 20 октября, 2021 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
chww Опубликовано 20 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 октября, 2021 2 часа назад, usver73 сказал: Проведите эксперимент: Провел с методом SMA все сходится, а вот при смене метода, "MA" на графике не соответствует тому что выдает функция. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 20 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 октября, 2021 9 часов назад, usver73 сказал: Иными словами, массив sz нужно сделать AsSerias (см. справку iMAOnArray Сделали? Ссылка на сообщение Поделиться на другие сайты More sharing options...
chww Опубликовано 21 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 октября, 2021 В 20.10.2021 в 17:26, usver73 сказал: Сделали? Сделал и все получилось. Я Вам признателен! Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 26 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 октября, 2021 Всем доброго времени! У меня есть код вот такой, очень простой: Спойлер int BuyTotal = 0, SellTotal = 0; int i; //Подсчитываем отдельно бай и селл ордеры for(i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) BuyTotal++; if(OrderType()==OP_SELL) SellTotal++; } } } if(SellTotal<1) { .......... } if(BuyTotal<1) { ......... } Может ли сие означать торговлю одновременно в обе стороны??? Именно одновременно, а не ждать когда одни ордера на бай допустим закроются и только в этом случае откроются на селл. Нужно чтоб открывались на бай и селл одновременно, но не открываются почему-то, подозрение на малое проскальзывание, которое поставил. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 26 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 октября, 2021 6 часов назад, diodio сказал: подозрение на малое проскальзывание, которое поставил Должно работать в обе стороны. Проскальзывание вообще не при чем,в тестера его не увидешь, да и на реале далеко не у каждого брокера. В смысле, твой слиппаж не блокирует вход, даже если превысит заданный размер 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 29 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 октября, 2021 Доброго времени всем! Такой вопрос, если ставить одного и того же советника на разные пары на одном счёте, то что при этом должно быть разным у каждой пары??? Магик - это точно, если делаем выборку, что ещё? У меня большие сомнения по поводу функции OrdersTotal(), эта функция смотрит вообще на всё как я понял, значение пар ей не важно, берутся в расчёт все ордера на данном счету. Что ещё должно быть разным? Не хочется делать мультивалютник и впихивать в него название пар, по коду получается много повторов, могу запутаться) Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 29 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 октября, 2021 3 часа назад, diodio сказал: то что при этом должно быть разным у каждой пары??? Магик Не поверишь-название пары, оно же Symbol() Ссылка на сообщение Поделиться на другие сайты More sharing options...
sashbek Опубликовано 1 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 ноября, 2021 Подскажите, пожалуйста, что нужно добавить или изменить:Когда индикатор берет значения Current или младших ТФ - линии и текст отображаются ок. А когда из старших ТФ, то текст дублируется на каждом баре. Т.е. если в настройках указан ТФ = H1, а у нас на графике М30, то текст дублируется дважды, когда М15 = 4 раза..if(price1_0<price_a1&&DistPoint<=price1_4/Point) { if(ObjectFind(0,"OOO_LEVEL_UP"+(string)time)!=0) { TrendCreate(0,"OOO_LEVEL_UP"+(string)time,0,time,price_abc,time+_Period*60*LineBars,price_abc, ColorLe1,StyleLe1,WidthLe1,false,false,false,false,true,0); TextCreate(0,"OOO_tLEVEL_UP"+(string)time,0,time,price_abc, "LEVEL_UP ("+DoubleToStr(price_abc,Digits)+") ",ColorLe1,ANCHOR_LEFT_LOWER); } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 1 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 ноября, 2021 2 часа назад, sashbek сказал: текст дублируется дважды Скорее всего приведенный кусок кода вызывается раз в свечу текущего ТФ графика. Далее вы пытаетесь найти объект, но делаете странную проверку на 0. Напишите if(ObjrctFinnd(.....)<0) TrendCreate() Ссылка на сообщение Поделиться на другие сайты More sharing options...
sashbek Опубликовано 2 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 ноября, 2021 15 часов назад, usver73 сказал: Скорее всего приведенный кусок кода вызывается раз в свечу текущего ТФ графика. Далее вы пытаетесь найти объект, но делаете странную проверку на 0. Напишите if(ObjrctFinnd(.....)<0) TrendCreate() К сожалению, проблема осталась прежней. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 2 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 ноября, 2021 тогда нужен весь код, точнее, куски кода, где происходит вызов функций рисования Изменено 2 ноября, 2021 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sashbek Опубликовано 2 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 ноября, 2021 10 часов назад, usver73 сказал: тогда нужен весь код, точнее, куски кода, где происходит вызов функций рисования Спасибо, что откликнулись! прикрепил файл etc.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 3 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 ноября, 2021 8 часов назад, sashbek сказал: прикрепил файл у Вас МТФ индикатор (почему-то я подумал, что речь шла о советнике- невнимательно прочел изначальный вопрос). Проблема в вычислении limit- Вам необходимо учитывать разницу между Period() и TimeFrame1. Переделывать Ваш код некогда, посмотрите чужие МТФ индикаторы multi.period.ma22.mq4 mtf_bollinderbands.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 3 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 ноября, 2021 Всем доброго времени! Кто может поделиться кусочком грамотного кода, где увеличивается лот при увеличении эквити. Возможно ее надо сделать как функцию. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти