Ответ
 
Опции темы
Старый 09.08.2013, 15:12   #1441 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от aufx Посмотреть сообщение
Всем добрый день!
Подскажите пожалуйста.

В индикаторе при выводе на график используется функция WindowPriceMax.
Что бы нагляднее был график используется ее значения для маштабирования выводимой информации. В общем все замечательно но при изменении таймфрейма , WindowPriceMax возвращает значение не текущего окна а предыдущего. К примеру запустили индикатор на D1, WindowPriceMax вернул значение для D1, перешли на H4 WindowPriceMax вернул значение для D1, перешли с H4 на H1 WindowPriceMax вернул значение для H4. Т.о. WindowPriceMax возвращает значение для предыдущего окна а не для текущего. Так и должно быть?
Возможно ли сделать так что бы WindowPriceMax возвращал значения для текущего окна а не для предыдущего?
Так не должно быть, это баг. Перерисовывай на втором тике после инициализации, там уже все нормально. Ну и метаквотам можно отписать.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
aufx (09.08.2013)
Старый 09.08.2013, 15:19   #1442 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от sergch Посмотреть сообщение
Совсем недавно начал вникать в MQL и сразу же понял, что стандартной книги не хватает, слишком мало примеров. Если знаете стоящее чтиво - скиньте в ЛС, очень уж хочется изучить этот язык, а программировать через С/С++ слишком уж накладно по времени.
Стоящее чтиво это качественный код, имея базовые представления, тем паче знания С, смотрите как классики пишут, например KimIV, на codebase.mql4.com
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.08.2013, 15:37   #1443 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от qqmber Посмотреть сообщение
Стоящее чтиво это качественный код, имея базовые представления, тем паче знания С, смотрите как классики пишут, например KimIV, на codebase.mql4.com
А мне почему-то не нравится как пишет ким.
Какие-то лишние не нужные переменные втыкает, что-то куда-то переплетается одно с другим... Я посмотрел 1 или 2 его кода и больше не смог.
Мне нравится как пишет Кирилл (Programmer) на форуме Альпари. И его курс по mql4 прилично написан. Я зная только бейсик, по его урокам всё понял за пару недель. А-то и раньше.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 09.08.2013, 15:57   #1444 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от AlexeyVik Посмотреть сообщение
А мне почему-то не нравится как пишет ким.
Какие-то лишние не нужные переменные втыкает, что-то куда-то переплетается одно с другим... Я посмотрел 1 или 2 его кода и больше не смог.
Мне нравится как пишет Кирилл (Programmer) на форуме Альпари. И его курс по mql4 прилично написан. Я зная только бейсик, по его урокам всё понял за пару недель. А-то и раньше.
Ага, Кирилла тоже советую почитать, он очень ответственно относится к делу, и у него практически нет ни технических ни логических ошибок, он Мастер.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (09.08.2013), Viko2000 (01.05.2015)
Старый 09.08.2013, 17:50   #1445 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Сообщение от qqmber Посмотреть сообщение
Так не должно быть, это баг. Перерисовывай на втором тике после инициализации, там уже все нормально. Ну и метаквотам можно отписать.
Спасибо!
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.08.2013, 17:57   #1446 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от qqmber Посмотреть сообщение
Сообщение от aufx Посмотреть сообщение
Всем добрый день!
Подскажите пожалуйста.

В индикаторе при выводе на график используется функция WindowPriceMax.
Что бы нагляднее был график используется ее значения для маштабирования выводимой информации. В общем все замечательно но при изменении таймфрейма , WindowPriceMax возвращает значение не текущего окна а предыдущего. К примеру запустили индикатор на D1, WindowPriceMax вернул значение для D1, перешли на H4 WindowPriceMax вернул значение для D1, перешли с H4 на H1 WindowPriceMax вернул значение для H4. Т.о. WindowPriceMax возвращает значение для предыдущего окна а не для текущего. Так и должно быть?
Возможно ли сделать так что бы WindowPriceMax возвращал значения для текущего окна а не для предыдущего?
Так не должно быть, это баг. Перерисовывай на втором тике после инициализации, там уже все нормально. Ну и метаквотам можно отписать.
Почему, сразу баг?
А разве не может быть ошибки в коде? В какой момент определяется тф и верхняя граница окна?
У меня есть индикатор с этими WindowPriceMax() и WindowPriceMin() всё работает исправно.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 03:18   #1447 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Сообщение от AlexeyVik Посмотреть сообщение
Почему, сразу баг?
А разве не может быть ошибки в коде? В какой момент определяется тф и верхняя граница окна?
У меня есть индикатор с этими WindowPriceMax() и WindowPriceMin() всё работает исправно.
Вот пример

#property indicator_chart_window

int start()
{
Alert(WindowPriceMax());
return(0);
}

Где тут может быть ошибка?
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 05:57   #1448 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от aufx Посмотреть сообщение
Вот пример

#property indicator_chart_window

int start()
{
Alert(WindowPriceMax());
return(0);
}

Где тут может быть ошибка?
А что-ж ты скрин не приложил с неправильным показанием?
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 07:20   #1449 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Сообщение от AlexeyVik Посмотреть сообщение
А что-ж ты скрин не приложил с неправильным показанием?
Немного изменив код, что бы было видно таймфрейм
Alert(Period()+" "+WindowPriceMax());

На рисунке во вложении видно что при переходе С D1 на H1
WindowPriceMax не поменял значение, хотя визуально видно
что максимальный размер шкалы больше чем выдал WindowPriceMax
Миниатюры:
Нажмите на изображение для увеличения
Название: пример.PNG
Просмотров: 14
Размер:	36.3 Кб
ID:	128003  
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 08:07   #1450 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
И всё-таки ты чуток лукавишь.
Этот alert у тебя в init() а не в start(). Не знаю можно-ли называть это багом??? Но, видимо, так устроен МТ. Открыт ТФ, получены все параметры, а когда ты переключаешь на другой ТФ, приоритет выполнения имеет пользовательский код. А такие параметры как WindowPriceMax() определяются позже. Отсюда и показание предыдущее.
Если поставить в start() то с приходом первого тика на новом ТФ показание будет правильным.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 08:33   #1451 (permalink)
Интересующийся
 
Аватар для aufx
 
Регистрация: 16.11.2012
Сообщений: 26
Репутация: 3
aufx
Сказал(а) спасибо: 11
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 22
Сообщение от AlexeyVik Посмотреть сообщение
И всё-таки ты чуток лукавишь.
Этот alert у тебя в init() а не в start(). Не знаю можно-ли называть это багом??? Но, видимо, так устроен МТ. Открыт ТФ, получены все параметры, а когда ты переключаешь на другой ТФ, приоритет выполнения имеет пользовательский код. А такие параметры как WindowPriceMax() определяются позже. Отсюда и показание предыдущее.
Если поставить в start() то с приходом первого тика на новом ТФ показание будет правильным.
Alert "стоит" в start

#property indicator_chart_window

int start()
{
Alert(Period()+" "+WindowPriceMax());
return(0);
}


На счет нового тика посмотрю в понедельник, но
возникает вопрос о возможности применения этой функции
в скриптах. Там она точно неверные данные будет выдавать.
aufx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 08:49   #1452 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Ну пусть даже в старте. Я почему-то проверит решил в советнике, а старт не исполняется без тиков. Смотри в понедельник.
Вот мои строки из индикатора
Код:
            if(Corner < 0  || Bid > (WindowPriceMax()+WindowPriceMin())/2+5*Point)
             {
              y1 = 4.1+Y_order;
              y2 = 4.1-Y_order;
              corn = 3;
             }
       else if(Corner >= 0 && Bid < (WindowPriceMax()+WindowPriceMin())/2-5*Point)
        {
         corn = 1;
         y1 = 4.1-Y_order;
         y2 = 4.1+Y_order;
        }
Всё работает правильно. Здесь определяется в какой угол разместить информацию. В нижний правый или верхний правый.

