Подскажите, пожалуйста, по вертикальному масштабированию, по оси времени.
Как сделать, чтобы масштаб не ограничивался ничем, когда на шкале цены нажимаешь лкм и тянешь вверх? Мне нужен такой увеличенный график иногда, как в квике.
b3333. Этот скрипт компилируется и выполняется без предупреждений. При отладке видно, что в "b=a" вызывается A::operator=, хотя он переопределен в A1. (в С++ здесь будет ошибка компилятора).
В mql практически аналогично должно быть.А по Вашему примеру: обе перегрузки имеют спецификатор доступа public, поэтому компилятор их разрешает исходя из типа аргумента и естественно выбирает A&, поэтому все правильно. Тут нет переопределения, тут есть два оператора = с разными типами аргумента.
UPD: А по поводу наличия ошибки в С++ и отсутствия в mql5, так у них неявно вот так делается:
class A {
public:
voidoperator =(const A&) { std::cout << "A" << std::endl; }
};
class A1:public A {
public:
voidoperator =(const A1&) { std::cout << "A1" << std::endl; }
using A::operator =;
};
Вроде как были разговоры про то, что бы поведение в этом случае как в с++ сделать
b3333. Этот скрипт компилируется и выполняется без предупреждений. При отладке видно, что в "b=a" вызывается A::operator=, хотя он переопределен в A1. (в С++ здесь будет ошибка компилятора).
Это может привести к большим багам в программах!
Тут нет переопределения.
Чтобы не путаться, используйте сцификатор override в случаях, когда собираетесь что-то переопределить в потомке, и компилятор выдаст ошибку, если в родителе нет такого метода.
Чтобы не путаться, используйте сцификатор override в случаях, когда собираетесь что-то переопределить в потомке, и компилятор выдаст ошибку, если в родителе нет такого метода.
Да, я ошибся в термине. Здесь перегрузка, как выше сказали.
Просто для обычных методов перегрузка "закрывает" (непомню правильный терами) видимость одноименных методов предка, т.е. к ним нужно обращаться через полное имя класса::метод.
В моем примере, если бы здесь был не оператор, а метод, то компилятор выдает предупреждение. Мне кажется, что для оператора= было бы полезно такое же предупреждение.
Как найти третью свечу с большей ценой (price_max3)? Ещё один цикл лепить? Он ещё объёмней получается, ведь теперь нужно исключить из результата уже две свечи с ценами price_max1 и price_max2. В целом как-то все коряво и громоздко получается. Нельзя ли сделать выборку price_max1, price_max2 и price_max3 за один цикл? Или ещё как-то проще?
Oleksandr Nozemtsev #: Доброго времени суток! Из 20 свечей нужно выбрать 3 с большими ценами. Свечу с максимальной ценой определяю прям по учебнику
Для второй по цене свечи использую цикл
Как найти третью свечу с большей ценой (price_max3)? Ещё один цикл лепить? Он ещё объёмней получается, ведь теперь нужно исключить из результата уже две свечи с ценами price_max1 и price_max2. В целом как-то все коряво и громоздко получается. Нельзя ли сделать выборку price_max1, price_max2 и price_max3 за один цикл? Или ещё как-то проще?
Интересная задача.
Я не проверял, но пошёл-бы таким путём…
CopyHigh двадцати баров.
ArrayMaximum из этого массива
ArrayRemove найденного индекса
ArrayMaximum из остатка от массива
Ещё раз ArrayRemove
И ещё раз ArrayMaximum
Когда и куда сохранять полученные значения дело каждого.
Я видимо в подсознании думал об индексе свечи на графике… А после сортировки индексы потеряются.
Да, потеряются. Тоже подумал об этом. Но цены-то есть - можно по ценам и свечу найти в истории того отрезка, из которого брали выборку. Проблема при двух и более одинаковых ценах.
Но тогда создавать объект из свечи и пихать его в массив объектов - там можно будет сортировать по любому признаку без потери остальных данных.
Подскажите, пожалуйста, по вертикальному масштабированию, по оси времени.
Как сделать, чтобы масштаб не ограничивался ничем, когда на шкале цены нажимаешь лкм и тянешь вверх?
Мне нужен такой увеличенный график иногда, как в квике.
Вижу, что можно выставить фиксированный масштаб в настройках графика.
Можно ли сделать горячую клавишу, чтобы масштаб устанавливался по окну, а другую - чтобы увеличивался вдвое?
b3333. Этот скрипт компилируется и выполняется без предупреждений. При отладке видно, что в "b=a" вызывается A::operator=, хотя он переопределен в A1. (в С++ здесь будет ошибка компилятора).
Это может привести к большим багам в программах!
Полностью, про разрешение перегрузки в с++ читать тут: https://en.cppreference.com/w/cpp/language/overload_resolution
В mql практически аналогично должно быть.А по Вашему примеру: обе перегрузки имеют спецификатор доступа public, поэтому компилятор их разрешает исходя из типа аргумента и естественно выбирает A&, поэтому все правильно. Тут нет переопределения, тут есть два оператора = с разными типами аргумента.
UPD: А по поводу наличия ошибки в С++ и отсутствия в mql5, так у них неявно вот так делается:
Вроде как были разговоры про то, что бы поведение в этом случае как в с++ сделать
b3333. Этот скрипт компилируется и выполняется без предупреждений. При отладке видно, что в "b=a" вызывается A::operator=, хотя он переопределен в A1. (в С++ здесь будет ошибка компилятора).
Это может привести к большим багам в программах!
Тут нет переопределения.
Да, я ошибся в термине. Здесь перегрузка, как выше сказали.
Просто для обычных методов перегрузка "закрывает" (непомню правильный терами) видимость одноименных методов предка, т.е. к ним нужно обращаться через полное имя класса::метод.
В моем примере, если бы здесь был не оператор, а метод, то компилятор выдает предупреждение. Мне кажется, что для оператора= было бы полезно такое же предупреждение.
Ошибка и невозможность использовать сервис.
Как видно из скриншота - код не содержит ничего подозрительного.
Однако сервер ответил ошибкой. После чего Едитор бомбардирует его запросами на коннект - хотя я уже не пытаюсь использовать этот сервис.
Это вообще можно исправить?
Мое окружение:

Для второй по цене свечи использую цикл
Как найти третью свечу с большей ценой (price_max3)? Ещё один цикл лепить? Он ещё объёмней получается, ведь теперь нужно исключить из результата уже две свечи с ценами price_max1 и price_max2. В целом как-то все коряво и громоздко получается. Нельзя ли сделать выборку price_max1, price_max2 и price_max3 за один цикл? Или ещё как-то проще?Доброго времени суток! Из 20 свечей нужно выбрать 3 с большими ценами. Свечу с максимальной ценой определяю прям по учебнику
Для второй по цене свечи использую цикл
Как найти третью свечу с большей ценой (price_max3)? Ещё один цикл лепить? Он ещё объёмней получается, ведь теперь нужно исключить из результата уже две свечи с ценами price_max1 и price_max2. В целом как-то все коряво и громоздко получается. Нельзя ли сделать выборку price_max1, price_max2 и price_max3 за один цикл? Или ещё как-то проще?Интересная задача.
Я не проверял, но пошёл-бы таким путём…
Интересная задача.
Я не проверял, но пошёл-бы таким путём…
Погоди, зачем? Сортировать массив по убыванию/возрастанию и брать три свечи с краю - в зависимости от направления сортировки.
Погоди, зачем? Сортировать массив по убыванию/возрастанию и брать три свечи с краю - в зависимости от направления сортировки.
И то верно. Но ведь мы лёгких путей не ищем…
Я видимо в подсознании думал об индексе свечи на графике… А после сортировки индексы потеряются.И то верно. Но ведь мы лёгких путей не ищем…
Я видимо в подсознании думал об индексе свечи на графике… А после сортировки индексы потеряются.Да, потеряются. Тоже подумал об этом. Но цены-то есть - можно по ценам и свечу найти в истории того отрезка, из которого брали выборку. Проблема при двух и более одинаковых ценах.
Но тогда создавать объект из свечи и пихать его в массив объектов - там можно будет сортировать по любому признаку без потери остальных данных.