Начал писать советника на двух скользящих. Хендлы iMA создаю в OnInit, в OnTick беру значения через CopyBuffer. В тестере первые две-три сделки какие-то странные, а в журнале на первых тиках CopyBuffer вернул -1, ошибка 4806. Дальше всё нормально. Это я что-то не так делаю или так и должно быть?
Так бывает. Хендл создаётся сразу, а индикатор считается не мгновенно, на первых тиках данных ещё нет. Поэтому результат CopyBuffer проверяй всегда: вернул меньше, чем просил, значит выходишь из OnTick и ждёшь следующего тика. Можно перед этим смотреть BarsCalculated. Главное, не торгуй по тому, что не скопировалось: в массиве в этот момент нули или мусор с прошлого раза, и пересечение находится там, где его нет. Отсюда и странные первые сделки.