Последний раз редактировалось AlexeyVik; 10.08.2013 в 08:53.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 09:00   #1453 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Это на самом деле давно известный баг или не баг, смотря с чьей стороны смотреть.
На первом тике индикатор еще не знает, какие у него WindowPrice*, метаквоты считают, что это правильно, типа особенность индикаторов.
Я считаю, можно было бы в init() все уже выяснить.
Скрипты и эксперты этой особенности не имеют, у них все будет ОК.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 12:05   #1454 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от qqmber Посмотреть сообщение
Это на самом деле давно известный баг или не баг, смотря с чьей стороны смотреть.
На первом тике индикатор еще не знает, какие у него WindowPrice*, метаквоты считают, что это правильно, типа особенность индикаторов.
Я считаю, можно было бы в init() все уже выяснить.
Скрипты и эксперты этой особенности не имеют, у них все будет ОК.
То-есть как не имеют? Скрипты, ладно. Там нет необходимости переключать ТФ во время выполнения кода. А в советниках при переключении ТФ то-же самое. Выполняется init() а потом собирается информация о состоянии окна и т.д. Тут и получишь WindowPriceМах / Min с предыдущего ТФ.
А как правильно, что должно иметь выше приоритет... Раз-на-раз не приходится. Если будет какая-то задержка в выполнении кода советника, то начнутся претензии с другой стороны. В общем надо подстраиваться к реалиям.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 12:32   #1455 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от AlexeyVik Посмотреть сообщение
То-есть как не имеют? Скрипты, ладно. Там нет необходимости переключать ТФ во время выполнения кода. А в советниках при переключении ТФ то-же самое. Выполняется init() а потом собирается информация о состоянии окна и т.д. Тут и получишь WindowPriceМах / Min с предыдущего ТФ.
А как правильно, что должно иметь выше приоритет... Раз-на-раз не приходится. Если будет какая-то задержка в выполнении кода советника, то начнутся претензии с другой стороны. В общем надо подстраиваться к реалиям.
Советники получают правильный WindowPriceМах / Min на первом тике. Это торговый поток, там гарантируется корректное окружение.
Индикаторы получают его на втором. Это понятно почему для индикаторов _separate_window, но не для _chart_window. Возможно, есть неопубликованные сложности, заставляющие одинаково обрабатывать оба вида.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 12:45   #1456 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Так ты-же говоришь о получении этих данных в init()
Сообщение от qqmber Посмотреть сообщение
Я считаю, можно было бы в init() все уже выяснить.
а не на первом тике.
На первом тике и в советнике и в индикаторе покажет правильно.
Дело всё в целесообразности проверять/получать WindowPriceМах на каждом тике. А с другой стороны, если поставить проверку переключения ТФ то это опять-же не будет быстрей выполняться чем WindowPriceМах()
Потому я и говорю о приоритете выполнения, что важней, собрать информацию которой не часто пользуются или выполнить код советника в котором открытие, закрытие и модификация ордеров.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 10.08.2013, 20:37   #1457 (permalink)
Заблокирован
 
Аватар для Britozavr
 
Регистрация: 29.07.2013
Сообщений: 10
Репутация: 2
Britozavr
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Поинты: 12

По умолчанию Скажите дорогие программисты


возможно ли вывести инфу в отдельном индикаторе о количестве бычьих или медвежьих свечей на истории равных по цвету линии индикатора последней свечи данного таймфрейма. То есть если индикатор отображает 5 свечу медвежьего тренда в подряд красным цвеном, как вывести цифру пять?
Britozavr вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.08.2013, 07:12   #1458 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Britozavr Посмотреть сообщение
возможно ли вывести инфу в отдельном индикаторе о количестве бычьих или медвежьих свечей на истории равных по цвету линии индикатора последней свечи данного таймфрейма. То есть если индикатор отображает 5 свечу медвежьего тренда в подряд красным цвеном, как вывести цифру пять?
http://docs.mql4.com/ru/constants/wingdings
Код значка 133 или 144
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 11.08.2013, 11:54   #1459 (permalink)
Заблокирован
 
Аватар для Britozavr
 
Регистрация: 29.07.2013
Сообщений: 10
Репутация: 2
Britozavr
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Поинты: 12
Мне не нужен код значков. Мне нужна цифра о количестве свеч равных бычьему или медвежьему пересечению линий индикатора.
Britozavr вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.08.2013, 12:41   #1460 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,526
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,115
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Britozavr Посмотреть сообщение
Мне не нужен код значков. Мне нужна цифра о количестве свеч равных бычьему или медвежьему пересечению линий индикатора.
Кто ясно мыслит, тот ясно излагает. ©
Выделенное я понял так, что надо посчитать и тебе сообщить.
Ну извини если я ошибся.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Dobryj (11.08.2013)
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 06:53. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO