Функция вычисляет и возвращает номер бара (смещение относительно текущего бара) для указанной цены. Номер бара вычисляется при помощи линейного уравнения по первой и второй координатам. Применяется для трендовых линий и аналогичных объектов. Для получения информации об ошибке необходимо вызвать функцию GetLastError(). См. такжеObjectGetValueByShift().
Параметры:
name
-
Имя объекта.
value
-
Значение цены.
Пример:
Вопрос:
Где здесь ошибка, выдает сообщение номер бара -1(я это самый первый бар в истории). Больше инфо в учебнике не нашел. Как узнать номер бара по цене?
У Вас на графике есть трендовая линия с именем "bar"? Если такая линия у Вас есть, то вполне возможно, что эта линия расположена за пределами указываемой Вами цены.
TarasBY: У Вас на графике есть трендовая линия с именем "bar"? Если такая линия у Вас есть, то вполне возможно, что эта линия расположена за пределами указываемой Вами цены.
Спасибо, да я указал не верное значение линии. Теперь понял в чем проблема.
Zhunko: Вы запустите и посмотрите. Весьма полезный "набор".
Я то вижу что через "собаку" и пробелы между ней выводится каое-то число. Но почему так происходит? Это что-то не из mql-овского программирования? На Си такой приём бывает?
Что-то я не особо понял, зачем ему это. Да и выводит тоже не совсем понятно что. Я вижу через "собаку" на некоторых уровнях числа фибо, а на некоторых нечто другое?
Можно пояснить причину их появления? Мне стало очень интересно. Но я уже второй день открыл, посмотрел и не въехал.
Вот продублирую код скрипта, что-бы не искали его в истории:
Друзья, столкнулся с простой проблемой, но никак не могу ее решить. Суть в следующем. При выполнении определенных условий открывается сделка (назовем ее ведущей). И мне надо, чтобы в течение следующих 3-х баров, если это условие повторяется, открывалась еще одна сделка (повторная). Если в течение следующих трех баров нужное мне услови не срабатывает, то повторная сделка не должна открываться, пока уже в следующий раз снова не откроется ведущая сделка. И т.д. У меня, почему-то, повторная сделка открывается только один раз (в смысле при выполнении всех условий вообще в первый раз - она открывается, а вот в дальнейщем, когда после новой ведущей сделки возникается условие открытия повторной сделки - она уже не открывается). Помогите, пожалуйста.
//условие открытия повторной сделкиfor (povtor_up=1;povtor_up<4;povtor_up++)
if ((povtor_buy==1) && (adx_cont==1)&&(sb==1))
{
CL = iClose(NULL,0,1);
stop = CL - SLP*Point;
raz_up = (CL - frac_down);
take_1 = 0;
take_2 = 0;
if (CL<(frac_up-FR_OVER*Point))
take_1 = (CL + raz_up*MNP_1);
if (CL>=(frac_up-FR_OVER*Point))
take_2 = (CL + raz_up*MNP_2);
if (take_1>0)
{
take_1n = NormalizeDouble(take_1,5);
take = take_1n;
}
if (take_2>0)
{
take_2n = NormalizeDouble(take_2,5);
take = take_2n;
}
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку buy");
return(-1);
}
ticket_buy_cont=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,stop,take,com,Magic,0,Yellow);
if(ticket_buy_cont == -1)
{
Alert(Symbol(),"ошибка:buy", GetLastError());
return(-1);
}
if(ticket_buy_cont > 1)
{Alert (Symbol(),"buy повтор - ок !");
povtor_buy=0;
povtor_up=0;
}
}
else
povtor_buy=0;
povtor_up=0;
//условие открытия ведущей сделкиif ((adx_ts==1) && (sb==1) && (FLAG==0))
{
CL = iClose(NULL,0,1);
stop = CL - SL*Point;
raz_up = (CL - frac_down);
take_1 = 0;
take_2 = 0;
if (CL<(frac_up-FR_OVER*Point))
take_1 = (CL + raz_up*MN_1);
if (CL>=(frac_up-FR_OVER*Point))
take_2 = (CL + raz_up*MN_2);
if (take_1>0)
{
take_1n = NormalizeDouble(take_1,5);
take = take_1n;
}
if (take_2>0)
{
take_2n = NormalizeDouble(take_2,5);
take = take_2n;
}
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку buy");
return(-1);
}
ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,stop,take,com,Magic,0,Yellow);
if(ticket_buy == -1)
{
Alert(Symbol(),"ошибка:buy", GetLastError());
return(-1);
}
if(ticket_buy > 1)
{Alert (Symbol(),"buy при начале - ок !");
FLAG=1;
povtor_up=1;
povtor_buy=1;
}
}
Друзья, столкнулся с простой проблемой, но никак не могу ее решить. Суть в следующем. При выполнении определенных условий открывается сделка (назовем ее ведущей). И мне надо, чтобы в течение следующих 3-х баров, если это условие повторяется, открывалась еще одна сделка (повторная). Если в течение следующих трех баров нужное мне услови не срабатывает, то повторная сделка не должна открываться, пока уже в следующий раз снова не откроется ведущая сделка. И т.д. У меня, почему-то, повторная сделка открывается только один раз (в смысле при выполнении всех условий вообще в первый раз - она открывается, а вот в дальнейщем, когда после новой ведущей сделки возникается условие открытия повторной сделки - она уже не открывается). Помогите, пожалуйста.
Не забывайте (или привыкайте - как Вам будет угодно), что советник в процессе работы (если, конечно, это не тестер) может быть перезагружен, а значит, значения флагов ПОТЕРЯЮТСЯ, если их не записывать куда-либо при деинициализации и не восстанавливать при инициализации. Проще вести "учёт" своих ордеров. Если есть различия м\у ордерами (в данном случае ведущий и ведомый), то их различать можно по разным Магикам или по записи в комментариях, или второй-ведомый открывается после наличия 1-го ордера (как будет душе угодно).
Разделите код на пользовательские функции - так он проще читается и воспринимается: отдельно условия на открытие (получение сигнала), отдельно получение СТОПов, отдельно открытие ордеров. Совершенно непонятен смысл этого цикла:
for (povtor_up = 1; povtor_up < 4; povtor_up++)
если это упомянутая проверка: "в течение следующих 3-х баров" - то я чего-то в этой жизни пропустил...
У Вас есть время открытия первого-"ведущего" ордера - от него и "пляшите".
Прошу помочь или посоветовать как разрулить ситуацию с обеспечением бесперебойной работы советников. Ситуация следующая:
1. Запущен реальный микросчет, на которого работают 36 советников на 21 инструментах на ТФ Д1 - не выключаются в течении суток торговой недели;
2. Запущены на отдельных демо - счетах ещё 58 советников также на Д1, которых вынужден отключать путем поочередного "оживления" в течении 1-3-х минут, после того, как они принимают торговые решения, начиная с 00-00 серверного времени ДЦ ежесуточно, на что уходит масса времени и нервов глубоко за полночь;
3. Запущен демо-счет на ТФ Н4, работающий на постоянной основе.
Вопрос: Как запустить советники по п. 2 также на постоянной основе, сейчас виртуальной памяти компьютера нехватает это осуществить. Что делать: увеличивать оперативную память, сменить комп. на двухъядерный или искать более мощный ноутбук? А может быть есть другое организационное или программное решение?
Прошу помочь или посоветовать как разрулить ситуацию с обеспечением бесперебойной работы советников. Ситуация следующая:
1. Запущен реальный микросчет, на которого работают 36 советников на 21 инструментах на ТФ Д1 - не выключаются в течении суток торговой недели;
2. Запущены на отдельных демо - счетах ещё 58 советников также на Д1, которых вынужден отключать путем поочередного "оживления" в течении 1-3-х минут, после того, как они принимают торговые решения, начиная с 00-00 серверного времени ДЦ ежесуточно, на что уходит масса времени и нервов глубоко за полночь;
3. Запущен демо-счет на ТФ Н4, работающий на постоянной основе.
Вопрос: Как запустить советники по п. 2 также на постоянной основе, сейчас виртуальной памяти компьютера нехватает это осуществить. Что делать: увеличивать оперативную память, сменить комп. на двухъядерный или искать более мощный ноутбук? А может быть есть другое организационное или программное решение?
Не совсем понятен п. 2 на предмет оживления? Вы им, что искусственное дыхание делаете или нашатырь заставляете нюхать.
Нарастить ОЗУ - самый дешевый и эффективный метод, который сам применяю по мере необходимости. Чем больше ОЗУ, тем шустрее все шевелится. Ну и апгрейд остального железа, если прежнее уже не котируется. Два ядра для такого количества задач на одном компе - маловато будет.
Прошу помочь или посоветовать как разрулить ситуацию с обеспечением бесперебойной работы советников. Ситуация следующая:
1. Запущен реальный микросчет, на которого работают 36 советников на 21 инструментах на ТФ Д1 - не выключаются в течении суток торговой недели;
2. Запущены на отдельных демо - счетах ещё 58 советников также на Д1, которых вынужден отключать путем поочередного "оживления" в течении 1-3-х минут, после того, как они принимают торговые решения, начиная с 00-00 серверного времени ДЦ ежесуточно, на что уходит масса времени и нервов глубоко за полночь;
3. Запущен демо-счет на ТФ Н4, работающий на постоянной основе.
Вопрос: Как запустить советники по п. 2 также на постоянной основе, сейчас виртуальной памяти компьютера нехватает это осуществить. Что делать: увеличивать оперативную память, сменить комп. на двухъядерный или искать более мощный ноутбук? А может быть есть другое организационное или программное решение?
Другое организационное решение - это VPS (Virtual Privat Server).
Другое программное решение (если на разных парах стоит один и тот же советник) - сделать из Вашего советника мультивалютник.
Не совсем понятен п. 2 на предмет оживления? Вы им, что искусственное дыхание делаете или нашатырь заставляете нюхать.
Нарастить ОЗУ - самый дешевый и эффективный метод, который сам применяю по мере необходимости. Чем больше ОЗУ, тем шустрее все шевелится. Ну и апгрейд остального железа, если прежнее уже не котируется.
Имеется ввиду - они, поочередно, включаются в работу на 1- 3 минуты, затем вновь отключаются на 1 сутки. Если их включить сразу. например, больше 10 штук, комп. начинает глючить и времени теряется больше, чем по одной или две штуки. Спасибо, попробую нарастить ОЗУ, но нужно мне знать до какого объёма ее нужно наращивать? Или действовать путем проб и ошибок?
Инфо из учебника:
См. также ObjectGetValueByShift().
Вопрос:
Где здесь ошибка, выдает сообщение номер бара -1(я это самый первый бар в истории). Больше инфо в учебнике не нашел. Как узнать номер бара по цене?
а чему равна переменная time в начале цикла ?
У Вас на графике есть трендовая линия с именем "bar"? Если такая линия у Вас есть, то вполне возможно, что эта линия расположена за пределами указываемой Вами цены.
Спасибо, да я указал не верное значение линии. Теперь понял в чем проблема.
Вы запустите и посмотрите. Весьма полезный "набор".
Я то вижу что через "собаку" и пробелы между ней выводится каое-то число. Но почему так происходит? Это что-то не из mql-овского программирования? На Си такой приём бывает?
Что-то я не особо понял, зачем ему это. Да и выводит тоже не совсем понятно что. Я вижу через "собаку" на некоторых уровнях числа фибо, а на некоторых нечто другое?
Можно пояснить причину их появления? Мне стало очень интересно. Но я уже второй день открыл, посмотрел и не въехал.
Вот продублирую код скрипта, что-бы не искали его в истории:
Друзья, столкнулся с простой проблемой, но никак не могу ее решить. Суть в следующем. При выполнении определенных условий открывается сделка (назовем ее ведущей). И мне надо, чтобы в течение следующих 3-х баров, если это условие повторяется, открывалась еще одна сделка (повторная). Если в течение следующих трех баров нужное мне услови не срабатывает, то повторная сделка не должна открываться, пока уже в следующий раз снова не откроется ведущая сделка. И т.д. У меня, почему-то, повторная сделка открывается только один раз (в смысле при выполнении всех условий вообще в первый раз - она открывается, а вот в дальнейщем, когда после новой ведущей сделки возникается условие открытия повторной сделки - она уже не открывается). Помогите, пожалуйста.
Друзья, столкнулся с простой проблемой, но никак не могу ее решить. Суть в следующем. При выполнении определенных условий открывается сделка (назовем ее ведущей). И мне надо, чтобы в течение следующих 3-х баров, если это условие повторяется, открывалась еще одна сделка (повторная). Если в течение следующих трех баров нужное мне услови не срабатывает, то повторная сделка не должна открываться, пока уже в следующий раз снова не откроется ведущая сделка. И т.д. У меня, почему-то, повторная сделка открывается только один раз (в смысле при выполнении всех условий вообще в первый раз - она открывается, а вот в дальнейщем, когда после новой ведущей сделки возникается условие открытия повторной сделки - она уже не открывается). Помогите, пожалуйста.
Не забывайте (или привыкайте - как Вам будет угодно), что советник в процессе работы (если, конечно, это не тестер) может быть перезагружен, а значит, значения флагов ПОТЕРЯЮТСЯ, если их не записывать куда-либо при деинициализации и не восстанавливать при инициализации. Проще вести "учёт" своих ордеров. Если есть различия м\у ордерами (в данном случае ведущий и ведомый), то их различать можно по разным Магикам или по записи в комментариях, или второй-ведомый открывается после наличия 1-го ордера (как будет душе угодно).
Разделите код на пользовательские функции - так он проще читается и воспринимается: отдельно условия на открытие (получение сигнала), отдельно получение СТОПов, отдельно открытие ордеров. Совершенно непонятен смысл этого цикла:
если это упомянутая проверка: "в течение следующих 3-х баров" - то я чего-то в этой жизни пропустил...
У Вас есть время открытия первого-"ведущего" ордера - от него и "пляшите".
Прошу помочь или посоветовать как разрулить ситуацию с обеспечением бесперебойной работы советников. Ситуация следующая:
1. Запущен реальный микросчет, на которого работают 36 советников на 21 инструментах на ТФ Д1 - не выключаются в течении суток торговой недели;
2. Запущены на отдельных демо - счетах ещё 58 советников также на Д1, которых вынужден отключать путем поочередного "оживления" в течении 1-3-х минут, после того, как они принимают торговые решения, начиная с 00-00 серверного времени ДЦ ежесуточно, на что уходит масса времени и нервов глубоко за полночь;
3. Запущен демо-счет на ТФ Н4, работающий на постоянной основе.
Вопрос: Как запустить советники по п. 2 также на постоянной основе, сейчас виртуальной памяти компьютера нехватает это осуществить. Что делать: увеличивать оперативную память, сменить комп. на двухъядерный или искать более мощный ноутбук? А может быть есть другое организационное или программное решение?
Прошу помочь или посоветовать как разрулить ситуацию с обеспечением бесперебойной работы советников. Ситуация следующая:
1. Запущен реальный микросчет, на которого работают 36 советников на 21 инструментах на ТФ Д1 - не выключаются в течении суток торговой недели;
2. Запущены на отдельных демо - счетах ещё 58 советников также на Д1, которых вынужден отключать путем поочередного "оживления" в течении 1-3-х минут, после того, как они принимают торговые решения, начиная с 00-00 серверного времени ДЦ ежесуточно, на что уходит масса времени и нервов глубоко за полночь;
3. Запущен демо-счет на ТФ Н4, работающий на постоянной основе.
Вопрос: Как запустить советники по п. 2 также на постоянной основе, сейчас виртуальной памяти компьютера нехватает это осуществить. Что делать: увеличивать оперативную память, сменить комп. на двухъядерный или искать более мощный ноутбук? А может быть есть другое организационное или программное решение?
Не совсем понятен п. 2 на предмет оживления? Вы им, что искусственное дыхание делаете или нашатырь заставляете нюхать.
Нарастить ОЗУ - самый дешевый и эффективный метод, который сам применяю по мере необходимости. Чем больше ОЗУ, тем шустрее все шевелится. Ну и апгрейд остального железа, если прежнее уже не котируется. Два ядра для такого количества задач на одном компе - маловато будет.
Прошу помочь или посоветовать как разрулить ситуацию с обеспечением бесперебойной работы советников. Ситуация следующая:
1. Запущен реальный микросчет, на которого работают 36 советников на 21 инструментах на ТФ Д1 - не выключаются в течении суток торговой недели;
2. Запущены на отдельных демо - счетах ещё 58 советников также на Д1, которых вынужден отключать путем поочередного "оживления" в течении 1-3-х минут, после того, как они принимают торговые решения, начиная с 00-00 серверного времени ДЦ ежесуточно, на что уходит масса времени и нервов глубоко за полночь;
3. Запущен демо-счет на ТФ Н4, работающий на постоянной основе.
Вопрос: Как запустить советники по п. 2 также на постоянной основе, сейчас виртуальной памяти компьютера нехватает это осуществить. Что делать: увеличивать оперативную память, сменить комп. на двухъядерный или искать более мощный ноутбук? А может быть есть другое организационное или программное решение?
Другое организационное решение - это VPS (Virtual Privat Server).
Другое программное решение (если на разных парах стоит один и тот же советник) - сделать из Вашего советника мультивалютник.
Не совсем понятен п. 2 на предмет оживления? Вы им, что искусственное дыхание делаете или нашатырь заставляете нюхать.
Нарастить ОЗУ - самый дешевый и эффективный метод, который сам применяю по мере необходимости. Чем больше ОЗУ, тем шустрее все шевелится. Ну и апгрейд остального железа, если прежнее уже не котируется.