Сейчас заменил сигнал на сделку и прогонял тест. Я в упор не вижу в чем ошибка этого кода. После закрытия свечки, если было пересечение, происходит сделка, насколько я понимаю. Или вы хотите, чтобы сделка происходила сразу как произойдет пересечение? В этом случае просто не понятно что делать, если пересечение произошло, а по следующей сделке скользящая средняя пересчиталась и это пересечение исчезло. Вам надо строго формализовать как именно должен вести себя робот, и тогда уже будет понятно как это писать.
Прошу простить меня за назойливость.
Heller, я еще первым своим постом в этой теме строго формализовал требуемое поведение скрипта. Да, ошибки в коде нет, неверен сам принцип работы. Функция calc() воспринимает в качестве цены закрытия текущие рыночные цены (индикатор перерисовывается в моменте по цене каждой совершенной сделки). onNewCandle() работает примерно по тому же принципу, но только не по каждой сделке, а по открытию новой свечи. Поэтому при выполнении этой функции и выдается в качестве цены закрытия open новой свечи (писал об этом в предыдущем посте). В предыдущем посте я правда привел только некоторые наблюдаемые факты, в сути проблемы не разобрался. Если мы добиваемся абсолютной точности выполнения скрипта по правилам, то при его проверке на минутном графике с параметрами fast = 1; slow = 2, увидим много интересных явлений. В случае пересечения скользящих и закрытии свечи, а открытие следующей свечи приведет к обратному пересечению - сигнала не будет. Аналогичная ситуация с ложным сигналом. А это уже серьезнее, такая ситуация может произойти на любых таймфреймах и периодах скользящих. Если открытие новой свечи привело к пересечению скользяшек, то поступит сигнал, хотя в дальнейшем пересечение не произойдет и свеча закроется без него.
Heller, прогоняйте тест в таком виде. Результаты Вас удивят. Меня, кстати, очень поразило то, что замена сигнала на заявку привела к изменениям в проверке условий и принципе работы скрипта. Если Вы так уверены в правильности выполнения кода, сварганьте на нем робота и поработайте с реальным счетом на свои деньги. Желаю удачи!