"No connection with trade server". Все бы ничего, но выскакивает через раз, при попытке открыть ордер. Перезапускаю МТ - ордер сразу открывается. Кто-нибудь знает, в чем дело?
- OrderSend failed with error #6
- Вопрос не в тему MQL
- "M5: Alert: Возникла ошибка 0" - Что за ошибка??
Заодно и вопрос к разработчикам. Если я торгую в начале бара, и еще 1000 человек тоже, то не это ли является причиной того, что сервер именно в начале бара недоступен?
Ответьте, пожалуйста. Если это так, то я просто предусмотрю задержку, но сначала хотелось бы знать причину.
Ответьте, пожалуйста. Если это так, то я просто предусмотрю задержку, но сначала хотелось бы знать причину.
Уважаемые разработчики!
Повторяю вопрос, в несколько иной формулировке: ошибка номер шесть (котировки доступны, а торговый сервер - нет) - это из-за того, что в начале часового бара сервер перегружен? Искать ли мне проблему в эксперте, или просто открывать сделки, скажем, через 3 минуты после начала бара, когда нагрузка на сервер поменьше?
Второй вопрос из той же серии: если у меня много экспертов одновременно, и все что-то делают в начале бара, возникнут ли проблемы? Или рассчеты просто выстроятся в очередь? Например, что будет, если эксперт не успел досчитать, а уже пришел новый тик - закончит ли он рассчет по старой цене? И если новый тик, гарантируете ли вы, что рассчет (я проверяю начало бара с помощью кода, который вы рекомендовали в учебнике) по-прежнему покажет начало бара?
Это важные вопросы, хотелось бы подробно.
С уважением,
Кварк
Повторяю вопрос, в несколько иной формулировке: ошибка номер шесть (котировки доступны, а торговый сервер - нет) - это из-за того, что в начале часового бара сервер перегружен? Искать ли мне проблему в эксперте, или просто открывать сделки, скажем, через 3 минуты после начала бара, когда нагрузка на сервер поменьше?
Второй вопрос из той же серии: если у меня много экспертов одновременно, и все что-то делают в начале бара, возникнут ли проблемы? Или рассчеты просто выстроятся в очередь? Например, что будет, если эксперт не успел досчитать, а уже пришел новый тик - закончит ли он рассчет по старой цене? И если новый тик, гарантируете ли вы, что рассчет (я проверяю начало бара с помощью кода, который вы рекомендовали в учебнике) по-прежнему покажет начало бара?
Это важные вопросы, хотелось бы подробно.
С уважением,
Кварк
1. какая у Вас операционная система?
2. эксперты работают параллельно, каждый в своём потоке. если придёт новый тик, а эксперт всё ещё работает, тик будет проигнорирован. все ценовые данные, с которыми работает эксперт, остаются первоначальными (эксперт на самом деле работает с копией данных). для того, чтобы взять самые последние, изменённые, данные, существует функция RefreshRates
2. эксперты работают параллельно, каждый в своём потоке. если придёт новый тик, а эксперт всё ещё работает, тик будет проигнорирован. все ценовые данные, с которыми работает эксперт, остаются первоначальными (эксперт на самом деле работает с копией данных). для того, чтобы взять самые последние, изменённые, данные, существует функция RefreshRates
Windows 2000
Собственно, вопрос я задал, поскольку дважды получал ошибку 6 при попытке открыть позицию в начале бара:
Собственно, вопрос я задал, поскольку дважды получал ошибку 6 при попытке открыть позицию в начале бара:
bool bIsBarEnd = false; if(timePrev != Time[0]) bIsBarEnd = true; timePrev = Time[0]; if(!bIsBarEnd) return(0); ....
Вопрос остается - это из-за перегрузки сервера, поскольку ВСЕ в начале бара активнее? Или из-за чего-то другого?
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.
Сейчас, в 13.00 по Москве, тот же эксперт выдал ошибку номер 2 - common error.
Если этот пост читает кто-то из Альпари - счет 116122.
Это единственный из моих экспертов, выдающий алерт при ошибках такого рода. Я предлагаю тем, у кого работают демо эксперты, повесить алерты, если OrderSend возвращает -1 (а вдруг эта ситуация имеет место сплошь и рядом). Вот код для покупки, для продажи принцип тот же:
Если этот пост читает кто-то из Альпари - счет 116122.
Это единственный из моих экспертов, выдающий алерт при ошибках такого рода. Я предлагаю тем, у кого работают демо эксперты, повесить алерты, если OrderSend возвращает -1 (а вдруг эта ситуация имеет место сплошь и рядом). Вот код для покупки, для продажи принцип тот же:
int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 0, "Comment", nMagic, 0, Aqua); if(nResult == -1) { int nError = GetLastError(); Alert(nError); }
Также, на всякий случай, привожу весь эксперт, кроме той части, в которой логика (она-то тут точно не при чем). Гляньте, пожалуйста. Все-таки, мне кажется, дело в МТ. Эксперт просто вешается на часовой график EURUSD и периодически вместо сделок выдает ошибки.
Отмечу, что первый запуск (когда эксперт цепляется к графику, или когда его код перекомпилируется) срабатывает нормально, не выдавая ошибок. То есть, получили ошибку, спустя 5 секунд нажали F5 в редакторе, эксперт запустился, сделка открылась.
В общем, помогите, плз!
double dStopLoss; int nHoursToHold; datetime timePrev = 0; bool bIsFirst = true; int nSlip = 5; double dTp = 0; double dLotSize = 0.1; int nNumOfExperts = 5; int nMagic = 0; ////////////////// int init () { timePrev = 0; if(Symbol() == "EURUSD" && Period() == 60) { dStopLoss = 110 * Point; nHoursToHold = 1; nMagic = 23; } return(0); } // ------ int deinit() { return(0); } // ------ int start() { if(Bars < 5) return(0); // The previous bar just closed bool bIsBarEnd = false; if(timePrev != Time[0]) bIsBarEnd = true; timePrev = Time[0]; if(!bIsBarEnd) return(0); // ------ int nSignal = GetSignal(); if(nSignal == OP_BUY) Buy(); else if(nSignal == OP_SELL) Sell(); for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic) { if(CurTime() - OrderOpenTime() > (nHoursToHold - 1) * 60 * 60) { if(OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, nSlip, Aqua); else if(OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, nSlip, OrangeRed); } } } return(0); } // ------ void Sell() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); int nResult = OrderSend(Symbol(), OP_SELL, dLotSize, Bid, nSlip, Bid + dStopLoss, 0, "Comment", nMagic, 0, OrangeRed); if(nResult == -1) { int nError = GetLastError(); Alert(nError); } } // ------ void Buy() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 0, "Comment", nMagic, 0, Aqua); if(nResult == -1) { int nError = GetLastError(); Alert(nError); } } // ------ double GetLotSize() { double dLot = 0.1; return(dLot); } // ------ int GetSignal() { int nSignal = OP_BUY; return(nSignal); } // ------
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.
Хэндлов чего? Сколько у вас этих хэндлов? Есть ли ограничения на число экспертов, графиков и т.п.?
П.С. Этот вопрос не отменяет моего предыдущего поста :)
эксперт выдал ошибку номер 2 - common error.
достаточно редкая ошибка =)у меня эксперты за пол года выдавали такую ошибку всего 5 раз
На счёт алертов - неудобно. У меня отсыл на мыло + запись в файл. Скоро доделаю библиотеки с соответсвующими ф-циями - выложу
эксперт выдал ошибку номер 2 - common error.
достаточно редкая ошибка =)у меня эксперты за пол года выдавали такую ошибку всего 5 раз
На счёт алертов - неудобно. У меня отсыл на мыло + запись в файл. Скоро доделаю библиотеки с соответсвующими ф-циями - выложу
Наоборот, удобно. Алерт ничему не мешает, МТ продолжает работать, зато ты его сразу видишь... гм... если сидишь за компом... Да, я понял :)
"Мой" эксперт выдает эту ошибку в 70% случаев. То есть, не эту, а 2, 6, 14.., словом, без системно. Цены проверял, вроде правильные... Поскольку исходники МТ находятся у разработчиков, а серверы у Альпари, то в основном это к ним. Хотя было бы здорово, если бы кто-то еще запустил эту штуку, и подтвердил, что проблема воспроизводится на его компе.
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.
Хэндлов чего? Сколько у вас этих хэндлов? Есть ли ограничения на число экспертов, графиков и т.п.?
хэндлы являются представителями системных ресурсов. нашли и обезвредили глюк с утечкой gdi-ресурсов при отрисовке списка открытых позиций. на 98, где количество хэндлов на процесс на порядок меньше, чем у 2000, очень быстро проявлялась ошибка нехватки ресурсов, в тч невозможность открыть сокет для торговли. при долгой работе эта ошибка проявляется и на 2000. почему этот глюк проявился только в последних билдах, загадка природы.
ограничение на число графиков есть - 99. значит такое же ограничение и на число экспертов
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь