Здравствуйте.
Вы там у меня по блогу пробежали (мне доложили). Решил Ваше досье глянуть. Обратил внимание на клиента, не заплатившего за работу. Не знаю всего, но клиент не прав и Вы тоже. Такие дела нужно полюбовно.
Смотрите, изучил поверхностно советник как-то там 7-Ро и т.д. Работа огромная. Мне так на пару месяцев и все равно зря.
Сма идея сова полное дерьмо. Люди думают, что чем больше индикаторов, тем меньше ошибка. А она только увеличивается С помощью дополнительных индюков можно фильтровать сигнал, сильно сужая полосу работы. Стоит ли? Лучше усилить страховку. А здесь и сигнал покоцанный и страховка приличная. И что? Да ничего. Муть.
Но я не об этом. Формализовал (Войну и Мир легче перечитать), заказал получил. Поем под заказ, так сказать.
Дело в другом. Нашел некоторые ошибки. Номера строк не скажу, ибо растянул код, что бы мог читать.
1. В функции void InitNewOrder(int signal, double lots), посмотрите на расчет лота. Условия одно и те же (==0), а расчеты разные.
2. Функции void ModifySL(int op, double OrdSL) и по ТР будут корректно работать только в тестере, без учета проскальзывания.
Я бы написал по-другому. Вместо if(OrdSL==OrderStopLoss()), поменял бы условие на if(MathAbs(OrdSL-OrderStopLoss())>Slippage).
А, вообще -то, такое условие больше геморроя добавляет, чем упрощает код. Найдите себе, что-нибудь получше.