vitek01 Опубликовано 15 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 марта, 2019 есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства? или есть что то подобное,?спасибо.. Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 15 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 марта, 2019 есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства? или есть что то подобное,?спасибо.. Из терминала нельзя, из программы без проблем. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 15 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 марта, 2019 есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства? Если я правильно понял, типа два раза нажать ЛКМ и в вести нужное значение, то такой возможности нет. Предусмотрено изменение чего либо через код(эксперт, индикатор, скрипт), ну или вызова окошка "свойства" чего либо на графике. Конечно можно через тот же код вывести статичное окошко на график с полем для ввода значения или текста в зависимости от задачи. И это значение будет передаваться куда надо, например в тот же текст объекта. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 15 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 марта, 2019 Цитата есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства? Можно, если объект OBJ_EDIT 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 18 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 марта, 2019 Может кто подсказать какое условие нужно советнику чтоб он открывал позиции на покупку и на продажу при наличии сигналов? Например стоит покупка и появляется сигнал на продажу, тут советник ставит ещё ордер и на продажу. Можно так? if (если есть сигнал на покупку){ открываем ордер на покупку}||if (если есть сигнал на продажу){ открываем ордер на продажу}т.е. вся конструкция без else Изменено 18 марта, 2019 пользователем diodio Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 18 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 марта, 2019 Может кто подсказать какое условие нужно советнику чтоб он открывал позиции на покупку и на продажу при наличии сигналов? Все верно написал! С маленькой поправкой.if (если есть сигнал на покупку){ открываем ордер на покупку}|| if (если есть сигнал на продажу){ открываем ордер на продажу} Добавлено: 18-03-2019 20:49:16Изучаю код индикатора и наткнулся на не понятные мне строки. Прошу разъяснить.extern string TimeFrame = "Current time frame";bool calculateValue;bool returnBars;int init(){calculateValue = (TimeFrame=="calculateValue");returnBars = (TimeFrame=="returnBars");} Изменено 18 марта, 2019 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Может кто подсказать какое условие нужно советнику чтоб он открывал позиции на покупку и на продажу при наличии сигналов? Все верно написал! С маленькой поправкой.if (если есть сигнал на покупку){ открываем ордер на покупку}|| if (если есть сигнал на продажу){ открываем ордер на продажу} Добавлено: 18-03-2019 20:49:16Изучаю код индикатора и наткнулся на не понятные мне строки. Прошу разъяснить.extern string TimeFrame = "Current time frame";bool calculateValue;bool returnBars;int init(){calculateValue = (TimeFrame=="calculateValue");returnBars = (TimeFrame=="returnBars");} Совет. Не изучайте старую версию языка.bool a=b==c; -означает, что если b==c, то a=true, иначе a=false. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ИльяРус Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Добрый день!! Подскажите, пожалуйста, как можно прописать решение подобного уравнение (1,6x+3.4)/(x+2)=1.6333 в коде. :-? Заранее благодарю!! ^:)^ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Подскажите что не так в индикаторе выдает предупреждение на эту строку "drawLine(indicator_name+" "+tn+ur1+"V",tn,(ur21-ur1)/k,tn+(86400-(UTC*3600)),N,ur1);" Пишет implicit conversion from 'number' to 'string' High_Low.mq4 193 30 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlus777 Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Новый урок:http://tradelikeapro.ru/mql4-upravlenie-pc-iz-sovetnika/ 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Подскажите что не так в индикаторе выдает предупреждение на эту строку "drawLine(indicator_name+" "+tn+ur1+"V",tn,(ur21-ur1)/k,tn+(86400-(UTC*3600)),N,ur1);" Пишет implicit conversion from 'number' to 'string' High_Low.mq4 193 30 Это значит что в строку(типа string) хотите впихнуть числовое значение(типа int, long, char или double и т.д.).Это не ошибка, будет и так работать. НО надо приучаться к написанию правильного кода. Типа так:Я понимаю что drawLine это функция и Вы передаете в нее переменные. Скорее всего ошибка тут indicator_name+" "+tn+ur1+"V"indicator_name - уж по любому тип string, значит все в порядкеtn - если целое числовое значение (типа int, long, char) то компилятор ее хочет видеть так IntegerToString(tn)ur1 - например если дробное значение (double) то компилятор ее хочет видеть так DoubleToString(ur1)и т.д.В итоге в место indicator_name+" "+tn+ur1+"V" надо indicator_name+" "+IntegerToString(tn)+DoubleToString(ur1)+"V" 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Это значит что в строку(типа string) хотите впихнуть числовое значение(типа int, long, char или double и т.д.).Это не ошибка, будет и так работать. НО надо приучаться к написанию правильного кода. Типа так:Я понимаю что drawLine это функция и Вы передаете в нее переменные. Скорее всего ошибка тут indicator_name+" "+tn+ur1+"V"indicator_name - уж по любому тип string, значит все в порядкеtn - если целое числовое значение (типа int, long, char) то компилятор ее хочет видеть так IntegerToString(tn)ur1 - например если дробное значение (double) то компилятор ее хочет видеть так DoubleToString(ur1)и т.д.В итоге в место indicator_name+" "+tn+ur1+"V" надо indicator_name+" "+IntegerToString(tn)+DoubleToString(ur1)+"V" СпасибоДобавлено: 19-03-2019 13:31:24Еще вопрос. Прописал в индикаторе чтобы выдавал сообщение на мобильник "SendNotification(" сигнал на покупку High/Low");" , но хотелось бы чтобы приходило сообщение с указанием на каком инструменте. Как это возможно сделать? Изменено 19 марта, 2019 пользователем Partorius Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 как можно прописать решение подобного уравнение (1,6x+3.4)/(x+2)=1.6333 в коде.Вы просите математическую консультацию? х = 4,3(363), в коде: double x = 4.336;или что Вы имели в виду?Прописал в индикаторе чтобы выдавал сообщение на мобильник "SendNotification(" сигнал на покупку High/Low");" , но хотелось бы чтобы приходило сообщение с указанием на каком инструменте. Как это возможно сделать?SendNotification(_Symbol + " сигнал на покупку High/Low");Не подскажете где можно скачать SPY++ ?Попробуйте набрать в строке поиска Гугл: "spy++ download" Изменено 19 марта, 2019 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
ИльяРус Опубликовано 19 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2019 Вы просите математическую консультацию? х = 4,3(363), в коде: double x = 4.336;или что Вы имели в виду? Спасибо за ответ! У меня получилась такая формула x = (1.633*2 - 3.4)/(1.6-1.633), ее и хотел, это на автоматический подсчет лота следующего ордера в сетке в зависимости от поставленной цели безубытка. Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде.Старался объяснить как мог. Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде.Старался объяснить как мог. Приветствую! Если я правильно понял то ситуация такая. Предположим мы отслеживаем тренд, два МА, медленная и быстрая. Произошло пересечение, далее вход в сделку. Сделка отработала в профит, тренд теперь тоже считается отработанным. Теперь задача стоит не входить в сделку, ждать нового тренда. Когда новый тренд придет, все повториться по новому, сделка, отработка, ожидание. Верно я Вас понял? Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде.Старался объяснить как мог. Приветствую! Если я правильно понял то ситуация такая. Предположим мы отслеживаем тренд, два МА, медленная и быстрая. Произошло пересечение, далее вход в сделку. Сделка отработала в профит, тренд теперь тоже считается отработанным. Теперь задача стоит не входить в сделку, ждать нового тренда. Когда новый тренд придет, все повториться по новому, сделка, отработка, ожидание. Верно я Вас понял? Да, всё точно так!!! Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог. datetime timeold;//старое время начала трендаdatetime timenew;//текущее время тренда//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { trendStart();//узнаем время начало тренда if(timenew!=timeold)//проверяем, что начался новый тренд { //да, новый тренд начался int ticket=OrderSend(NULL,OP_BUY,0.1,Ask,3,0,0); if(ticket>0) timeold=timenew;//ордер открыт, считаем тренд отработан } }//+------------------------------------------------------------------+void trendStart()//узнаем время начала тренда { for(int i=0;i { //для восходящего тренда if(iMA(NULL,0,13,0,0,0,i)>iMA(NULL,0,20,0,0,0,i) && iMA(NULL,0,13,0,0,0,i+1) { timenew=Time;//определили время начала сигнала break; } //для нисходящего тренда if(iMA(NULL,0,13,0,0,0,i)iMA(NULL,0,20,0,0,0,i+1)) { timenew=Time;//определили время начала сигнала break; } } } Я думаю в переборе ордеров Вам подсказывать не надо и как впихнуть в условие IF! Единственное в ордерах нас будут интересовать те, которые открылись после начала нового тренда, т.е. timenew Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог. datetime timeold;//старое время начала трендаdatetime timenew;//текущее время тренда//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { trendStart();//узнаем время начало тренда if(timenew!=timeold)//проверяем, что начался новый тренд { //да, новый тренд начался int ticket=OrderSend(NULL,OP_BUY,0.1,Ask,3,0,0); if(ticket>0) timeold=timenew;//ордер открыт, считаем тренд отработан } }//+------------------------------------------------------------------+void trendStart()//узнаем время начала тренда { for(int i=0;i { //для восходящего тренда if(iMA(NULL,0,13,0,0,0,i)>iMA(NULL,0,20,0,0,0,i) && iMA(NULL,0,13,0,0,0,i+1) { timenew=Time;//определили время начала сигнала break; } //для нисходящего тренда if(iMA(NULL,0,13,0,0,0,i)iMA(NULL,0,20,0,0,0,i+1)) { timenew=Time;//определили время начала сигнала break; } } } Я думаю в переборе ордеров Вам подсказывать не надо и как впихнуть в условие IF! Единственное в ордерах нас будут интересовать те, которые открылись после начала нового тренда, т.е. timenew Честно говоря моих знаний не хватило разобраться с Вашим кодом. Если Вас не затруднит, посмотрите советник, который я собрал и посоветуйте как туда правильно вставить эти функции. Заранее Спасибо!!!Samostoaytelno.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог. datetime timeold;//старое время начала трендаdatetime timenew;//текущее время тренда//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { trendStart();//узнаем время начало тренда if(timenew!=timeold)//проверяем, что начался новый тренд { //да, новый тренд начался int ticket=OrderSend(NULL,OP_BUY,0.1,Ask,3,0,0); if(ticket>0) timeold=timenew;//ордер открыт, считаем тренд отработан } }//+------------------------------------------------------------------+void trendStart()//узнаем время начала тренда { for(int i=0;i { //для восходящего тренда if(iMA(NULL,0,13,0,0,0,i)>iMA(NULL,0,20,0,0,0,i) && iMA(NULL,0,13,0,0,0,i+1) { timenew=Time;//определили время начала сигнала break; } //для нисходящего тренда if(iMA(NULL,0,13,0,0,0,i)iMA(NULL,0,20,0,0,0,i+1)) { timenew=Time;//определили время начала сигнала break; } } } Я думаю в переборе ордеров Вам подсказывать не надо и как впихнуть в условие IF! Единственное в ордерах нас будут интересовать те, которые открылись после начала нового тренда, т.е. timenew Честно говоря моих знаний не хватило разобраться с Вашим кодом. Если Вас не затруднит, посмотрите советник, который я собрал и посоветуйте как туда правильно вставить эти функции. Заранее Спасибо!!! Вводится переменная bool isOldTrend;при открытии ордера isOldTrend=true;Далее отслеживаются на закрытии каждой свечи было ли пересечение и, если было, isOldTrend=false; Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 21 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог. datetime timeold;//старое время начала трендаdatetime timenew;//текущее время тренда//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { trendStart();//узнаем время начало тренда if(timenew!=timeold)//проверяем, что начался новый тренд { //да, новый тренд начался int ticket=OrderSend(NULL,OP_BUY,0.1,Ask,3,0,0); if(ticket>0) timeold=timenew;//ордер открыт, считаем тренд отработан } }//+------------------------------------------------------------------+void trendStart()//узнаем время начала тренда { for(int i=0;i { //для восходящего тренда if(iMA(NULL,0,13,0,0,0,i)>iMA(NULL,0,20,0,0,0,i) && iMA(NULL,0,13,0,0,0,i+1) { timenew=Time;//определили время начала сигнала break; } //для нисходящего тренда if(iMA(NULL,0,13,0,0,0,i)iMA(NULL,0,20,0,0,0,i+1)) { timenew=Time;//определили время начала сигнала break; } } } Я думаю в переборе ордеров Вам подсказывать не надо и как впихнуть в условие IF! Единственное в ордерах нас будут интересовать те, которые открылись после начала нового тренда, т.е. timenew Честно говоря моих знаний не хватило разобраться с Вашим кодом. Если Вас не затруднит, посмотрите советник, который я собрал и посоветуйте как туда правильно вставить эти функции. Заранее Спасибо!!! Вводится переменная bool isOldTrend;при открытии ордера isOldTrend=true;Далее отслеживаются на закрытии каждой свечи было ли пересечение и, если было, isOldTrend=false; Уроков на эту тему не было, по этому я не понимаю, даже как правильно эти функции написать и куда добавить сюда, но очень нужно. Может быть есть какие то примеры уже в советнике? Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 22 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2019 Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог. datetime timeold;//старое время начала трендаdatetime timenew;//текущее время тренда//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { trendStart();//узнаем время начало тренда if(timenew!=timeold)//проверяем, что начался новый тренд { //да, новый тренд начался int ticket=OrderSend(NULL,OP_BUY,0.1,Ask,3,0,0); if(ticket>0) timeold=timenew;//ордер открыт, считаем тренд отработан } }//+------------------------------------------------------------------+void trendStart()//узнаем время начала тренда { for(int i=0;i { //для восходящего тренда if(iMA(NULL,0,13,0,0,0,i)>iMA(NULL,0,20,0,0,0,i) && iMA(NULL,0,13,0,0,0,i+1) { timenew=Time;//определили время начала сигнала break; } //для нисходящего тренда if(iMA(NULL,0,13,0,0,0,i)iMA(NULL,0,20,0,0,0,i+1)) { timenew=Time;//определили время начала сигнала break; } } } Я думаю в переборе ордеров Вам подсказывать не надо и как впихнуть в условие IF! Единственное в ордерах нас будут интересовать те, которые открылись после начала нового тренда, т.е. timenew Честно говоря моих знаний не хватило разобраться с Вашим кодом. Если Вас не затруднит, посмотрите советник, который я собрал и посоветуйте как туда правильно вставить эти функции. Заранее Спасибо!!! Вводится переменная bool isOldTrend;при открытии ордера isOldTrend=true;Далее отслеживаются на закрытии каждой свечи было ли пересечение и, если было, isOldTrend=false; Уроков на эту тему не было, по этому я не понимаю, даже как правильно эти функции написать и куда добавить сюда, но очень нужно. Может быть есть какие то примеры уже в советнике? Для начала Вам сюда:https://docs.mql4.com/ru Ссылка на сообщение Поделиться на другие сайты More sharing options...
djnet Опубликовано 22 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2019 Господа, коллеги :) Подскажите с таким вопросом. Исходные данные: Есть история сделок на счете по определенной паре, она постепенно увеличивается.Задача сохранять результат каждой сделки во внешний файл (эксель, б/д, текст, не важно) для того что бы в любой момент советник мог обратится к этому файлу с целью извлечения истории сделок. Если есть у кого пример кода для связки "метак- эксель", просьба показать, ну или как обычно пнуть в нужном направлении что почитать. Заранее спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 22 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2019 Господа, коллеги :) Подскажите с таким вопросом. Исходные данные: Есть история сделок на счете по определенной паре, она постепенно увеличивается.Задача сохранять результат каждой сделки во внешний файл (эксель, б/д, текст, не важно) для того что бы в любой момент советник мог обратится к этому файлу с целью извлечения истории сделок. Если есть у кого пример кода для связки "метак- эксель", просьба показать, ну или как обычно пнуть в нужном направлении что почитать. Заранее спасибо. А доки почитать не пробовали?https://docs.mql4.com/ru/files Ссылка на сообщение Поделиться на другие сайты More sharing options...
djnet Опубликовано 22 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2019 Господа, коллеги :) Подскажите с таким вопросом. Исходные данные: Есть история сделок на счете по определенной паре, она постепенно увеличивается.Задача сохранять результат каждой сделки во внешний файл (эксель, б/д, текст, не важно) для того что бы в любой момент советник мог обратится к этому файлу с целью извлечения истории сделок. Если есть у кого пример кода для связки "метак- эксель", просьба показать, ну или как обычно пнуть в нужном направлении что почитать. Заранее спасибо. А доки почитать не пробовали?https://docs.mql4.com/ru/files Справка достаточно объемная, учить ее наизусть нет смысла, есть смысл обращаться по мере необходимости. А некоторые моменты найти в ней достаточно сложно обычным смертным. Поэтому и вопрос задается. Ваш ответ понятен. Так и я могу ответить, "ищите в интернете". Спасибо. Можно было просто указать на нужный раздел. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти