Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2631
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Интересно, заполнили массив тремя значениями: 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 лот не могу сделать хоть убейте.
Покажите в чем ошибка, ткните носом пожалуйста, мозги уже кипят...