Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так а я о чем. Мои функции не имеют универсальности, каждая занята строго своим делом. Даже бай и селл раздельны. слоузолл и тот не покидает функции пока не исполнится целиком. Так что пускай меняются номера ордеров, пускай ползут стопы, но тикет и магик останутся.
Ну, уж с клоузоллом, Вы увлеклись:)
Ну, уж с клоузоллом, Вы увлеклись:)
Промахов еще не было. Я тиран в этом плане:)
Нет, не как сыр в масле, но до подполковника честно дослужил. Извини, если обидел чем :(
Да нет же, с чего обижаться, ты не обяжайся, если я что не так сказал, но искренно. :)
Вы меня не правильно поняли. Как и половина народа почему-то. Мне не нужно в функции B() обрабатывать тот ордер, который выбран в функции A(). Функция B() работает с другими ордерами, не важно с какими, это никак не связано с функцией A(), у функции B() своя логика. Она может считать кол-во ордеров, их суммарную прибыль, смотреть их комменты маджики, ТП СЛ и т.п. Задача в том, чтобы по возврату из функции B() обратно в функцию A(), не зависимо от того, что функция B() делала с ордерами, логика работы функции A() в точке вызова из неё функции B() не нарушалась из-за того, что ордер, выбранный функцией A() до вызова функции B(), более не является выбранным, а выбранным является другой случайный произвольный ордер, с которым работала функция B(), скорее всего тоже перебирающая ордера в цикле.
Вы все время забываете о том, что в один и тот же момент времени может быть выбран только один ордер. Выход = храните список ордеров в сберегательной кассе (своем массиве). одной глобальной переменной lastorder недостаточно. лучше будет вариант типа lastords[ticket][function].
В моём коде этой ошибки не будет, так как эта функция вызывается ПОСЛЕ OrderSelect(). А проверка в коде осталась с тех времён, когда коды писались без общей структуры всех исполняемых функций советника.
К тому же, в большинстве моих функций присутствует функция обработки ошибок и я очень тщательно от них избавляюсь. А также есть ряд функций, которые генерируют ошибку, как искомый Вами ответ: "Выбран ордер ранее, или нет?!"
P.S. Кстати, вспомнил одну особенность (может кому пригодится) работы с OrderSelect() функций из компилируемых библиотек: выбрали ордер (как - не принциписально), OrderTicket() - возвращает номер выбранного ордера. Если же мы захотим получить свойства этого выбранного ордера из функции, которая расположена в компилированной библиотеке, то НИЧЕГО не получится. Нужно опять (заново) выбирать этот ордер.
На самом деле я столкнулся с ситуацией, когда ошибку выдала одна из функций общего назначения, которая могла использоваться как внутри циклов обработки ордеров, так и вне этих циклов, т.е. до того, как ордер был выбран, что и привело к ошибке. Чтобы создавать универсальные сервисные функции, работающие с ордерами, которые могут использоваться как после того, как какой-либо ордер был выбран, так и до этого, как тогда, когда открытые ордера вообще есть, так и когда их нет, нужно использовать механизм вроде выложенного мной, чтобы застраховать себя от этой ошибки.
Про то что выбор ордера не передается в модули библиотек и обратно я уже писал ранее в этой теме.
На самом деле я столкнулся с ситуацией, когда ошибку выдала одна из функций общего назначения, которая могла использоваться как внутри циклов обработки ордеров, так и вне этих циклов, т.е. до того, как ордер был выбран, что и привело к ошибке. Чтобы создавать универсальные сервисные функции, работающие с ордерами, которые могут использоваться как после того, как какой-либо ордер был выбран, так и до этого, как тогда, когда открытые ордера вообще есть, так и когда их нет, нужно использовать механизм вроде выложенного мной на прошлой странице, чтобы застраховать себя от этой ошибки.
Про то что выбор ордера не передается в модули библиотек и обратно я уже писал ранее в этой теме.
Приучите себя к тому, что на каждую торговую операцию свой ордер селект, И проблем не будет. И, да, вам правильно написали, выбрать можно только один ордер. Все остальное решается массивами.