Интересно, заполнили массив тремя значениями: a[0]=1, a[1]=2, a[2]=3. Затем сделали массив тайм-серией. То есть после этого указания, по старым индексам находятся прежние значения, просто сменилось направление считывания? Почему добавив элемент в конец массива a[3]=4, он так и остаётся последним в обратном направлении считывания? Он же должен быть первым. Или инструкция действует только на элементы созданные до её применения?
результат: 3,2,1,4
ожидалось 4,3,2,1
Да. Это направление подсчета индекса. Массив не меняется. И при записи в конец или начало массива надо учитывать направление расчета индекса/индексации. Мудрёно)
Либо массив переворачивается физически, либо кроме флага дополнительно хранится последний индекс на момент исполнения команды тайм серии. После этого индекса добавленные элементы уже читаются как обычно. Какая-то странная логика, чтобы добавить новый элемент нулевого бара, нужно отменить тайм серию - вставить - применить снова, чтобы этот элемент стал первым.
Aleksei Stepanenko #: Либо массив переворачивается физически, либо дополнительно хранится последний индекс на момент исполнения команды тайм серии. После этого индекса добавленные элементы уже читаются как обычно. Какая-то странная логика, чтобы добавить новый элемент, нужно крутить туда-сюда, чтобы он стал первым.
Думается, дело в том, что при добавлении массив копируется на новое место, а новый элемент добавляется после последнего индекса. Интересно, как будет работать ресайз с резервированием, но проверять пока лень.
Aleksei Stepanenko #: Либо массив переворачивается физически, либо дополнительно хранится последний индекс на момент исполнения команды тайм серии. После этого индекса добавленные элементы уже читаются как обычно. Какая-то странная логика, чтобы добавить новый элемент нулевого бара, нужно крутить массив туда-сюда, чтобы он стал первым.
Так все верно. Перевернули. Третий элемент массива стал равен 1. Добавили 4 элемент. Присвоили значение 4. После 1 идет 4.
У меня советник открывает позицию например покупок, и пока не закроет по стопу или тейку, то позиции продаж не открывает, как это изменить. Чтобы по сигналам индикатора если покупки ничего не достигли, а сигнал на продажи уже сформировался, то открывался ордер на продажи.
Правильно ли я понимаю, что вот ниже данный блок отвечает за выбор ордера и, что нужно поменять?
У меня советник открывает позицию например покупок, и пока не закроет по стопу или тейку, то позиции продаж не открывает, как это изменить. Чтобы по сигналам индикатора если покупки ничего не достигли, а сигнал на продажи уже сформировался, то открывался ордер на продажи.
Правильно ли я понимаю, что вот ниже данный блок отвечает за выбор ордера и, что нужно поменять?
Разбираем вопрос, что такое количественный анализ, как его применяют крупные игроки, создадим один из алгоритмов количественного анализа на языке MQL5.
Все перепробовал, во всех блоках покопался, даже менял так что ордера брались каждую секунду...ну не выходит у меня.
Надо так чтобы при каждом сигнале индикатора брался ордер с последовательным умножением лота, если не смог достичь профита.
Сделал так, что он увеличивает ордер, на следующем сигнале если достиг стопа, но только в одностороннем порядке. Открыл покупки, всё, пока или стоп или тейк не сработает, продажи не набирает и наоборот. Одновременно открывать по сигналам например бай-1лот, селл-2лот, бай-4лот, селл-8 лот не могу сделать хоть убейте.
Покажите в чем ошибка, ткните носом пожалуйста, мозги уже кипят...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Интересно, заполнили массив тремя значениями: a[0]=1, a[1]=2, a[2]=3. Затем сделали массив тайм-серией. То есть после этого указания, по старым индексам находятся прежние значения, просто сменилось направление считывания? Почему добавив элемент в конец массива a[3]=4, он так и остаётся последним в обратном направлении считывания? Он же должен быть первым. Или инструкция действует только на элементы созданные до её применения?
результат: 3,2,1,4
ожидалось 4,3,2,1
Направление подсчёта - это хорошо. Почему добавленный в конец массива элемент не читается первым при чтении в обратном направлении?
void OnStart() { int a[]; ArrayResize(a,3); a[0]=1; a[1]=2; a[2]=3; ArraySetAsSeries(a,true); ArrayResize(a,4); a[3]=4; printf((string)a[0]+","+(string)a[1]+","+(string)a[2]+","+(string)a[3]); }series: 3,2,1,4Либо массив переворачивается физически, либо дополнительно хранится последний индекс на момент исполнения команды тайм серии. После этого индекса добавленные элементы уже читаются как обычно. Какая-то странная логика, чтобы добавить новый элемент, нужно крутить туда-сюда, чтобы он стал первым.
Думается, дело в том, что при добавлении массив копируется на новое место, а новый элемент добавляется после последнего индекса. Интересно, как будет работать ресайз с резервированием, но проверять пока лень.
Либо массив переворачивается физически, либо дополнительно хранится последний индекс на момент исполнения команды тайм серии. После этого индекса добавленные элементы уже читаются как обычно. Какая-то странная логика, чтобы добавить новый элемент нулевого бара, нужно крутить массив туда-сюда, чтобы он стал первым.
Приветствую.
У меня советник открывает позицию например покупок, и пока не закроет по стопу или тейку, то позиции продаж не открывает, как это изменить. Чтобы по сигналам индикатора если покупки ничего не достигли, а сигнал на продажи уже сформировался, то открывался ордер на продажи.
Правильно ли я понимаю, что вот ниже данный блок отвечает за выбор ордера и, что нужно поменять?
Приветствую.
У меня советник открывает позицию например покупок, и пока не закроет по стопу или тейку, то позиции продаж не открывает, как это изменить. Чтобы по сигналам индикатора если покупки ничего не достигли, а сигнал на продажи уже сформировался, то открывался ордер на продажи.
Правильно ли я понимаю, что вот ниже данный блок отвечает за выбор ордера и, что нужно поменять?
в этой статье много ф-ий и эта есть - читайте и правьте под свои нужды https://www.mql5.com/ru/articles/13835
в этой статье много ф-ий и эта есть - читайте и правьте под свои нужды https://www.mql5.com/ru/articles/13835
Наверное я тупой...
Все перепробовал, во всех блоках покопался, даже менял так что ордера брались каждую секунду...ну не выходит у меня.
Надо так чтобы при каждом сигнале индикатора брался ордер с последовательным умножением лота, если не смог достичь профита.
Сделал так, что он увеличивает ордер, на следующем сигнале если достиг стопа, но только в одностороннем порядке. Открыл покупки, всё, пока или стоп или тейк не сработает, продажи не набирает и наоборот. Одновременно открывать по сигналам например бай-1лот, селл-2лот, бай-4лот, селл-8 лот не могу сделать хоть убейте.
Покажите в чем ошибка, ткните носом пожалуйста, мозги уже кипят...