Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 876
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
К сожалению, статью не встречал, может кто другой подскажет.
Вы не сможете устанавливать ордера, потому что не будет возможности вбить нужную цену установки. Тоже самое касается и лотов
Я ставлю мышкой.
Я ставлю мышкой.
Панель управления из этой статьи https://www.mql5.com/ru/articles/62 будет работать в тестере (только кнопки)?
Панель управления из этой статьи https://www.mql5.com/ru/articles/62 будет работать в тестере (только кнопки)?
Так попробуйте - что мешает?
Я просто написал, как сам в визуализаторе ставлю отложки.
Так попробуйте - что мешает?
Я просто написал, как сам в визуализаторе ставлю отложки.
Как раз пробую. Не хотел время тратить, мне панель в работе робота не нужна, нужно только для теста. Поэтому подробно изучать тему не планировал.
Подскажите, почему когда я в нижеописанном коде меняю c close[i-1] на close[i-2] происходит Array of Range? Код написан строго по книге по MQL5, но там не описанно, почему при смещении цены более чем на 2 ячейки происходит выход за пределы буфера.
{ int values_to_copy; int start; int calculated=BarsCalculated (iBands1_handle); if (calculated <=0) { return (0); } if (prev_calculated==0 || calculated!=bars_calculated) { start=1; if (calculated> rates_total) values_to_copy=rates_total; else values_to_copy=calculated; } else { start=rates_total-1; values_to_copy=1; } if(!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return(0); for (int i=start; i <rates_total &&!IsStopped ();i++) { Print("C ", close[i-2]); }Подскажите, почему когда я в нижеописанном коде меняю c close[i-1] на close[i-2] происходит Array of Range? Код написан строго по книге по MQL5, но там не описанно, почему при смещении цены более чем на 2 ячейки происходит выход за пределы буфера.
Я так понимаю, речь идёт про индикатор. Так вот, рассматривайте два случая доступа к массиву-таймсерии "close": (1) что будет когда "start" равен "1" и (2) что будет когда "start" равен "rates_total-1".
Просто вычислите в уме получившийся индекс массива "close", если попытаться сделать "close[i-2]" для случая (1) и для случая (2).
Я так понимаю, речь идёт про индикатор. Так вот, рассматривайте два случая доступа к массиву-таймсерии "close": (1) что будет когда "start" равен "1" и (2) что будет когда "start" равен "rates_total-1".
Просто вычислите в уме получившийся индекс массива "close", если попытаться сделать "close[i-2]" для случая (1) и для случая (2).
Спасибо, я проверил, там нужно было в значении start = 1 поставить число больше 1, отладка показала, что ошибка происходит, когда в начале пересчета массив close пытается взять значение с еще не появившейся ячейки.
if(close[i] < Upper[i])То результат отладки следующий:
Данные идут корректно, обновляясь с периодичностью, равной скорости обновления цены
А вот если поставить изначально такое условие:
if(close[i] > Upper[i])То результат будет уже некорректен:
То есть значения цен закрытия уже не совпадают с ценой текущей
Почему так происходит, я не могу понять.
Основной блок кода в посте #8792