bool IsTradeAllowed( | ) |
Я, например, успешно использую эту функцию для определения состояния кнопки советников (советник с фингалом:) Возможно, Вы это не анализировали, а нажимали эту кнопку автоматически.
===========
У меня просматривается подобная проблема. В выходные дни не удаётся распознать факт разрешения на торги.
TRADEALLOWED= MarketInfo( SYMB, MODE_TRADEALLOWED ); // Разрешение торгов по указанному инструменту
TRADEALLOWED вычисляется равным 1 у одних брокеров и 0 у других брокеров (предположительно, они там у себя не нажали кнопку в конце пятницы). При этом оба брокера возвращают ошибку 133 (торговля запрещена) в ответ на любой тоговый приказ.
===========
Есть ещё отдельный вопрос. Какое минимальное количество лотов можно указать для частичного закрытия ордера?
Альпари, например, даёт мин.лот = 0.1 и мин.шаг = 0.01. Закрыть ордер на количество лотов, меньше 0.1, не удаётся. Ни с панели, ни из программы.
Есть ещё отдельный вопрос. Какое минимальное количество лотов
можно указать для частичного закрытия ордера?
Альпари, например, даёт мин.лот = 0.1 и мин.шаг = 0.01. Закрыть ордер
на количество лотов, меньше 0.1, не удаётся. Ни с панели, ни из
программы.
От 0.1 с шагом 0.01.
Т.е. 0.1, 0.11, 0.12, 0.13 и т.д.
Странная ситуация какая-то...
Есть ещё отдельный вопрос. Какое минимальное количество лотов можно указать для частичного закрытия ордера?
Альпари, например, даёт мин.лот = 0.1 и мин.шаг = 0.01. Закрыть ордер на количество лотов, меньше 0.1, не удаётся. Ни с панели, ни из программы.
От 0.1 с шагом 0.01.
Т.е. 0.1, 0.11, 0.12, 0.13 и т.д.
Да не очень-то логично..
Если ордер открыт, например, на 2.57 лота, то сделать из него 2.50 невозможно.
А бывает надо, например, в соотв. с моей ситемой приоритетов очереди закрытия:
Дано Buy 2.57 и Sell 2.53 открыты одновременно, оба без стоп-приказов. Пользователь активизирует функцию "Закрыть всё". Задача решается по принципу "не навреди", а именно, сначала закрывается хвостик размером 0.04 лота, а потом встречно зеркальные ордера, каждый по 2.53. Принцип "не навреди" в данном случае предполагает именно такой порядок, т.к. безвредное "зеркало" достигается после одной торговой операции, что лучше, чем после двух (сначала встречно 2.53, а потом хвостик 0.04). Вот и необходимость.
Странная ситуация какая-то...
komposter большое спасибо что откликнулись. Тему прочитал, но к сожалению,
там совсем о другом пишется. В указанной Вами теме просто рассматривается
для чего нужна функция IsTradeAllowed() и как она работает. Это я вроде
объективно понимаю (по крайней мере я на это надеюсь))). Меня
больше тревожит нетривиальность ошибки (более правильно будет
написать её формальное отсутствие) в моём случае.
На другом форуме, по поисковому запросу IsTradeAllowed(), нашел следующее высказывание
"И ещё не забудьте учесть в Вашем алгоритме автоматическую перезагрузку терминала. А то когда ДЦ сервер перезагружает, у клиента терменал начинает "глючить" типа: при отправке ордера сообщение появляеться что, "нет связи" хотя видно что на графике цена меняеться, да и експерт вроде как прочитываеться, значит тики поступают. И это будет продолжаться пока не перезагрузишь терменал. Так что такая например ситуация, Вам не 70% просадки сделает а все 170%"...
Вот это, к моему превеликому сожалению, больше подходит под мой случай.
Я бы хотел верить, что написанное это не правда.
Потому как если автор данного абзаца действительно прав и я наблюдал у себя именно эти ситуации, то это похоже полный пипец для существования МТС как таковых. Так как в подобном случае не остается даже теоретической возможности для автоматического ведения торгов.
Какие есть соображения ?
Да не очень-то логично..
Я на данный момент наблюдаю такую ситуацию.
Есть комп1 и комп2. На обоих вынь икспи со всеми обновлениями. Комп2 - это мой рабочий. Комп1 - это типа сервер. На нём две сетевые карты: одна смотрит в ADSL-момед, а другая в свичь, ну типа в локалку. На комп1 поднята НАТ. Это я описал окружение.
Теперь сама ситуация. С комп2 МТ4 нормально связывается с торговыми серверами. А с комп1 связь устанавливается очень долго - больше 3 минут. После установки связи при попытке выставить ордер или открыться с рынка сообщение "Нет связи". Иногда после перезагрузки МТ4 удаётся торгануть, потом опять "Нет связи". На комп2 всё отлично связывается и торгуется.
Теперь тоже самое другими словами. Инет с сервера хандрит. С клиентской машины через сервер всё ОК.
я запускал МТ4 и на сервере и на компьютерах из локалки - работает одинаково хорошо
А у меня на сервере только МТ4 не хочет работать. Всё остальное работает. Сейчас НАТ вырубил. Пробую просто выход в инет, без всего. Всё работает. Аська, сайты. А МТ4 через три раза на пятый.
Только-что попробовал поменять ролями сетевые карты, то есть ту, что смотрела в модем вырубил, а ту, что была в локалке направил на модем. Не помогло...
Добавлю лог, из которого видно, что терминал коннектился более 5 минут
2008.01.05 02:32:21 '77393': login (4.00, #2A98C7B2)
2008.01.05 02:24:41 '77393': connect failed [Нет связи]
2008.01.05 02:24:17 Expert e-CloseByPercentProfit GBPUSD,H1: loaded successfully
2008.01.05 02:24:17 MetaTrader 4.00 build 211 started
А настройки IE не могут сказаться на качестве коннекта МТ4?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Странная ситуация какая-то...
IsConnected() или IsTradeAllowed() упорно возвращают false...
Хотя никаких причин для этого нет совершенно...
При всем при этом GetLastError() возвращает значени 0 !
После перезагрузки терминала, все начинает работать нормально. ..
На этом форуме (или на форуме LiteForex) я уже встречал месяц назад один пост, где парень описывал подобную ситуацию...
Тогда не обратил на это сообщение особого внимания.
Помню только, что парня тогда засмущали, мол все в порядке просто советник у него косолапый и что-то он там не правильно напрограммировал. У него кстати GetLastError() тоже возвращал 0.
И тут вдруг у меня аналогичный случай.
Вообщем моя ситуация такова.
Описываю:
Написал две недели назад новый советник. Алгоритм простой, торгует по принципу доливок. Интересно было испытать эту тактику. Поставил две недели назад на демо. На евро – доллар. Торговал без ошибок (хотя обработка ошибок в советнике заложена мощная), аж душа радовалась.
Примерно через неделю торгов наблюдая ситуацию. Советник упорно выводит в файл лога запрограммированное мной сообщение “функция IsConnected( ) или IsTradeAllowed( ) вернула значение false! Торговля невозможна”.
При этом выводится значение GetLastError(), и оно равно 0.
Видимых причин никаких нет. Советник совершенно не бомбил торговый сервер запросами перед тем как случилась эта ситуация. Более того, у меня заложена трехминутная пауза, если ошибка повторяется часто в течении 20 минут. Так вот после паузы, ситуация не меняется. Вобщем пару часов наблюдал за этим делом и паузами советника. Ошибка не уходила. Интернет разумеется был. Потом перезагрузил советник и все заработало нормально.
Проверил программный код.
Все вроде предельно просто... программной ошибки вроде быть не может...
Код примерно следующий
if (IsConnected()==false || IsTradeAllowed()==false)
{
Print(“функция IsConnected( ) или IsTradeAllowed( ) вернула значение false! Торговля невозможна”);
.......
}
Тогда не придал этому особого значения... подумал мало ли... может какой глюк однократный.
А сегодня (спустя примерно неделю после предыдущего раза) ночью эта ситуация повторилась снова.
И продолжалась до самого утра.
GetLastError() тоже возвращал 0.
Потом я перезагрузил терминал (билд 211).... после этого все снова заработало нормально.
Отмечу еще один важный момент... торговал на двух графиках, двумя экземплярами советника, на одном постоянно в селл, на другом постоянно в бай.
Кто-то скорее всего предположит, что оба советника пытались получить одновременный доступ к торговому потоку и это продолжалось на каждом тике часами. Но тут тогда я отмечу следующие три момента:
Вообщем такая вот странная ситуация.
Повторяется редко.
Лечиться перезагрузкой терминала.
Может у кого-то есть подобный опыт ?.. или какие-то мысли по данной ситуации ??
Интересно услышать Ваши комментарии.