Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 566
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Попробуйте функцию:
Не так всё просто если использовать функцию и на валютах и на фьючерсах. Тут надо учитывать процент маржи.
Не так всё просто если использовать функцию и на валютах и на фьючерсах. Тут надо учитывать процент маржи.
Если мы говорим о потере в проценте, то маржа нас не интересует, она вернётся при закрытии позиции
Если мы говорим о потере в проценте, то маржа нас не интересует, она вернётся при закрытии позиции
Возможно
Сочувствую,что Вы заметили только это)
И не только я, Терминал, тоже не видит разницы, по сути вопроса. Выход за пределы массива остался.
Попробуйте функцию:
Спасибо за помощь! К сожалению так и не получилось реализовать универсальное решение, пришлось так сделать:
Подскажите еще пожалуйста, если у брокера плавающее кредитное плечо, как его учесть в расчете лота? Или это не повлияет, если заходить по варианту приведенному выше?
Другой индикатор, тоже array out of range.
На график ставится без проблем, а при вызове из советника пишет ...array out of range in 'HiLo.mq4' (121,15)
В чём проблема?
Другой индикатор, тоже array out of range.
На график ставится без проблем, а при вызове из советника пишет ...array out of range in 'HiLo.mq4' (121,15)
В чём проблема?
Нет проверки, что на графике имеется 1000 баров. К примеру, в момент открытия терминала на всех графиках 0 баров, но индикаторы терминал уже запустил (непонятно, зачем он это делает, но факт есть факт). Поэтому любое обращение к индикаторным буферам вызывает выход за пределы массивов таймсерий.
Нет проверки, что на графике имеется 1000 баров. К примеру, в момент открытия терминала на всех графиках 0 баров, но индикаторы терминал уже запустил (непонятно, зачем он это делает, но факт есть факт). Поэтому любое обращение к индикаторным буферам вызывает выход за пределы массивов таймсерий.
Всё равно вылетает.
Всё равно вылетает.
Потому что проверка в корне неверная. Допустим, Bars вернула 1000, а cb тоже 1000. Затем в цикле на первой итерации i получает значение 1000. В первом же условии тела цикла:
сразу два выхода за пределы массива: обращение к бару с индексом 1000 и с индексом 1001. Ведь если на графике 1000 баров, то первый бар имеет индекс 0, а последний - 999.
Дальше по телу цикла идет обращение к еще более далеким барам а истории:
Все это нужно учесть при изначальной проверке.
Как делать правильно проверку? посмотрите в примере по функции IndicatorCounted(), в справке по MQL4. Только теперь IndicatorCounted() лучше заменить на совместное использование переменных rates_total (это Bars) и prev_calculated (это IndicatorCounted()).