"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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь