есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства? или есть что то подобное,?
спасибо..
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства? или есть что то подобное,?
спасибо..
Из терминала нельзя, из программы без проблем.
есть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства?
Если я правильно понял, типа два раза нажать ЛКМ и в вести нужное значение, то такой возможности нет. Предусмотрено изменение чего либо через код(эксперт, индикатор, скрипт), ну или вызова окошка "свойства" чего либо на графике. Конечно можно через тот же код вывести статичное окошко на график с полем для ввода значения или текста в зависимости от задачи. И это значение будет передаваться куда надо, например в тот же текст объекта.
Можно, если объект OBJ_EDITЦитатаесть ли возможность изменять текст объекта, прямо на графике, не входя в его свойства?
Может кто подсказать какое условие нужно советнику чтоб он открывал позиции на покупку и на продажу при наличии сигналов? Например стоит покупка и появляется сигнал на продажу, тут советник ставит ещё ордер и на продажу.
Можно так?
if (если есть сигнал на покупку)
{ открываем ордер на покупку}
||
if (если есть сигнал на продажу)
{ открываем ордер на продажу}
т.е. вся конструкция без else
Изменено 18 марта, 2019 пользователем diodio
Может кто подсказать какое условие нужно советнику чтоб он открывал позиции на покупку и на продажу при наличии сигналов?
Все верно написал! С маленькой поправкой.
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
Может кто подсказать какое условие нужно советнику чтоб он открывал позиции на покупку и на продажу при наличии сигналов?
Все верно написал! С маленькой поправкой.
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,6x+3.4)/(x+2)=1.6333 в коде. :-? Заранее благодарю!! ^:)^
Подскажите что не так в индикаторе выдает предупреждение на эту строку "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
Новый урок:
http://tradelikeapro.ru/mql4-upravlenie-pc-iz-sovetnika/
Подскажите что не так в индикаторе выдает предупреждение на эту строку "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"
Это значит что в строку(типа 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
Вы просите математическую консультацию? х = 4,3(363), в коде: double x = 4.336;как можно прописать решение подобного уравнение (1,6x+3.4)/(x+2)=1.6333 в коде.
или что Вы имели в виду?
SendNotification(_Symbol + " сигнал на покупку High/Low");Прописал в индикаторе чтобы выдавал сообщение на мобильник "SendNotification(" сигнал на покупку High/Low");" , но хотелось бы чтобы приходило сообщение с указанием на каком инструменте. Как это возможно сделать?
Попробуйте набрать в строке поиска Гугл: "spy++ download"Не подскажете где можно скачать SPY++ ?
Изменено 19 марта, 2019 пользователем 0ll
Вы просите математическую консультацию? х = 4,3(363), в коде: double x = 4.336;
или что Вы имели в виду?
Спасибо за ответ! У меня получилась такая формула x = (1.633*2 - 3.4)/(1.6-1.633), ее и хотел, это на автоматический подсчет лота следующего ордера в сетке в зависимости от поставленной цели безубытка.
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде.Старался объяснить как мог.
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде.Старался объяснить как мог.
Приветствую! Если я правильно понял то ситуация такая. Предположим мы отслеживаем тренд, два МА, медленная и быстрая. Произошло пересечение, далее вход в сделку. Сделка отработала в профит, тренд теперь тоже считается отработанным. Теперь задача стоит не входить в сделку, ждать нового тренда. Когда новый тренд придет, все повториться по новому, сделка, отработка, ожидание. Верно я Вас понял?
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде.Старался объяснить как мог.
Приветствую! Если я правильно понял то ситуация такая. Предположим мы отслеживаем тренд, два МА, медленная и быстрая. Произошло пересечение, далее вход в сделку. Сделка отработала в профит, тренд теперь тоже считается отработанным. Теперь задача стоит не входить в сделку, ждать нового тренда. Когда новый тренд придет, все повториться по новому, сделка, отработка, ожидание. Верно я Вас понял?
Да, всё точно так!!!
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог.
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
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог.
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
Честно говоря моих знаний не хватило разобраться с Вашим кодом. Если Вас не затруднит, посмотрите советник, который я собрал и посоветуйте как туда правильно вставить эти функции. Заранее Спасибо!!!
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог.
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;
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог.
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;
Уроков на эту тему не было, по этому я не понимаю, даже как правильно эти функции написать и куда добавить сюда, но очень нужно. Может быть есть какие то примеры уже в советнике?
Всем доброго дня! Подскажите пожалуйста функцию для советника, что бы он прекращал торговлю по индикаторам, после получения прибыли, а не входил на этом же тренде. Старался объяснить как мог.
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
Господа, коллеги :) Подскажите с таким вопросом.
Исходные данные: Есть история сделок на счете по определенной паре, она постепенно увеличивается.
Задача сохранять результат каждой сделки во внешний файл (эксель, б/д, текст, не важно) для того что бы в любой момент советник мог обратится к этому файлу с целью извлечения истории сделок. Если есть у кого пример кода для связки "метак- эксель", просьба показать, ну или как обычно пнуть в нужном направлении что почитать. Заранее спасибо.
Господа, коллеги :) Подскажите с таким вопросом.
Исходные данные: Есть история сделок на счете по определенной паре, она постепенно увеличивается.
Задача сохранять результат каждой сделки во внешний файл (эксель, б/д, текст, не важно) для того что бы в любой момент советник мог обратится к этому файлу с целью извлечения истории сделок. Если есть у кого пример кода для связки "метак- эксель", просьба показать, ну или как обычно пнуть в нужном направлении что почитать. Заранее спасибо.
А доки почитать не пробовали?
https://docs.mql4.com/ru/files
Господа, коллеги :) Подскажите с таким вопросом.
Исходные данные: Есть история сделок на счете по определенной паре, она постепенно увеличивается.
Задача сохранять результат каждой сделки во внешний файл (эксель, б/д, текст, не важно) для того что бы в любой момент советник мог обратится к этому файлу с целью извлечения истории сделок. Если есть у кого пример кода для связки "метак- эксель", просьба показать, ну или как обычно пнуть в нужном направлении что почитать. Заранее спасибо.
А доки почитать не пробовали?
https://docs.mql4.com/ru/files
Справка достаточно объемная, учить ее наизусть нет смысла, есть смысл обращаться по мере необходимости. А некоторые моменты найти в ней достаточно сложно обычным смертным. Поэтому и вопрос задается. Ваш ответ понятен. Так и я могу ответить, "ищите в интернете". Спасибо. Можно было просто указать на нужный раздел.
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем