Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Наезды для форма это в целом нормально. Тем более что у разных участников разный жизненный опыт и разная способность становиться на место оппонента. Так у меня более 10 лет торговли на бирже и для меня полный нонсенс, что в рыночной заявке нужно передавать какую-то цену с клиентского места на сервер. А видимо для участников с 10м опытом торговли в форекс-конторах этот момент удивления совсем не вызывает) ).
Что касается СTrade – вероятно в большинстве ситуаций библиотека на ФОРТС сработает нормально, несмотря на указанные выше странности с заполнением цен у рыночных заявок.
Но у меня при тестировании появляется конкретная проблема - выпадают заявки с [invalid price], которые пропадают, т.е. последующая проверка позиции показывает, что они не выполнились.
Более того выяснилось, такие заявки даже не попадают в список заявок, который по итогам тестирования можно получить с использованием HistoryOrdersTotal. Соответственно без написания специальных функции предварительной регистрации всех вызовов СTrade::Sell/Buy невозможно оценить сколько заявок пропало, и уж тем более понять как их выполнение на бирже повлияло бы на итоговую доходность.
Такого явно быть не должно , т.к. в реальных условиях все рыночные заявки, попавшие на сервер должны передаться для выполнения на бирже и там выполниться (случаи возникновения реальных технических сбоев терминала/брокера/биржи я тут не рассматриваю, т.к. речь идет о тестировании).
Сейчас работаю над кодом, который позволит моему советнику обойти данную ошибку. Если уж ни у кого из пользователей МТ5 на ФОРТС пока она не возникала, то после завершения своих работ специально уделю время чтобы подготовить сливной советник, который продемонстрирует данную ошибку.
Такого явно быть не должно , т.к. в реальных условиях все рыночные заявки, попавшие на сервер должны передаться для выполнения на бирже и там выполниться (случаи возникновения реальных технических сбоев терминала/брокера/биржи я тут не рассматриваю, т.к. речь идет о тестировании).
С какого перепугу они Вам что-то должны?
Ситуация может измениться в любой момент и никто никому ничего не должен, а трейдер получает реквоты, поскольку брокер его приказ выполнить не в состоянии.
Cоветник вызывает функцию СTrade::Sell без указания цены, так как заявки рыночные).
Баг в стандартной библиотеке МТ5 в классе СTrade - в функциях Sell/Buy, которые предназначены для торговли по рынку, оказалось что в них идет заполнение заявки некими ценами. Это в принципе неверно, т.к. если заявка рыночная, то должна уходить на сервер без указания цены.
Более того, выяснилось, что даже если заранее рассчитать округленную цену и указать ее в заявке размещение, то МТ5 тестер сам ее портит - "корректирует" и заменяет на негодную цену!!!
12:30:54.097 Core 1 2014.01.06 11:00:42 Расчетная цена на покупку: 140900.0000
12:30:54.097 Core 1 2014.01.06 11:00:42 price corrected from 140900 to 140891, deviation: 10 (instant buy 7.00 RTS Splice at 140900)(140881 / 140891 / 140881)
12:30:54.097 Core 1 2014.01.06 11:00:42 CTrade::OrderSend: instant buy 7.00 RTS Splice at 140900 [invalid price]
При этом корректировка идет за пределами класса СTrade, видимо в самой функции OrderSend. Это вообще двойной баг.
Проверил, все работает,
ни одной ошибки.
Был неправ, топикстартер что то перемудрил.
Код в студию.
Вот мой код для проверки:
Была такая проблема раньше в тестере, это точно. У меня в СД заявка была:
Описание проблемы
На инструменте с шагом цены равным 5 пунктов при попытке открытия позиции с использованием стандартной библиотеки периодически вываливается ошибка 10015.
Потом ошибку исправили (точное время или билд не скажу, они забыли отписаться и выяснилось это уже в 2015-м):
komposter #
Еще одна старая заявка. Будете проверять?Так уже исправили давно.
На момент исправления данная заявка ушла куда-то далеко, поэтому сюда и не отписались
С какого перепугу они Вам что-то должны?
Ситуация может измениться в любой момент и никто никому ничего не должен, а трейдер получает реквоты, поскольку брокер его приказ выполнить не в состоянии.
Маркет-приказ не подразумевает указания цены и допустимого отклонения.
Это приказ "купить/продать по любой доступной цене", и цена исполнения может значительно отличаться от цены в момент отправки трейдером такого приказа.
Поэтому и понятие requote ("пере-котирование", "новая котировка") к нему не применимо.
заявки по "RTS Splice" размещаются с типом "instant" и 40% из них НЕ исполняются, тестер выдает ошибку "invalid price".
Попробуйте установить тип заливки для этого инструмента перед отправкой приказа:
Или, по крайней мере, посмотрите, что показывает "SYMBOL_TRADE_EXEMODE".
Sergey Chalyshev, да в вашем примере ошибка не возникает, но это не значит что она не возникает вообще.
В своем советнике я наблюдаю данную проблему, и вижу то что она возникает где-то вовне (либо в проверочных функциях CTrade, либо в функции OrderSend). Поэтому в ближайшие дни я постараюсь сделать демонстрационный советник, который ее воспроизведет.
Andrey Khatimlianskii, благодарю за информацию – действительно ценный пост.
По факту выяснилось, что в "Открытии" следующий расклад:
- торгуемые фьючерсы и склейки Si, SBRF, BR, GOLD, ED имеют тип SYMBOL_TRADE_EXECUTION_EXCHANGE,
- торгуемые фьючерсы RTS имеют SYMBOL_TRADE_EXECUTION_EXCHANGE, а склейка RTS имеет тип SYMBOL_TRADE_EXECUTION_INSTANT.
У "БКС" у меня реальные счета на всех секциях, поэтому выяснилось следующее:
- на валютной секции USDRUB_TOM, EURRUB_TOM имеют тип SYMBOL_TRADE_EXECUTION_EXCHANGE,
- на фондовой секции все бумаги имеют тип SYMBOL_TRADE_EXECUTION_EXCHANGE,
- на секции ФОРТС торгуемые фьючерсы имеют тип SYMBOL_TRADE_EXECUTION_EXCHANGE, а все склейки Si, SBRF, BR, GOLD, ED, RTS имеет тип SYMBOL_TRADE_EXECUTION_INSTANT.
Тут конечно сам собой наращивается общий вопрос - зачем вообще сервер MT5 предоставляется брокерам возможность установить режим "EXECUTION_INSTANT" для склеек биржевых фьючерсов???
С точки зрения здравой логики у всех склеек должен быть тот же тип что и у базовых фьючерсов - "EXECUTION_EXCHANGE". Тем более что на моем советнике видно, что иной тип исполнения приводит к появлению при тестировании ошибок не свойственных биржевым инструментам.
Sergey Chalyshev, да в вашем примере ошибка не возникает, но это не значит что она не возникает вообще.
В своем советнике я наблюдаю данную проблему, и вижу то что она возникает где-то вовне (либо в проверочных функциях CTrade, либо в функции OrderSend). Поэтому в ближайшие дни я постараюсь сделать демонстрационный советник, который ее воспроизведет.
На самом деле формирование цены прозрачно и элементарно отслеживается в режиме "Отладка на истории" в MetaEditor'e:
и уже будет видно, что цена берётся:
Ничего сверхъестественного.