
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
to Cronex
Ага, т.е. ордер имеет два поля для нас - текстовую строку и номер магик.
И серверу он не нужен. И можно торговать даже с разных МТ разными советнками одним счетом с различеним их по магику.
Но хотелось бы быть в это вопросе более уверенным т.е. иметь Pуководящий Tехнический Mатериал.
Текстовая строка (в смысле коменты) часто меняются ДЦ при закрытии части позиции (пишут текст типа: "split from ticket #3214561"). Тикет тоже при этом изменяется.
За все время я пока не встречал что бы магик изменялся ДЦ, хотя и могут. Серверу он точно не нужен.
У меня на данный момент работает три советника на одном счете, с разных терминалов, на одном инструменте, но с разными магиками, проблем не замечено.
Думаю, источник проблемы кроется в этом:
Я после каждого удаления, возвращаю счетчик цикла на шаг назад, а затем обновляю данные...
Зачем связывать события удаления ордера и декремента переменной?
После удаления ордера, общее количество открытых ордеров изменилось.. А у нас осталось старое значение.... Т.о. обновляя количество открытых ордеров и делая шаг назад я наверняка знаю, что тикет ордера не будет устаревшим...
Вопрос: список ордеров обновляется на каждом тике(в 21 веке живем))) или только по рефреш?
Из обсуждения получается, чо OrderSelect() берет данные из окружения терминала,
Вопрос: список ордеров обновляется на каждом тике(в 21 веке живем))) или только по рефреш?
на каждом тике... но когда ваш советник работает то рефреш....
to rid
А где проверка OrderCloseTime()? -Иначе будет грести все подряд!
to kharko
Ага, теперь понятно, почему мой советник иногда не видит ордера записанные для него в глобальных терминала.
особенно - if ((OrderType() <= OP_SELL)
OP_BUY - позиция на покупку,
OP_SELL - позиция на продажу,
OP_BUYLIMIT - отложенный ордер на покупку по достижении заданного уровня, текущая цена выше уровня,
OP_BUYSTOP - отложенный ордер на покупку по достижении заданного уровня, текущая цена ниже уровня,
OP_SELLLIMIT - отложенный ордер на продажу по достижении заданного уровня, текущая цена ниже уровня,
OP_SELLSTOP - отложенный ордер на продажу по достижении заданного уровня, текущая цена выше уровня.
Все это просто алиасы для цифровых значений, данное выражение выбирает только активные ордера BUY и SELL, отсеивая все остальные отложенные ордера.
Добрый день всем! Очень вовремя ветка всплыла! Вот сейчас разбираю код эксперта и привожу в удобно/читаемый вид после декомпеллирования.
Эксперт в тестере работает. Но не совсем понятно небольшая деталь.
Мне здесь совершенно непонятно - что означает вот эти строчки. Пож. подскажите, кто сможет и знает -
особенно - if ((OrderType() <= OP_SELL)
И мне не понятно зачем делать такое условие, если удаляются только бай позиции... или это не весь код :(
to rid
А где проверка OrderCloseTime()? -Иначе будет грести все подряд!
писал (а):
to rid
А где проверка OrderCloseTime()? -Иначе будет грести все подряд!
Ничего не пойму! Куда это мой пост вылетел? (я его не удалял...)
И мне не понятно зачем делать такое условие, если удаляются только бай позиции...
Ну это просто остатки стандартного кода из примера - там обрабатываются все активные ордера: и BUY и SELL.
Логика : отобрать только активные ордера OrderSelect(i,SELECT_BY_POS,MODE_TRADES);(для уменьшения времени на итерации), потом по типу конкретного ордера (BUY или SELL) отпределить что с ним делать. Отложенные ордера тоже входят в MODE_TRADES, но они пропускаются по фильтру OrderType() <= OP_SELL
if ((OrderType() <= OP_SELL) - получается, что эта строка означает примерно так:
"если среди ордеров и позиций нет открытой позиции на продажу...?"