新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 212 1...205206207208209210211212213214215216217218219...1953 新评论 Artyom Trishkin 2017.05.22 09:26 #2111 geratdc:你好。寻找以下信息。1.关于在处理EA工作中的关键事件时实施SMS-通知。关于从北京时间12:00至18:00实现开仓和平仓的交易(当然有短信通知:)关于每周交易时段的开始和结束)。关于实施交易完成后的电子邮件通知(18-00 PTN)--在测试器中发送每周交易时段的顾问工作报告,其中包括图表和开仓日期、平仓日期、价格、平仓 后的利润/亏损。或者报告将是txt格式的?请告知哪些函数或脚本可以实现它?可能有一个关于这个问题的主题--短信和电子邮件通知和报告。https://www.mql5.com/ru/articles/1454这里有一些类似的东西,但为了让它更简单)))https://www.mql5.com/ru/forum/53920短信通知的算法还不错,我们的EA向我们发送电子邮件,而电子邮件运营商向我们发送信件的文本。所有这些都非常简单。我们所需要的是注册我们的移动电话。现在更容易了。我去看看,我发现了一个类似的函数--SendMail().我想知道它有多复杂? 所有这么长的时间都有这么一个标准。使用推送信息而不是短信,SendMail()已经发现了它。 Valerius 2017.05.22 14:49 #2112 大家下午好!做了这个代码 - 一次性删除所有的订单。//=================================================================== void delete_all_orders() { bool err; int ot; for(int iss=OrdersTotal()-1; iss>=0; iss--) { if(OrderSelect(iss, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) { ot=OrderTicket(); Print("Удаляем ордер тикет - ",OrderTicket()); err=OrderDelete(OrderTicket(),clrNONE); if(err==false) error(GetLastError()); Print("Удален ордер тикет - ",ot); } if(OrderType()==OP_BUY) { ot=OrderTicket(); Print("Удаляем ордер тикет - ",OrderTicket()); err=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrNONE); if(err==false) error(GetLastError()); Print("Удален ордер тикет - ",ot); } if(OrderType()==OP_SELL) { ot=OrderTicket(); Print("Удаляем ордер тикет - ",OrderTicket()); err=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrNONE); if(err==false) error(GetLastError()); Print("Удален ордер тикет - ",ot); } } } } return; } 问题是,几乎所有的订单都被关闭。但我们仍有1-2个订单没有被删除。而且无论我访问这个函数多少次,这个函数都不能关闭剩余的订单。我得到一个错误,显示错误的价格。我以为是重新报价,但如果我们已经请求这个功能500000次,那么重新报价可能是什么?什么不能是错误的价格?我从来没有和其他EA发生过这样的胡闹。 Alexey Viktorov 2017.05.22 15:17 #2113 Valerius:大家下午好!做了这个代码 - 一次性删除所有的订单。问题是,几乎所有的订单都被关闭。但我们仍有1-2个订单没有被删除。而且无论我访问这个函数多少次,这个函数都不能关闭剩余的订单。我得到一个错误,显示错误的价格。我以为是重新报价,但如果我们已经请求这个功能500000次,那么重新报价可能是什么?什么不能是错误的价格?我从来没有和其他EA发生过这样的胡闹。 如果有大量的订单,价格就有时间过时了。添加RefreshRates(),应该就可以了。 RefreshRates - Доступ к таймсериям и индикаторам - Справочник MQL4 docs.mql4.com RefreshRates - Доступ к таймсериям и индикаторам - Справочник MQL4 Valerius 2017.05.22 15:46 #2114 Alexey Viktorov: 如果有大量的订单,价格就有时间过时了。添加RefreshRates(),应该就可以了。这就是问题所在:还剩下一两份订单。我对这个函数进行了循环调用,直到所有订单被删除。在概念上,如果是买入的订单,它应该被Bid关闭,而现在是什么价格并不重要。它应该以任何价格按Bid收盘。而且,如果我们已经处理了这个功能好几千次,那么无论如何,价格都应该关闭。或者,也许我不明白什么? [删除] 2017.05.22 15:50 #2115 Valerius:这就是问题所在:还剩下一两份订单。我对这个函数进行了循环调用,直到所有订单被删除。理论上讲,如果是买入的订单,应该由Bid来关闭,而现在是什么价格并不重要。它应该以任何价格按Bid收盘。而且,如果我们已经处理了这个功能好几千次,那么无论如何,价格都应该关闭。还是有什么是我不明白的?删除时日志中是否有错误?价格在周期内可以走得足够远。卖出价和买入价是常数,它们要么被强制更新(当调用RefreshRates()时),要么在处理一个新的tick时被强制更新。因此,在每个循环轮回之后,调用RefreshRates(),看看会发生什么。 Valerius 2017.05.22 16:00 #2116 谢谢,我会试一试的。 Konstantin Erin 2017.05.22 18:44 #2117 Valerius: 问题就在这里,还剩下一两份订单。 我对这个函数进行了循环调用,直到所有订单被删除。 理论上讲,如果是买入的订单,应该由Bid来关闭,此时是什么价格并不重要。 它应该以任何价格按Bid收盘。 而且,如果我们已经处理了这个功能好几千次,那么无论如何,价格都应该关闭。 或者,也许我不明白什么?试试1)用Alert代替Print,可以立即在屏幕上看到结果--这样更快 2)你在那里得到错误代码。打印出来看看 3) 获取并打印OrderSelect函数的 错误代码,并立即打印OrderSymbol(), OpderType(), OrderTicket()。if (! OrderSelect(.......)) { Alert(GetLastError()); continue; } Alert("OrderSymbol = ",OrderSymbol(), " OpderType = ", OpderType(), " OrderTicket = ", OrderTicket()); Valerius 2017.05.23 02:57 #2118 STARIJ:试试1)用Alert代替Print,以便立即在屏幕上看到结果--这样更快 2)你在那里得到错误代码。打印出来看看 3) 获取并打印OrderSelect函数的 错误代码,并立即打印OrderSymbol(), OpderType(), OrderTicket()。 也试过RefreshRates()。什么都没有改变。警报- 与打印相同,给出 - 错误的参数。错误3。我早上起来看到EA已经触发了,并显示了删除整晚所有订单的功能。请求的计数器显示有几百万个请求。这意味着订单不会被删除。这个EA还检查是否所有的订单都被删除,它就像一个保险。如果有订单,我们将调用删减的功能是要求的。程序会被卡住。这意味着,在所有订单被删除之前,循环不会停止。这种麻烦发生在2个货币对上。我已经失去了理智。该怎么做? Alexey Viktorov 2017.05.23 06:39 #2119 Valerius: 我已经试过RefreshRates()。什么都没有改变。警报--与打印相同,它说--参数错误。错误3。今天早上醒来,看到EA已经触发了,并且显示呼叫删除所有的订单,整整一个晚上。请求的计数器显示有几百万个请求。这意味着订单不会被删除。这个EA还检查是否所有的订单都被删除,它就像一个保险。如果有订单,我们将调用删减的功能是要求的。程序会被卡住。这意味着,在所有订单被删除之前,循环不会停止。这种麻烦发生在2个货币对上。我已经失去了理智。该怎么做?那什么是error()函数? if(err==false) error(GetLastError()); Print("Удален ордер тикет - ",ot);这可能是问题所在。 Valerius 2017.05.23 12:26 #2120 Alexey Viktorov:什么是error()函数?有可能这就是问题所在。 error()函数只是显示一个错误代码。这个功能没有问题,我在许多EA中都有这个功能,而且我从来没有改变过它。所以这绝对不是问题所在。功能本身就在这里。//==================================================================== int error(int errr) { string descr; switch(errr) { // Коды ошибок, возвращаемые торговым сервером или клиентским терминалом: case 0: descr= ""; return(0); case 1: descr= "Нет ошибки, но результат не известен"; break; case 2: descr= "Общая ошибка"; break; case 3: descr= "Неправильные параметры"; break; case 4: descr= "Торговый сервер занят"; break; case 5: descr= "Старая версия клиентского терминала"; break; case 6: descr= "Нет связи с торговым сервером"; break; case 7: descr= "Недостаточно прав"; break; case 8: descr= "Слишком частые запросы"; break; case 9: descr= "Недопустимая операция нарушающая функционирование сервера"; break; case 64: descr= "Счет заблокирован"; break; case 65: descr= "Неправильный номер счета"; break; case 128: descr= "Истек срок ожидания совершения сделки"; break; case 129: descr= "Неправильная цена"; break; case 130: descr= "Неправильные стопы"; break; case 131: descr= "Неправильный объем"; break; case 132: descr= "Рынок закрыт"; break; case 133: descr= "Торговля запрещена"; break; case 134: descr= "Недостаточно денег для совершения операции"; break; case 135: descr= "Цена изменилась"; break; case 136: descr= "Нет цен"; break; case 137: descr= "Брокер занят"; break; case 138: descr= "Новые цены"; break; case 139: descr= "Ордер заблокирован и уже обрабатывается"; break; case 140: descr= "Разрешена только покупка"; break; case 141: descr= "Слишком много запросов"; break; case 145: descr= "Модификация запрещена, так как ордер слишком близок к рынку"; break; case 146: descr= "Подсистема торговли занята"; break; case 147: descr= "Использование даты истечения ордера запрещено брокером"; break; case 148: descr= "Количество открытых и отложенных ордеров достигло предела, установленного брокером"; break; case 149: descr= "Попытка открыть противоположную позицию к уже существующей, если хеджирование запрещено"; break; case 150: descr= "Попытка закрыть позицию по инструменту в противоречии с правилом FIFO"; break; case 4000: /*descr= "Нет ошибки";*/ return(0); case 4001: descr= "Неправильный указатель функции"; break; case 4002: descr= "Индекс массива - вне диапазона"; break; case 4003: descr= "Нет памяти для стека функций"; break; case 4004: descr= "Переполнение стека после рекурсивного вызова"; break; case 4005: descr= "На стеке нет памяти для передачи параметров"; break; case 4006: descr= "Нет памяти для строкового параметра"; break; case 4007: descr= "Нет памяти для временной строки"; break; case 4008: descr= "Неинициализированная строка"; break; case 4009: descr= "Неинициализированная строка в массиве"; break; case 4010: descr= "Нет памяти для строкового массива"; break; case 4011: descr= "Слишком длинная строка"; break; case 4012: descr= "Остаток от деления на ноль"; break; case 4013: descr= "Деление на ноль"; break; case 4014: descr= "Неизвестная команда"; break; case 4015: descr= "Неправильный переход"; break; case 4016: descr= "Неинициализированный массив"; break; case 4017: descr= "Вызовы DLL не разрешены"; break; case 4018: descr= "Невозможно загрузить библиотеку"; break; case 4019: descr= "Невозможно вызвать функцию"; break; case 4020: descr= "Вызовы внешних библиотечных функций не разрешены"; break; case 4021: descr= "Недостаточно памяти для строки, возвращаемой из функции"; break; case 4022: descr= "Система занята"; break; case 4050: descr= "Неправильное количество параметров функции"; break; case 4051: descr= "Недопустимое значение параметра функции"; break; case 4052: descr= "Внутренняя ошибка строковой функции"; break; case 4053: descr= "Ошибка массива"; break; case 4054: descr= "Неправильное использование массива-таймсерии"; break; case 4055: descr= "Ошибка пользовательского индикатора"; break; case 4056: descr= "Массивы несовместимы"; break; case 4057: descr= "Ошибка обработки глобальныех переменных"; break; case 4058: descr= "Глобальная переменная не обнаружена"; break; case 4059: descr= "Функция не разрешена в тестовом режиме"; break; case 4060: descr= "Функция не подтверждена"; break; case 4061: descr= "Ошибка отправки почты"; break; case 4062: descr= "Ожидается параметр типа string"; break; case 4063: descr= "Ожидается параметр типа integer"; break; case 4064: descr= "Ожидается параметр типа double"; break; case 4065: descr= "В качестве параметра ожидается массив"; break; case 4066: descr= "Запрошенные исторические данные в состоянии обновления"; break; case 4099: descr= "Конец файла"; break; case 4100: descr= "Ошибка при работе с файлом"; break; case 4101: descr= "Неправильное имя файла"; break; case 4102: descr= "Слишком много открытых файлов"; break; case 4103: descr= "Невозможно открыть файл"; break; case 4104: descr= "Несовместимый режим доступа к файлу"; break; case 4105: descr= "Ни один ордер не выбран"; break; case 4106: descr= "Неизвестный символ"; break; case 4107: descr= "Неправильный параметр цены для торговой функции"; break; case 4108: descr= "Неверный номер тикета"; break; case 4109: descr= "Торговля не разрешена"; break; case 4110: descr= "Длинные позиции не разрешены"; break; case 4111: descr= "Короткие позиции не разрешены"; break; case 4200: descr= "Объект уже существует"; break; case 4201: descr= "Запрошено неизвестное свойство объекта"; break; case 4202: descr= "Объект не существует"; break; case 4203: descr= "Неизвестный тип объекта"; break; case 4204: descr= "Нет имени объекта"; break; case 4205: descr= "Ошибка координат объекта"; break; case 4206: descr= "Не найдено указанное подокно"; break; case 4207: descr= "Ошибка при работе с объектом"; break; } Comment("Ошибка! ",descr); Print("Ошибка! ",descr); return(errr); } 1...205206207208209210211212213214215216217218219...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好。
寻找以下信息。
1.关于在处理EA工作中的关键事件时实施SMS-通知。
关于从北京时间12:00至18:00实现开仓和平仓的交易(当然有短信通知:)关于每周交易时段的开始和结束)。
关于实施交易完成后的电子邮件通知(18-00 PTN)--在测试器中发送每周交易时段的顾问工作报告,其中包括图表和开仓日期、平仓日期、价格、平仓 后的利润/亏损。或者报告将是txt格式的?
请告知哪些函数或脚本可以实现它?可能有一个关于这个问题的主题--短信和电子邮件通知和报告。
https://www.mql5.com/ru/articles/1454
这里有一些类似的东西,但为了让它更简单)))
https://www.mql5.com/ru/forum/53920
短信通知的算法还不错,我们的EA向我们发送电子邮件,而电子邮件运营商向我们发送信件的文本。所有这些都非常简单。我们所需要的是注册我们的移动电话。现在更容易了。
我去看看,我发现了一个类似的函数--SendMail().我想知道它有多复杂?
大家下午好!
做了这个代码 - 一次性删除所有的订单。
问题是,几乎所有的订单都被关闭。但我们仍有1-2个订单没有被删除。
而且无论我访问这个函数多少次,这个函数都不能关闭剩余的订单。
我得到一个错误,显示错误的价格。
我以为是重新报价,但如果我们已经请求这个功能500000次,那么重新报价可能是什么?
什么不能是错误的价格?
我从来没有和其他EA发生过这样的胡闹。
大家下午好!
做了这个代码 - 一次性删除所有的订单。
问题是,几乎所有的订单都被关闭。但我们仍有1-2个订单没有被删除。
而且无论我访问这个函数多少次,这个函数都不能关闭剩余的订单。
我得到一个错误,显示错误的价格。
我以为是重新报价,但如果我们已经请求这个功能500000次,那么重新报价可能是什么?
什么不能是错误的价格?
我从来没有和其他EA发生过这样的胡闹。
如果有大量的订单,价格就有时间过时了。添加RefreshRates(),应该就可以了。
这就是问题所在:还剩下一两份订单。
我对这个函数进行了循环调用,直到所有订单被删除。
在概念上,如果是买入的订单,它应该被Bid关闭,而现在是什么价格并不重要。
它应该以任何价格按Bid收盘。
而且,如果我们已经处理了这个功能好几千次,那么无论如何,价格都应该关闭。
或者,也许我不明白什么?
这就是问题所在:还剩下一两份订单。
我对这个函数进行了循环调用,直到所有订单被删除。
理论上讲,如果是买入的订单,应该由Bid来关闭,而现在是什么价格并不重要。
它应该以任何价格按Bid收盘。
而且,如果我们已经处理了这个功能好几千次,那么无论如何,价格都应该关闭。
还是有什么是我不明白的?
删除时日志中是否有错误?
价格在周期内可以走得足够远。卖出价和买入价是常数,它们要么被强制更新(当调用RefreshRates()时),要么在处理一个新的tick时被强制更新。因此,在每个循环轮回之后,调用RefreshRates(),看看会发生什么。
问题就在这里,还剩下一两份订单。
我对这个函数进行了循环调用,直到所有订单被删除。
理论上讲,如果是买入的订单,应该由Bid来关闭,此时是什么价格并不重要。
它应该以任何价格按Bid收盘。
而且,如果我们已经处理了这个功能好几千次,那么无论如何,价格都应该关闭。
或者,也许我不明白什么?
试试1)用Alert代替Print,可以立即在屏幕上看到结果--这样更快 2)你在那里得到错误代码。打印出来看看 3) 获取并打印OrderSelect函数的 错误代码,并立即打印OrderSymbol(), OpderType(), OrderTicket()。
试试1)用Alert代替Print,以便立即在屏幕上看到结果--这样更快 2)你在那里得到错误代码。打印出来看看 3) 获取并打印OrderSelect函数的 错误代码,并立即打印OrderSymbol(), OpderType(), OrderTicket()。
也试过RefreshRates()。什么都没有改变。警报- 与打印相同,给出 - 错误的参数。
错误3。
我早上起来看到EA已经触发了,并显示了删除整晚所有订单的功能。
请求的计数器显示有几百万个请求。这意味着订单不会被删除。
这个EA还检查是否所有的订单都被删除,它就像一个保险。如果有订单,我们将调用
删减的功能是要求的。程序会被卡住。这意味着,在所有订单被删除之前,循环不会停止。
这种麻烦发生在2个货币对上。我已经失去了理智。该怎么做?
我已经试过RefreshRates()。什么都没有改变。警报--与打印相同,它说--参数错误。
错误3。
今天早上醒来,看到EA已经触发了,并且显示呼叫删除所有的订单,整整一个晚上。
请求的计数器显示有几百万个请求。这意味着订单不会被删除。
这个EA还检查是否所有的订单都被删除,它就像一个保险。如果有订单,我们将调用
删减的功能是要求的。程序会被卡住。这意味着,在所有订单被删除之前,循环不会停止。
这种麻烦发生在2个货币对上。我已经失去了理智。该怎么做?
那什么是error()函数?
这可能是问题所在。
什么是error()函数?
有可能这就是问题所在。
error()函数只是显示一个错误代码。这个功能没有问题,我在许多EA中都有这个功能,而且我从来没有改变过它。
所以这绝对不是问题所在。
功能本身就在这里。