Вот:
Для функции SendNotification() установлены жесткие ограничения по использованию: не более 2-х вызовов в секунду и не более 10 вызовов в минуту. Контроль за частотой использования осуществляется динамически, и функция может быть заблокирована при нарушении.
Вот:
Это все учтено, да и если бы было превышение по лимиту возвращало бы ошибку, но нет, запрос уходит без ошибок, но до конечного адресата доходит только 1-2 сообщения из 3-5 (сообщения однотипные, но не одинаковые, отправка раз в секунду). Во время тестирования, были нарушения из-за неправильного кода, из-за этого скорее всего и блочат, но сейчас я решил эту проблему и хочу чтобы сняли фильтр, но не знаю куда писать? В сервисдеске только финансовые вопросы, другой техподдержки я не нашел
Сообщений всего 5?
В журнале об отправке запись есть?
Попробуйте воткнуть смартфон в розетку и открыть держать МТ открытым. Если все будет доходить, значит проблема в экономном андроиде (тут об этом писали).
Сообщений всего 5?
В журнале об отправке запись есть?
Попробуйте воткнуть смартфон в розетку и открыть держать МТ открытым. Если все будет доходить, значит проблема в экономном андроиде (тут об этом писали).
В журнале записи есть, при проблеме с андроидом сообщения доходят, но с опозданием (когда открывают приложение). У меня же просто частично доходят сообщения (то есть из 3-5 однотипных сообщений, отправленных по очереди через 1 секунду, доходит только 1)
Дайте минимальный код для воспроизведения, покажите журнал терминала и советника.
Позапускаем у себя.
Советник делает отправку push сообщений из файла notifylist.txt (если он существует) по строкам, в конце удаляет файл. Сообщения типа "Открыт
buy ордер 0.01 по AUDUSD #937492923 *название советника*" и когда одновременно открывается несколько ордеров, соответственно
отправляется несколько таких однотипных сообщений, разница только в номере ордера, но доходит только одно.
string notify[50],null,CopierMagic="SendNotify"; void OnInit() { EventSetTimer(5); comment(0,Red,CopierMagic); //0 -номер строки (0..19) } //+------------------------------------------------------------------+ void OnTimer() { if(FileIsExist("notifylist.txt",FILE_COMMON)==true && FileIsExist("busyfile.txt",FILE_COMMON)==false) { int busy=FileOpen("busyfile.txt",FILE_WRITE|FILE_TXT|FILE_COMMON); FileClose(busy); int handle=FileOpen("notifylist.txt",FILE_READ|FILE_TXT|FILE_COMMON); if(handle!=INVALID_HANDLE) { for(int a=49;a>=0;a--) notify[a]=null; for(a=0;a<=49;a++) { if(FileIsEnding(handle)) { FileClose(handle); FileDelete("notifylist.txt",FILE_COMMON); FileDelete("busyfile.txt",FILE_COMMON); break; } notify[a]=FileReadString(handle); } Sending(); } } } //+------------------------------------------------------------------+ void Sending() { int count; for(int a=0;a<=49;a++) { if(notify[a]==null) continue; ResetLastError(); for(int b=0;b<10;b++) { if(SendNotification(notify[a])==true) { Print(notify[a]); if(GetLastError()>0) { Print("Error ",GetLastError()); ResetLastError(); } Sleep(1000); count++; if(count==10) { Sleep(60000); count=0; } break; } else { Sleep(1000); Print(GetLastError()," - Неудачная отправка сообщения: ",notify[a]); break; } } } } //+------------------------------------------------------------------+ void comment(int n,color c,string s0="",string s1="",string s2="",string s3="",string s4="",string s5="", string s6="",string s7="",string s8="",string s9="",string s10="",string s11="", string s12="",string s13="",string s14="",string s15="",string s16="",string s17="", string s18="",string s19="") { string r=s0+s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18+s19; string name=CopierMagic+n; //_comment-имя советника или любой идентификатор для маркировки "своих" объектов int y=20+n*15; int x=5; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet(name,OBJPROP_XDISTANCE,x); ObjectSet(name,OBJPROP_YDISTANCE,y); ObjectSetText(name,r,12,"Arial black",c); } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { EventKillTimer(); for(int a=0;a<20;a++) ObjectDelete(CopierMagic+a); } //+------------------------------------------------------------------+
Советник делает отправку push сообщений из файла notifylist.txt (если он существует) по строкам, в конце удаляет
файл. Сообщения типа "Открыт buy ордер 0.01 по AUDUSD #937492923 *название советника*" и когда одновременно открывается
несколько ордеров, соответственно отправляется несколько таких однотипных сообщений, разница только в номере ордера, но доходит
только одно.
Просил же минимальный код для воспроизведения.
А тут куча лишнего, и файл нужно какой-то готовить. Зачем?
Прикрепленный срипт отправил 10 сообщений (файл тоже прикрепил), и все дошли:
Упростите код для легкого воспроизведения ошибки кем угодно.
Я потратил достаточно времени.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, проблема с push-сообщениями (MQID - 4A253808 и 0BF211E6). Не все сообщения почему-то приходят. Сообщения отсылаются подряд, но с паузами в секунду, но к сожалению приходит только первое/последнее из 4-5-ти сообщений отправленых подряд. Ошибки не какой не выдает, то есть возвращает true при отправке. Единственное обьяснение - блокировка на сервере, проверьте пожалуйста. Код на всякий случай (в массиве notify[] текстовые сообщения):