Здравствуйте ребята.
Помогите написать одну функцию а то что-то никак не могу понять почему не работает, по моему все верно делаю ну а на деле показывается что нет. Где ошибка понять не могу! Может Вам будет виднее. Смысл функции в следующем... Хочу научить советник уменьшать лот после пятого лосса. Вот как это выглядит в коде... Принты для откладки нужны были. Так и не понял где баг но вроде бы все правильно.
int getminusorder( int magic) { int history = OrdersHistoryTotal(); for(int i = history; i>=0;i--) if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) if(OrderSymbol() == Symbol()) if(OrderMagicNumber() == magic) { Print("OrderProfit:", OrderProfit()); Print("Total:", history); if(OrderProfit() < 0) { xyz++; Print("xyz:", xyz); } else if(OrderProfit() > 0) { xyz = 0; Print("xyz:", xyz); return (xyz); } } return (xyz); }
Туточки единички не хватает:
int history = OrdersHistoryTotal() - 1;
Здравствуйте ребята.
Помогите написать одну функцию а то что-то никак не могу понять почему не работает, по моему все верно делаю ну а на деле показывается что нет. Где ошибка понять не могу! Может Вам будет виднее. Смысл функции в следующем... Хочу научить советник уменьшать лот после пятого лосса. Вот как это выглядит в коде... Принты для откладки нужны были. Так и не понял где баг но вроде бы все правильно.
for (int i=0; i<OrdersHistoryTotal(); i++)
Так нельзя. Перебирать надо с конца.
Здравствуйте ребята.
Помогите написать одну функцию а то что-то никак не могу понять почему не работает, по моему все верно делаю ну а на деле показывается что нет. Где ошибка понять не могу! Может Вам будет виднее. Смысл функции в следующем... Хочу научить советник уменьшать лот после пятого лосса. Вот как это выглядит в коде... Принты для откладки нужны были. Так и не понял где баг но вроде бы все правильно.
Что конкретно неверно пашет?
Если вы хотите посчитать количество лосей подряд, то зачем тогда возвращать ноль из-под else if () ?
Что конкретно неверно пашет?
Если вы хотите посчитать количество лосей подряд, то зачем тогда возвращать ноль из-под else if () ?
согласен. Очевиднее так:
//| Функция возвращает количество последних "лосей" int fGet_LossOrder (int magic) { int history = OrdersHistoryTotal() - 1, xyz = 0; Print ("Total: ", history); //---- for (int i = history; i >= 0; i--) { if (!OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != magic) continue; Print ("OrderProfit:", OrderProfit()); if (OrderProfit() <= 0) { xyz++; Print ("xyz:", xyz); } else break; } //---- return (xyz); }...и, как я понимаю, при превышении лимита "лосей" что-то производится с лотом следующего открываемого ордера.
Так нельзя. Перебирать надо с конца.
Кому как. Разницы не вижу, только "-1" в коде.
Кому как. Разницы не вижу, только "-1" в коде.
А почему бы не ввести счётчик и после подряд следущего лося ++, и когда дойдёт до 5-ти лот уменьшить, и всё!
Только нужно проверять, что последний ордер закрыпся по стопу, у Кима есть.
А почему бы не ввести счётчик и после подряд следущего лося ++, и когда дойдёт до 5-ти лот уменьшить, и всё!
А я тут причем? Я просто обратил внимание, что хистори капризная штука. Сортировка может быть разной.
А почему бы не ввести счётчик и после подряд следущего лося ++, и когда дойдёт до 5-ти лот уменьшить, и всё!
На мой взгляд правильней мониторить историю, чем хранить счетчик. Запись/чтение из файла тоже никто не отменял.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте ребята.
Помогите написать одну функцию а то что-то никак не могу понять почему не работает, по моему все верно делаю ну а на деле показывается что нет. Где ошибка понять не могу! Может Вам будет виднее. Смысл функции в следующем... Хочу научить советник уменьшать лот после пятого лосса. Вот как это выглядит в коде... Принты для откладки нужны были. Так и не понял где баг но вроде бы все правильно.