Я у себя (для себя) сделал "возврат" количества ордеров. Сразу убивается 2 зайца (не надо писать 2 функции) - если > 0, то ордер есть + можно анализировать ... "дырки в сетке", срабатывание "переворотников" и т.п. (Правда функция работает дольше, что для целей только констатации не оправдано)
Плюс, мне показалось, что визуально нагляднее и, присвоив переменной, можно использовать далее
Покажите Вашу версию задержек между торговыми операциями
Между торговыми операциями я задержек не делаю. То есть, если мне нужно выставить два и более ордера, то эти торговые операции я совершаю без паузы между ними. А вот между торговыми попытками, которые приходится повторять, если при обращении к серверу возникает ошибка, делаю паузу согласно рекомендациям разработчиков МТ4. В качестве примера можете посмотреть, как реализованы такие паузы в моей функции SetOrder() для онлайн-торговли. Для разных ошибок, возвращаемых торговым сервером, делаются разные паузы.
Функция SetOrder() предназначена для установки отложенных ордеров. Рекомендуется к использованию в онлайн-торговле на демо и реальных счетах.
Если торгуют больше 20-и экспертов, то всегда возникает ошибка 146. Функция способна решить вопрос только на нескольких (2-4) экспертов, но, в принципе, фиксированная задержка вопрос не решает... При торговле 20-ю и более экспертами, нужно арбитражить, ну хотя бы по протоколу Ethernet... тогда, каждый эксперт сможет войти в рынок при поступлении сигнала.
Lukyanov: Игорь, "угостите" функциями закрытия и модификации ордеров, пожалуйста. ;-)
Да, обязательно... Но сначала закончу с функцией SetOrder. Сейчас я жду открытия торгов, чтобы привести дополнительные примеры использования этой функции с записями из протокола. Тестовый скрипт уже готов, но его нужно проверить в онлайне.
План публикации функций в алфавитном порядке: - DeleteOrders - ExistOrdersByLot - GetLotLastOrder - GetOrderOpenPrice - IndexByTicket - ModifyOrder - NumberOfOrders - SelectByTicket - SelectByTicketFromHistory
Последовательность публикации Вы (посетители темы) можете скорректировать своими пожеланиями. Но я в первую очередь буду учитывать логичность применения функций, потому что многие из них связаны друг с другом. То есть впервую очередь будут опубликованы те функции, которые могут быть использованы при применении других, выкладываемых позже.
Однако... на фоне такого багажа, и форум и книга, справка и кодобаза всё равно возникают животрерпещущие вопросы которые порой и задавать то стыдно. ( благо я чайник, и не скрываю этого... но всё же учусь ... :)))
А вопросы именно в тех мелочах и нюансах которые позволяют связать куски кода точнее обеспечение взаимосвязи блоков (модулей) программы...
Понимаю, да и сам так частенько грешу, когда на вопрос, а как ? отвечают в лучшем случае: а так... Например трейлинг-стоп. И на вопрос можно ли использовать свой ТС ответ в 100% случаев будет ДА, в 90% прикрути свой код, в 80% на уточнение какой, последует: Кимовский ;))) и т.д... по нисходящей... А как именно, побуквенно-построчно, увы не всегда так бывает.
Поэтому тоже буду с нетерпением ждать постов с описанием функций модификации, и возможно более детального применения их на практике...
klot писал (а): При торговле 20-ю и более экспертами, нужно арбитражить, ну хотя бы по протоколу Ethernet... тогда, каждый эксперт сможет войти в рынок при поступлении сигнала.
kombat писал (а): А вопросы именно в тех мелочах и нюансах которые позволяют связать куски кода точнее обеспечение взаимосвязи блоков (модулей) программы...
Касательно своих функций я отвечу на любые вопросы. Если смогу :-) ... Тема для этого и создана. То есть, здесь можно задать вопросы из других тем, в которых я выкладывал свои функции, не давая подробных объяснений. Так что не стесняйтесь. Эту тему я планирую вести долго. Только на публикацию функций я запланировал 4 месяца. Плюс ещё ответы на вопросы...
kombat писал (а): Поэтому тоже буду с нетерпением ждать постов с описанием функций модификации, и возможно более детального применения их на практике...
Функция ModifyOrder является универсальной. Она применяется, как для ордеров, так и для позиций. Я подумаю, над органичным вплетением её в тему, как можно быстрее.
При торговле 20-ю и более экспертами, нужно арбитражить, ну хотя бы по протоколу Ethernet... тогда, каждый эксперт сможет войти в рынок при поступлении сигнала.
Что Вы имели в виду под "арбитражить"?
Добрый день! Под "арбитражить" я имел ввиду, обеспечить гарантированный доступ к торговому потоку множеству одновременно работающих экспертов. Давно я столкнулся с этой проблемой, и пришел к выводу, что лучше использовать метод multiply-access with collision detection из протокола Ethernet. Сущность простая. Проверяем занятость торгового потока. Если торговый поток занят, - генерируем случайную паузу (от 1 сек). Если торговый поток свободен, - сразу "посылаем" ордер. При торговле множеством экспертов у каждого эксперта будет своя случайная пауза и эксперты будут занимать торговый поток по очереди. Конфликтов между экспертами не будет. Например:
Если 10 экспертов ждёт освобождения торгового потока (каждый в своём независимом потоке) что может произойти если если случайно совпадёт хотя бы 2. Я считаю и использую другие принципы. Если торговый поток кем то занят то остальные эксперты просто не работают (return) и это проверяется в начале эксперта(чего анализировать если всё равно ничего не сделать).Как Вам такой подход в свете "арбитражить"? Спасибо.
Функция ExistOrders().
Возвращает флаг существования ордера. ...
Я у себя (для себя) сделал "возврат" количества ордеров. Сразу убивается 2 зайца (не надо писать 2 функции) - если > 0, то ордер есть + можно анализировать ... "дырки в сетке", срабатывание "переворотников" и т.п. (Правда функция работает дольше, что для целей только констатации не оправдано)
Плюс, мне показалось, что визуально нагляднее и, присвоив переменной, можно использовать далее
чем
Я у себя (для себя) сделал "возврат" количества ордеров.
Покажите Вашу версию задержек между торговыми операциями
Между торговыми операциями я задержек не делаю. То есть, если мне нужно выставить два и более ордера, то эти торговые операции я совершаю без паузы между ними. А вот между торговыми попытками, которые приходится повторять, если при обращении к серверу возникает ошибка, делаю паузу согласно рекомендациям разработчиков МТ4. В качестве примера можете посмотреть, как реализованы такие паузы в моей функции SetOrder() для онлайн-торговли. Для разных ошибок, возвращаемых торговым сервером, делаются разные паузы.
Функция SetOrder() предназначена для установки отложенных ордеров. Рекомендуется к использованию в онлайн-торговле на демо и реальных счетах.
Если торгуют больше 20-и экспертов, то всегда возникает ошибка 146. Функция способна решить вопрос только на нескольких (2-4) экспертов, но, в принципе, фиксированная задержка вопрос не решает...
При торговле 20-ю и более экспертами, нужно арбитражить, ну хотя бы по протоколу Ethernet... тогда, каждый эксперт сможет войти в рынок при поступлении сигнала.
Игорь, "угостите" функциями закрытия и модификации ордеров, пожалуйста. ;-)
Да, обязательно... Но сначала закончу с функцией SetOrder. Сейчас я жду открытия торгов, чтобы привести дополнительные примеры использования этой функции с записями из протокола. Тестовый скрипт уже готов, но его нужно проверить в онлайне.
План публикации функций в алфавитном порядке:
- DeleteOrders
- ExistOrdersByLot
- GetLotLastOrder
- GetOrderOpenPrice
- IndexByTicket
- ModifyOrder
- NumberOfOrders
- SelectByTicket
- SelectByTicketFromHistory
Последовательность публикации Вы (посетители темы) можете скорректировать своими пожеланиями. Но я в первую очередь буду учитывать логичность применения функций, потому что многие из них связаны друг с другом. То есть впервую очередь будут опубликованы те функции, которые могут быть использованы при применении других, выкладываемых позже.
Игорь, хороше дело делаете!
Однако... на фоне такого багажа, и форум и книга, справка и кодобаза
всё равно возникают животрерпещущие вопросы которые порой и задавать то стыдно.
( благо я чайник, и не скрываю этого... но всё же учусь ... :)))
А вопросы именно в тех мелочах и нюансах которые позволяют связать куски кода
точнее обеспечение взаимосвязи блоков (модулей) программы...
Понимаю, да и сам так частенько грешу, когда на вопрос, а как ?
отвечают в лучшем случае: а так...
Например трейлинг-стоп. И на вопрос можно ли использовать свой ТС
ответ в 100% случаев будет ДА, в 90% прикрути свой код, в 80% на уточнение какой, последует: Кимовский ;)))
и т.д... по нисходящей...
А как именно, побуквенно-построчно, увы не всегда так бывает.
Поэтому тоже буду с нетерпением ждать постов с описанием функций модификации,
и возможно более детального применения их на практике...
При торговле 20-ю и более экспертами, нужно арбитражить, ну хотя бы по протоколу Ethernet... тогда, каждый эксперт сможет войти в рынок при поступлении сигнала.
А вопросы именно в тех мелочах и нюансах которые позволяют связать куски кода
точнее обеспечение взаимосвязи блоков (модулей) программы...
Касательно своих функций я отвечу на любые вопросы. Если смогу :-) ... Тема для этого и создана. То есть, здесь можно задать вопросы из других тем, в которых я выкладывал свои функции, не давая подробных объяснений. Так что не стесняйтесь. Эту тему я планирую вести долго. Только на публикацию функций я запланировал 4 месяца. Плюс ещё ответы на вопросы...
Поэтому тоже буду с нетерпением ждать постов с описанием функций модификации,
и возможно более детального применения их на практике...
При торговле 20-ю и более экспертами, нужно арбитражить, ну хотя бы по протоколу Ethernet... тогда, каждый эксперт сможет войти в рынок при поступлении сигнала.
Добрый день!
Под "арбитражить" я имел ввиду, обеспечить гарантированный доступ к торговому потоку множеству одновременно работающих экспертов. Давно я столкнулся с этой проблемой, и пришел к выводу, что лучше использовать метод multiply-access with collision detection из протокола Ethernet.
Сущность простая. Проверяем занятость торгового потока. Если торговый поток занят, - генерируем случайную паузу (от 1 сек). Если торговый поток свободен, - сразу "посылаем" ордер. При торговле множеством экспертов у каждого эксперта будет своя случайная пауза и эксперты будут занимать торговый поток по очереди. Конфликтов между экспертами не будет.
Например:
Я считаю и использую другие принципы. Если торговый поток кем то занят то остальные эксперты просто не работают (return) и это проверяется в начале эксперта(чего анализировать если всё равно ничего не сделать).Как Вам такой подход в свете "арбитражить"?
Спасибо.