Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 531
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сравниваете следующий бар, и если последовательность нарушена, то сбрасывать флаг и записывать сколько было правильных, и идёте дальше в цикле.
Достаточно выяснить, что бар бычий, а следующий медвежий, следующий если такой-же как предыдущий - записываете значение и сбрасываете флаг. Ну и так до конца
но первый может быть и не бык, чёт ни как.
но первый может быть и не бык, чёт ни как.
Вот такой вариант, хотя не совсем верный, отсчёт всегда от медвежьей свечи
Вот такой вариант, хотя не совсем верный, отсчёт всегда от медвежьей свечи
Спасибо. Если полученное число возвести в квадрат и прибавить единицу, получается верный результат.
Это что проверяем if(i%2==0)?но первый может быть и не бык, чёт ни как.
Вот примерный поиск одинаковых свечей и смена направления цепочки:
Теперь там, где цепочка продолжается можно подсчитывать количество свечей в цепочке и сохранять в список, а там, где цепочка сменяется на новую - начинать новый подсчёт.
Количество свечей в каждой цепочке можно хранить в сортированном списке. Далее, отсортировав список, можно найти максимальную и минимальную последовательности.
Спасибо. Если полученное число возвести в квадрат и прибавить единицу, получается верный результат.
Это что проверяем if(i%2==0)?Если i кратно двум.
Это остаток от деления i на 2
Здесь вылазит the size of local variables is too large (more than 512kb) при компиляции.
Куда смотреть и что делать? В функции есть массив строк CArrayString, подозреваю, что с ним может быть связана ошибка.
Я его заполняю методом Add(), затем делаю Clear() и еще Shutdown(). А потом заполняю снова новыми данными методом Add(). В этом случае массив снова с нулевого элемента будет заполняться?
Нужно убрать из классов такие члены, которые занимают память уже на этапе компиляции. Эти данные будут размещены в стековой памяти, которой всегда очень мало. Решение проблемы - выделять память для членов класса, занимающих много памяти, динамически.
Например, если имеется член класса:
то его нужно заменить на:
Нужно убрать из классов такие члены, которые занимают память уже на этапе компиляции. Эти данные будут размещены в стековой памяти, которой всегда очень мало. Решение проблемы - выделять память для членов класса, занимающих много памяти, динамически.
Например, если имеется член класса:
то его нужно заменить на:
Спасибо. Как-то я избавился от этой проблемы, убрав класс из параметров в каждой из функций. В общем, можно было разово инициализировать этот объект на все методы.
У меня другой вопрос по классу CArray, а точнее CArrayObj. Вот есть метод Delete(), а он не сдвигает элемент в массиве? То есть, я удаляю Delete(18), удаляется элемент на этой позиции и далее если, например, запросить элемент по этому индексу, получишь invalid pointer. А есть такой метод, чтоб удалял и сдвигал элементы, чтоб на 18-м в данном случае оказался после удаления 19-й элемент?
Спасибо. Как-то я избавился от этой проблемы, убрав класс из параметров в каждой из функций. В общем, можно было разово инициализировать этот объект на все методы.
У меня другой вопрос по классу CArray, а точнее CArrayObj. Вот есть метод Delete(), а он не сдвигает элемент в массиве? То есть, я удаляю Delete(18), удаляется элемент на этой позиции и далее если, например, запросить элемент по этому индексу, получишь invalid pointer. А есть такой метод, чтоб удалял и сдвигал элементы, чтоб на 18-м в данном случае оказался после удаления 19-й элемент?
Не работал со стандартной библиотекой, но, судя по справке, метод Delete() должен физически удалять элемент, изменяя размер массива. Исключение: если выключен механизм управления памятью. По умолчанию этот механизм включен. Для того, чтобы проверить состояние флага управления памятью, используется метод FreeMode.
Со своей стороны рекомендовал бы в MQL использовать собственные массивы (хотя в C++ использую векторы и списки) и самому управлять памятью, т. к. в классе CArray особых удобств или преимуществ не вижу. В собственных массивах удаляю элемент массива достаточно быстро при помощи такого способа:
Единственный его недостаток - не сохраняет последовательность элементов массива. То есть его можно применять ко всем массивам, кроме упорядоченных (сортированных).
Здравствуйте, подскажите пожалуйста, где можно найти\скачать скрипт, который позволяет в МТ4 выставлять отложенные ордера на покупку и продажу сразу на определенное количество пунктов от текущей цены, т.е. чтобы в ручную не считать, и может даже в окно ордера не заходить? Спасибо.
ПС: может что-то не так спрашиваю, еще не разу не использовал скрипты.
Поясните пожалуйста мне пункт - "Закрытие рыночных ордеров не осуществляется, если значения StopLoss или TakeProfit нарушают требования по параметру FreezeLevel."
Это в буквальном смысле означает, что рыночный ордер не сможет быть закрыт, если его TakeProfit или StopLoss не соответствует уровню заморозки? Просто не совсем понимаю, как может открытый рыночный ордер иметь стопы, которые нарушают правила StopLevel или FreezeLevel? Ведь при установке не правильных стопов, сервер просто выдаст ошибку и никаких стопов установлено не будет.
Также подскажите пожалуйста, что еще нужно знать при закрытии рыночного ордера, когда брокер использует FreezeLevel?