В выходные время идёт а баров нет, сдвиг накладывается. Наверное в этом причина.
Я это учел, но мысль правильная
// введем условие по рассогласование времени в пятницу, и зимних праздников if ((TimeDayOfWeek(timed2)==1 && (TimeMonth(timed2)!=1 && TimeDay(timed2)!=2)) || (TimeDayOfWeek(timed2)==1 && (TimeMonth(timed2)!=12 && TimeDay(timed2)!=26))) time_d2 = timed2-48*3600+Period(); else if ((TimeDayOfWeek(timed2)!=1 && TimeMonth(timed2)==1 && TimeDay(timed2)==2) || (TimeDayOfWeek(timed2)!=1 && TimeMonth(timed2)==12 && TimeDay(timed2)==26)) time_d2 = timed2-24*3600+Period(); else time_d2 = timed2;
Мне кажется что функцию по времени нужно изменить, и передать ей бар через фугкцию iBarShift(NULL,0,timed1)
Если переделать функцию к примеру вместо datetime что бы она возвращала double, и вместо времени передать ей номера баров для расчета, возможно из за того, что время не совпадает с барами цены открытия и идет смещение?
// ФУНКЦИЯ ПЕРЕКРЕСТИЯ КООРДИНАТ ДЛЯ ПОИСКА ВРЕМЕНИ double TimeX(double y1, double y2, double y3, double y4, double x1, double x2, double x3, double x4) { //y1, y2, y3, y4; //цена линий //x1, x2, x3, x4; //время линий double k1, k3; double X,Y; k1=(y2-y1)/(x2-x1); k3=(y4-y3)/(x4-x3); if(k1 != k3) { X = NormalizeDouble((y1 - y3 + k3*x3 - k1*x1)/(k3 - k1),0); // время перекрестия Y = NormalizeDouble( y1 + k1*(X - x1),_Digits); // цена перекрестия } if(X != 0) return(X); else return(0); } //+----------------------------------------------------------------------------+
![Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы](https://c.mql5.com/36/31/dokumentaciya-po-mql5-konstanti__33.png)
- www.mql5.com
Я это учел, но мысль правильная
Мне кажется что фугкцию по времени нужно изменить и передать ей бар через фугкцию iBarShift(NULL,0,timed1)
Вы под мт5 пишете? Там есть галочка в настройках чтобы эти сдвиги устранить, тогда проверки эти излишни и должно работать. По крайней мере я так решил. В мт4 нет такой настройки поэтому геморрой, даже не заморачивался.
Это легкое решение сменить в настройках, здесь речь о решении в коде, вы же программист.
Это легкое решение сменить в настройках, здесь речь о решении в коде, вы же программист.
)) Настройки тоже в коде можно менять. Так вам под какой терминал?
Решение очень простое, просто интересно кто на что способен :0)
Решение очень простое, просто интересно кто на что способен :0)
Кому интересно? Вам? Мне вот интересно вы плохо читать умеете или зачем просили помочь?))
Помощи как таковой я не увидел, если вы программист то сразу бы отличили код мт4 от мт5. Я задал тему с которой завтра столкнутся многие кто занимается линейными индикаторами. Вы мне ответили вопросом на вопрос, превращая ветку в флуд, таких веток уже пруд пруди на форуме, давайте не отходить от темы, у вас есть решение этой задачи? Если нет, прошу вас тогда пройти мимо ветки.
Хочется увидеть другие решения этой задачи, может кто лучше сделает, здесь есть асы которые могут обойтись парой строк в решении некоторых задач.
![Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Линии индикаторов Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Линии индикаторов](https://c.mql5.com/36/31/dokumentaciya-po-mql5-konstanti__34.png)
- www.mql5.com
Привет программситам.
Столкнулся с проблемой передачи данных с разных графиков цены, с функции ObjectGetValueByTime не передает корректно данные в чем может быть проблема.
Создаю линию трендовую Rw2 недельную в функции PlotLinew
далее, определяю бар функцией iBarShift недельный по дневной свече
Определяю цену трендовой линии недельной на координате "у" времени дневного бара.
вбиваю параметры для нахождения координат перекрестия двух линий, (где R1 и R2 являются координатами дневной трендовой линии, а Rw2_1 и Rw2_2 недельные) функциии PriceY TimeX
В итоге по перекрестию дневных линий R1, R2, R2, R1 - есть перекрестие, а по дневным и недельным данным R1, R2, Rw2_1, Rw2_2 идет разброс по графику.
время передается в функцию для двух линий одинаковое timed1, time_d2, timed1, time_d2
Сами функции перекрестия PriceY, TimeX
Картинка зеленые на графике это перекрестие двух
дневных трендовых линий, красные это недельные и дневные перекрестия, - но они в разброс идут.
Код индикатора:
эта задача решена в классе iCanvas. Изучайте на здоровье.
Просто
нужно переходить от типа int к типу double.
Уйдите от объектов и придите к Канвас через мой класс iCanvas. И будет Вам счастье, код гораздо короче, а возможностей гораздо больше и скорость гораздо выше.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет программситам.
Столкнулся с проблемой передачи данных с разных графиков цены, с функции ObjectGetValueByTime не передает корректно данные в чем может быть проблема.
Создаю линию трендовую Rw2 недельную в функции PlotLinew
далее, определяю бар функцией iBarShift недельный по дневной свече
Определяю цену трендовой линии недельной на координате "у" времени дневного бара.
вбиваю параметры для нахождения координат перекрестия двух линий, (где R1 и R2 являются координатами дневной трендовой линии, а Rw2_1 и Rw2_2 недельные) функциии PriceY TimeX
В итоге по перекрестию дневных линий R1, R2, R2, R1 - есть перекрестие, а по дневным и недельным данным R1, R2, Rw2_1, Rw2_2 идет разброс по графику.
время передается в функцию для двух линий одинаковое timed1, time_d2, timed1, time_d2
Сами функции перекрестия PriceY, TimeX
Картинка зеленые на графике это перекрестие двух дневных трендовых линий, красные это недельные и дневные перекрестия, - но они в разброс идут.
Код индикатора: