Какая версия API, к какому серверу подключались, какие конкретно команды посылали (желательно полный код). Правильно ли все параметры заполняли? Работает ли стандартный пример из MTAPI?
Без деталей ответ сложно дать.
Без деталей ответ сложно дать.
API 3.0, сервер у alpari 217.74.32.254,
сам пример работает нормально
да и мой код работает хорошо,
единственный раз когда это произошло когда курс очень круто пошёл вниз - вероятно очень быстро менялся,
скорей всего это было связано с этим, но меня смущает тот факт что несмотря на то что были возвращены ошибки на самом деле открылось аж 3 ордера, вместо одного.
Вот код:
do
{
pCur->GetOrderInfo(&soi);
err=MtSendOrder(handle,&soi);
if (err!=RET_OK)
{
CString s;
s.Format("Error sending order: %s(%d)\n",MtGetErrorDescription(err),err);
Audit(_T("OpenOrder"),s,NIIF_ERROR);
if (err==RET_NO_CONNECT)
{
RenewConnections();
}
else if (err==RET_NO_MONEY || err==RET_ERROR)
return -1;
else
Sleep(5000);
if (pCur->m_bBuy)
pCur->m_dPrice=r[pCur->m_nSymbol].ask;
else
pCur->m_dPrice=r[pCur->m_nSymbol].bid;
}
else
break;
}
while (true);
сам пример работает нормально
да и мой код работает хорошо,
единственный раз когда это произошло когда курс очень круто пошёл вниз - вероятно очень быстро менялся,
скорей всего это было связано с этим, но меня смущает тот факт что несмотря на то что были возвращены ошибки на самом деле открылось аж 3 ордера, вместо одного.
Вот код:
do
{
pCur->GetOrderInfo(&soi);
err=MtSendOrder(handle,&soi);
if (err!=RET_OK)
{
CString s;
s.Format("Error sending order: %s(%d)\n",MtGetErrorDescription(err),err);
Audit(_T("OpenOrder"),s,NIIF_ERROR);
if (err==RET_NO_CONNECT)
{
RenewConnections();
}
else if (err==RET_NO_MONEY || err==RET_ERROR)
return -1;
else
Sleep(5000);
if (pCur->m_bBuy)
pCur->m_dPrice=r[pCur->m_nSymbol].ask;
else
pCur->m_dPrice=r[pCur->m_nSymbol].bid;
}
else
break;
}
while (true);
Похоже что Вы получили реквот (или отказ от обслуживания) и не обработали его.
Что Вы могли получить:
RET_PRICE_CHANGED - реквот
RET_TOO_FREQUENT - слишком частые запросы
Вы показали просто какой-то кусок кодов возврата из общего лога или именно это список кодов с начала?
Сделайте детальный лог, как подключались, как посылали запрос на сделку, что получили в ответ и тд.
Что Вы могли получить:
RET_PRICE_CHANGED - реквот
RET_TOO_FREQUENT - слишком частые запросы
Вы показали просто какой-то кусок кодов возврата из общего лога или именно это список кодов с начала?
Сделайте детальный лог, как подключались, как посылали запрос на сделку, что получили в ответ и тд.
RET_TOO_FREQUENT появлялись, но после выдерживалась пауза в 5 секунд (код был немного другой Sleep(5000) вызывался только при появлении RET_TOO_FREQUENT) и опять появлялись загадочные коды возврата.
Если было бы RET_PRICE_CHANGED - то в логе бы тогда именно это и отразилось. Да и цены я своевременно в Pumping mode получаю. Коннект хороший и все цены приходят быстро.
Меня смущает первая ошибка "symbol is in instant execution mode but not selected(24)", может ли всё остальное быть следствием этого. Раньше у меня такой никогда не появлялось.
Вот как всё было:
12/03/04 16:31:03 OpenOrder-Error sending order: symbol is in instant execution mode but not selected(24)
12/03/04 16:31:03 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:08 OpenOrder-Error sending order: unknown error(115)
12/03/04 16:31:08 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:13 OpenOrder-Error sending order: unknown error(104)
12/03/04 16:31:13 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:19 OpenOrder-Error sending order: unknown error(-111)
12/03/04 16:31:19 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:24 OpenOrder-Error sending order: unknown error(-19)
12/03/04 16:31:24 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:29 OpenOrder-Error sending order: unknown error(124)
12/03/04 16:31:30 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:35 OpenOrder-Error sending order: unknown error(63)
12/03/04 16:31:35 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:41 OpenOrder-Error sending order: unknown error(-14)
12/03/04 16:31:41 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:46 OpenOrder-Error sending order: unknown error(63)
12/03/04 16:31:46 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:52 OpenOrder-Error sending order: unknown error(-88)
12/03/04 16:31:52 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:58 OpenOrder-Error sending order: unknown error(-58)
12/03/04 16:31:58 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:04 OpenOrder-Error sending order: unknown error(75)
12/03/04 16:32:04 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:09 OpenOrder-Error sending order: unknown error(55)
12/03/04 16:32:09 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:14 OpenOrder-Error sending order: unknown error(-119)
12/03/04 16:32:14 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:20 OpenOrder-Error sending order: unknown error(65)
12/03/04 16:32:20 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:26 OpenOrder-Error sending order: unknown error(-14)
12/03/04 16:32:26 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:32 OpenOrder-Error sending order: unknown error(63)
12/03/04 16:32:32 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:38 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:43 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:48 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:53 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:58 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:03 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:08 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:13 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:18 OpenOrder-Error getting trades...
Если было бы RET_PRICE_CHANGED - то в логе бы тогда именно это и отразилось. Да и цены я своевременно в Pumping mode получаю. Коннект хороший и все цены приходят быстро.
Меня смущает первая ошибка "symbol is in instant execution mode but not selected(24)", может ли всё остальное быть следствием этого. Раньше у меня такой никогда не появлялось.
Вот как всё было:
12/03/04 16:31:03 OpenOrder-Error sending order: symbol is in instant execution mode but not selected(24)
12/03/04 16:31:03 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:08 OpenOrder-Error sending order: unknown error(115)
12/03/04 16:31:08 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:13 OpenOrder-Error sending order: unknown error(104)
12/03/04 16:31:13 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:19 OpenOrder-Error sending order: unknown error(-111)
12/03/04 16:31:19 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:24 OpenOrder-Error sending order: unknown error(-19)
12/03/04 16:31:24 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:29 OpenOrder-Error sending order: unknown error(124)
12/03/04 16:31:30 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:35 OpenOrder-Error sending order: unknown error(63)
12/03/04 16:31:35 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:41 OpenOrder-Error sending order: unknown error(-14)
12/03/04 16:31:41 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:46 OpenOrder-Error sending order: unknown error(63)
12/03/04 16:31:46 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:52 OpenOrder-Error sending order: unknown error(-88)
12/03/04 16:31:52 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:31:58 OpenOrder-Error sending order: unknown error(-58)
12/03/04 16:31:58 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:04 OpenOrder-Error sending order: unknown error(75)
12/03/04 16:32:04 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:09 OpenOrder-Error sending order: unknown error(55)
12/03/04 16:32:09 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:14 OpenOrder-Error sending order: unknown error(-119)
12/03/04 16:32:14 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:20 OpenOrder-Error sending order: unknown error(65)
12/03/04 16:32:20 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:26 OpenOrder-Error sending order: unknown error(-14)
12/03/04 16:32:26 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:32 OpenOrder-Error sending order: unknown error(63)
12/03/04 16:32:32 OpenOrder-Error sending order: too frequent requests(21)
12/03/04 16:32:38 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:43 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:48 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:53 OpenOrder-Error getting trades: some error(2)
12/03/04 16:32:58 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:03 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:08 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:13 OpenOrder-Error getting trades: some error(2)
12/03/04 16:33:18 OpenOrder-Error getting trades...
Попробуйте включить символ AddSymbol() - если он не выбран для подкачки, то могут быть проблемы.
Не надо ждать пока тебя запретит API (со сбросом коннекта, если не ошибаюсь), а работать ювелирно (именно), чисто и без насилия над сервером. К сожалению, некоторые программисты совсем уж бездумно использовали API и в МТ4 мы внесем больше контроля (тем кто работает нормально - никаких преград).
код был немного другой Sleep(5000) вызывался только при появлении RET_TOO_FREQUENT
Не надо ждать пока тебя запретит API (со сбросом коннекта, если не ошибаюсь), а работать ювелирно (именно), чисто и без насилия над сервером. К сожалению, некоторые программисты совсем уж бездумно использовали API и в МТ4 мы внесем больше контроля (тем кто работает нормально - никаких преград).
Да, это я сразу исправил после произошедшего, сейчас между запросами всегда выдерживается пауза.
По поводу AddSymbol: для хэндла который в режиме подкачки я вызываю AddSymbol.
A для для хэндла который используется для отправки ордеров, это тоже нужно делать?
Кстати побровать MT 4 API уже можно?
По поводу AddSymbol: для хэндла который в режиме подкачки я вызываю AddSymbol.
A для для хэндла который используется для отправки ордеров, это тоже нужно делать?
Кстати побровать MT 4 API уже можно?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
при попытке открыть ордер, MT API возвращал странные номера ошибок.
Например:
Error sending order: unknown error(75)
Error sending order: unknown error(55)
Error sending order: unknown error(-119)
Error sending order: unknown error(65)
Error sending order: unknown error(-14)
Error sending order: unknown error(124)
Error sending order: unknown error(63)
Error sending order: unknown error(-88)
Error sending order: unknown error(-58)
Как это расшифровать? Конкретней меня интересует такой вопрос: несмотря на то что были возвращены ошибки - некоторые из запросов сработали и ордера были открыты, как определять по номеру ошибки, какие из запросов всё таки сработали?
Спасибо,
Павел