вамбы только на бабки разводить - а помоч видать слабо
Одно дело помощь, другое - работа вместо кого-то забесплатно. Вы выкладываете чужой программный код. Чужой код - это прежде всего криптограмма, которую ещё нужно расшифровать. Благо, что Ваш код простой. Но всё равно, думаете, кому-то захочется копаться в нём, вникать в логику, исправлять ошибки и всё это за бесплатно? У вас там одна только функция OrderSend(), употребляемая в коде 14 раз чего стОит - ни обработки ошибок, ни нормализации цен. Класс? А генерация случайного магикнумбера, скажите, зачем в нём нужна? А почему отсутствуют проверки корректности введённых пользователем величин?
советник работае но сть одна ошибка
он должен закрывать все ордера при срабатывание т.профит,
и он удаляет все ордера правильно при срабатывание ордеров на покупку
,а вот при продаже он закрывае неправитьно- он удаляет все ордера при срабатывание стопа
помогите пожалуста
спс
for(i=OrdersTotal();i>=0;i--){ ... поставь так int total=OrdersTotal(); for (i=total; i>=0; i--){
Конструкция
не верна, так как захватывает позицию, на которой ордера нет. Если уже и вести обратный перебор ордеров, то от ордерстотал нужно отнять единицу:
не знаю почему, но у меня на такой конструкции один ордер всегда оставался...
далее все одно идет проверка выбора - if (OrderSelect())... :)
не знаю почему, но у меня на такой конструкции один ордер всегда оставался...
далее все одно идет проверка выбора - if (OrderSelect())... :)
Список ордеров лежит в массиве. Поскольку первым элементом является тот, который в нулевой ячейке массива, то последний ордер ляжет в ячейку с номером = OrdersTotal()-1
Пусть в рынке три ордера. Первый лежит в нулевой ячейке массива, содержащего список ордеров, второй - в первой, третий - во второй. Таким образом, если от OrdersTotal() не отнять единицу, то счётчик цикла будет проверять ордер в ячейке с индексом = 3, так как OrdersTotal() вернёт число три.
Конструкция if (OrderSelect())... тоже не желательна, так как не показывает причину, почему ордер нельзя выбрать, если такой глюк возникает. Правильнее была бы конструкция типа:
for(int i=OrdersTotal()-1;i>=0;i--){ if(!OrderSelect(i,SELECT_BY_POS, MODE_TRADES)){ Print("Ошибка № ",GetLastError()," при выборе ордера № ",i); } else{ if(OrderType()==OP_SELL){ // какие-то действия } } }
огромное спасибо зделал и все работает правильно
спс
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
советник работае но сть одна ошибка
он должен закрывать все ордера при срабатывание т.профит,
и он удаляет все ордера правильно при срабатывание ордеров на покупку
,а вот при продаже он закрывае неправитьно- он удаляет все ордера при срабатывание стопа
помогите пожалуста
спс