[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 858
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вопрос простой, но что-то немогу додуматься.
В конкретный момент времени имеется 4 открытых позиции. Пытаюсь все закрыть слудующим образом:
Но закрываются не все, а через одну. По факту они скажем имею следующие номера: 2,4,6,7. Так вот закрывается 2-ая и 6-ая позиции.
В чем подвох?
Вопрос простой, но что-то немогу додуматься.
В конкретный момент времени имеется 4 открытых позиции. Пытаюсь все закрыть слудующим образом:
Но закрываются не все, а через одну. По факту они скажем имею следующие номера: 2,4,6,7. Так вот закрывается 2-ая и 6-ая позиции.
В чем подвох?
в том что после закрытия позиции меняется нумерация в OrderSelect(i,SELECT_BY_POS,MODE_TRADES) и одновременно не могут все закрыться
ЗЫ: мне очень помогли ф-ции И.Ким,я немного изменил - убрал лишние скобки и вытянул в одну строчку:
поищите поиском по форуму - найдете оригиналы
в том что после закрытия позиции меняется нумерация в OrderSelect(i,SELECT_BY_POS,MODE_TRADES) и одновременно не могут все закрыться
ЗЫ: мне очень помогли ф-ции И.Ким,я немного изменил - убрал лишние скобки и вытянул в одну строчку:
поищите поиском по форуму - найдете оригиналы
Большое спасибо наводку и пример. Буду разбираться.
По ходу задам еще один вопрос.
Задача следующая: нужно определить, какого типа был закрыт ордер, сработавший по стоп-лоссу, чтобы в последствии сравнить будущий закрытый по стоп-лоссу ордер с предидущим (читай - сравнить их типы). Полистав документацию, не смог найти чего-либо, связанного с обработкой последнего события.
В данный момент времени, эту операцию я реализовал, как закрытие ордера, при достижении заданной границы (Bid-OrderOpenPrice()>=TP*Point). Что дало мне возможность сохранить в переменную тип последнего закрытого ордера и, при следующем закрытии, сравнить с только что закрытым ( if(type==OrderType()) ). Все работает прекрасно при тестировании, но хотелось бы все таки реализовать это с использование стоп-лоссов.
Я пытался выбирать закрытый ордер из истории при помощи OrderSelect() и аргумента MODE_HISTORY. Т.к. условий на закрытие ордеров нет, то изменение переменной OrdersTotal() можно рассматривать, как раз таки, как срабатывание стоп-лосса. Но столкнулся с проблемой - я не могу определить номер последнего закрытого ордера (т.к. количество их постоянно меняется), ну или просто не догадался, как это сделать.
Вопрос такой: как реализовать это с использованием стопп-лоссов? Может есть способы намного проще? Ну а если же направление мысли правильное, то как найти последний закрытый ордер?
в том что после закрытия позиции меняется нумерация в OrderSelect(i,SELECT_BY_POS,MODE_TRADES) и одновременно не могут все закрыться
ЗЫ: мне очень помогли ф-ции И.Ким,я немного изменил - убрал лишние скобки и вытянул в одну строчку:
поищите поиском по форуму - найдете оригиналы
https://docs.mql4.com/ru/trading/OrderSelect
Вопрос простой, но что-то немогу додуматься.
В конкретный момент времени имеется 4 открытых позиции. Пытаюсь все закрыть слудующим образом:
Но закрываются не все, а через одну. По факту они скажем имею следующие номера: 2,4,6,7. Так вот закрывается 2-ая и 6-ая позиции.
В чем подвох?
Вы говорите о номерах по порядку? или тикетах?
Вы говорите о номерах по порядку? или тикетах?
Я уже сам запутался. Это тикеты, но привел я их, чтобы ситуация была понятна. Закрываются через один.
Ура у мя все заработало!!!
Виктор большое вам спасибо, ошибка была у меня я не правильно написал имя индикатора.
Ну Вы и наговорили... всё в одну кучу
https://docs.mql4.com/ru/trading/OrderSelect
попробуйте изменить/убрать тейки или стопы у группы ордеров - задача простая, но я столкнулся с тем, что выбирая ордер по OrderSelect(i,SELECT_BY_POS,MODE_TRADES) нумерация ордеров изменялась прямо в теле цикла и получалось по нескольку раз модифицировать уже модифицированный(без тейка ) ордер - ошибка №1, вот почему я и предположил, что у usver схожая проблема
подскажите, плз - как сделать чтобы индикатор пересчитывался по закрытию нескольких баров, ну к примеру: хочу, чтобы перерисовка/пересчет индикатора был каждые 5 новых баров
подскажите, плз - как сделать чтобы индикатор пересчитывался по закрытию нескольких баров, ну к примеру: хочу, чтобы перерисовка/пересчет индикатора был каждые 5 новых баров
Вы же разбираетесь в программировании.
Это логическая задача и чтобы её решить не надо быть шибко грамотным. Подумайте головой.
Случаи разные бывают. Где именно должна быть перерисовка, на каком ТФ, как должна происходить перерисовка и т д.. Как можно ответить на Ваш вопрос.
Запоминайте время бара и через пять баров обнуляйте это время и запоминайте снова. В момент обнуления времени можно ставить условие на пересчёт. Поможет Функция iTime(NULL,0,0). Остальное всё логика.
подскажите, плз - как сделать чтобы индикатор пересчитывался по закрытию нескольких баров, ну к примеру: хочу, чтобы перерисовка/пересчет индикатора был каждые 5 новых баров
Способ не самый надежный, наверное, но, скажем, чтобы опробовать идею (черновой вариант) вполне сгодится.
Использовать переменную Bars и отслеживать ее изменение. Увеличилось на 5, запомнили и т.д.