Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не совсем понимаю, в чем проблема...
Использовать функцию есть смысл только если логика эксперта достаточно сложная, и в течении одного выполнения функции start() необходимо получать значения параметров ордеров много раз. Иначе проще (и быстрее) использовать обычный блок контроля позиций.
Если у вас возникают трудности в написании экспертов, обратитесь к опытному программисту.
Мои координаты есть в моем профиле, других разработчиков вы можете найти на многочисленых форумах (в том числе на этом).
Удачи ;)
Именно так и есть, логика советника довольно сложная из двух тактик независимых друг от друга поэтому и обратился к вам за помощью, поскольку я не являюсь профессиональным программистом, то многие коды сложные коды мне достаточно только увидеть на простом примере и в дальнейшем я уже сам потихоньку сделаю.
В своем первом варианте где я вынужден был использовать три функции OneTypeOrdersInit с различными магиками при наличиии семафора у меня получился, но код оказался громоздким.
Поэтому в своем самообучении при написании именно сложных советников у меня есть временные затруднения, которые я непременно со временем разрешу.
Работа с функцией массивов у меня тоже пошла, но не в оригинальном виде, как у вас, а пришлось немного видоизменить. Вот почему я и обратился к вам и попросил пример, которого мне будет достаточно увидеть, чтобы понять где у меня ошибка. Для меня важно один раз увидеть, чем семь раз услышать, сами понимаете без базового образования приходится все постигать методом проб и ошибок.
С уважением, Вячеслав.
Именно так и есть, логика советника довольно сложная из двух тактик независимых друг от друга
Это будет и проще, и компактнее. Единственный недостаток - чуть медленнее.
Потому что, используя массивы, всё равно придется различать ордера одной стратегии от другой, а это - дополнительное усложнение кода.
Это будет и проще, и компактнее. Единственный недостаток - чуть медленнее.
Потому что, используя массивы, всё равно придется различать ордера одной стратегии от другой, а это - дополнительное усложнение кода.
Да, я так именно и делал в тех экспертах где у меня более 2-х независимых тактик и групп ордеров, и все они управляемы семафором.
Но код в данном случае получается грамоздким, каждый магик со своими функциями, а это очень много.
Я понимаю, что трудно давать какие либо советы, не зная конкретного алгоритма советника. Но когда я закончу излагать на одном из форумов тему, где будет расписано все в деталях и выложен код, я вас приглашу заглянуть, если у вас выкроется время, то буду благодарен вашей помощи.
С уважением, Вячеслав.
egt520 писал(а):
Замените эту строкукак могу я получить от последних данных по заказа? не от сперва и 2-ое, только всегда получать последнюю информацию.
на эту:
Наши ордера появляются/удаляются на торговом сервере в нашем активном (ON_TRADE) пуле ордеров разными путями.
1) Немедленное исполние распоряжения на открытие ордера - в результате в пуле появляется ордер со всеми окончательно заполненными полями, за исключением поля OrderClosePrice. Остальные поля либо фиксированы, либо сопровождаются торговым сервером. Поле OrderOpenTime - отображает реальное время (время торговой платформы) открытия ордера. Здесь маленький вопрос-вероятно, он помещается в хвост пула, т.е. ему присваивается следующий по порядку номер ?
2) Установка отложенного ордера - в результате в пуле появляется ордер со всеми окончательно заполненными полями, за исключением поля OrderCloseTime. Здесь маленький вопрос OrderOpenTime - хранит ,скорее всего, время установки отложенного ордера ? И такой же вопрос как и в 1) - ему присваивается следующий по порядку номер в хвосте ?
3) При закрытие ордера (принудительно или по срабатыванию) происходит его удаление из активного пула и перевод в исторический пул(ON_HISTORY) - тут все ясно. И опять же тот самый вопрос-порядок следования ордеров в активном пуле остается прежним ? т.е., происходит простое поджатие ордеров, иди остается "дырка", а нумерация сохраняется прежней ?
4) При срабатывание отложенного ордера, что реально происходит в активном пуле-просто меняются значения полей в том же самом элементе активного пула ? а порядок и нумерация ордеров сохраняются ?
Короче вопросы такие:
- при добавление ордера в пул, он просто ставится в хвост пула, получая следующий в порядке возрастания номер(самый первый номер это нулевой) ?
- при вычеркивание/изменение(как в случае со срабатыванием отложеннонго ордера) как это отражается на порядке и нумерации ордеров в пуле ?
В Вашей функции AllOrderInit нулевые элементы массивов, представляют последний по номеру ордер в активном пуле. Что это за ордер -самый поздний по времени открытия/установки ?
С уважением - С.Д.
Если Вас не затруднит, дайте ответ на такой вопрос, я думаю Вы продумывали эту тему.
- при добавление ордера в пул, он просто ставится в хвост пула, получая следующий в порядке возрастания номер(самый первый номер это нулевой) ?
- при вычеркивание/изменение(как в случае со срабатыванием отложеннонго ордера) как это отражается на порядке и нумерации ордеров в пуле ?
В Вашей функции AllOrderInit нулевые элементы массивов, представляют последний по номеру ордер в активном пуле. Что это за ордер -самый поздний по времени открытия/установки ?
Я, если честно, не проверял.
Кстати, возможно, порядок зависит от сортировки списка ордеров в терминале.
event handling function not found.
Сможете исправить, или уже код устарел?
event handling function not found.
Сможете исправить, или уже код устарел?
Устарел.
Но можно заменить
int start()
на
и должно взлететь.