Я слабо себе представляю, какой трейдер согласится каждые 5 минут принимать SMS с уведомлением о том, что все в порядке, вместо того, чтобы 1 раз получить уведомление, если вдруг что-то поломалось.
Простите, ровно это предложение доказывает, что вы не разобрались в вопросе. Если взять цитату из текста статьи, то ответ будет таков:
Извините, уважаемый автор, но это Вы не поняли, что я объясняю другому пользователю именно ту самую стратегию, какую Вы еще раз описали, а именно периодическую отмену периодически возобновляемого отложенного алерта. Я называю это для краткости пингом, в соответствии с тем, как это делается во всех распределенных системах.
Я же русским языком написал, что я "слабо представляю" (т.е. считаю не пригодным для работы, из-за чего собсно и написана данная статья с правильным решением), чтобы sms-ить нормальную работу каждые 5 минут, вместо того, чтобы один раз от-sms-ить проблему.
Вобщем погуглил и написал консольную утилитку на C#. Принимает на вход Логин Пароль Текст сообщения
Я дико извиняюсь, но не могли бы вы приложить исходник? Просто для того чтобы мы были уверены, что утилита не делает ничего лишнего... и просто потому, что здесь так принято...
Вобщем погуглил и написал консольную утилитку на C#. Принимает на вход Логин Пароль Текст сообщения
Я дико извиняюсь, но не могли бы вы приложить исходник? Просто для того чтобы мы были уверены, что утилита не делает ничего лишнего... и просто потому, что здесь так принято...
Вот исходник, только нужно учесть что придется еще поставить Google Data API
Зачем выложен (1-й) TerminalWatch.rar? В нем СМС-ка назначается за минуту до события и из-за этого: 1) не приходит "реанимационное" сообщение; 2) обычный алерт приходит на минуту раньше. Это ошибка, или есть какие-то детали, о которых не сказано в статье?
Использование ярлыка - не самое удобное решение. Можно попробовать запускать bat-файл с параметром "/MIN" (обсуждалось здесь). Да и от самого bat-ника я бы избавился. Достаточно одной функции на MQL4 с 9-ю аргументами которую и надо будет вызывать. Аргументы можно задавать внешними переменными или просто передавать при вызове.
При использовании в текстах сообщений (названиях событий в календаре) пробелов terminalWatcher.jar ругается. Если текст заключить в кавычки, ругаться перестает, но найти "свое" событие не может и просто плодит новые.
Не везде понятна логика программы.
Зачем удалять реанимационное сообщение, если оно не отправилось? Мне кажется, его надо удалять только если оно уже отправлено.
Почему не удаляются все сообщения кроме стопового, если пользователь вручную "установил стоп"? Приходят лишние СМС-ки о потере связи (сразу) и ее восстановлении (после "снятия стопа"). Не логично.
А вообще, работа проделана хорошая. Немножечко доделать, собрать во включаемый mq4-файл и пользоваться налево и направо ;)
Да и от самого bat-ника я бы избавился. Достаточно одной функции на MQL4 с 9-ю аргументами которую и надо будет вызывать. Аргументы можно задавать внешними переменными или просто передавать при вызове.
Вариант без bat-файла:
#import "kernel32.dll"int WinExec(string lpCmdLine,int uCmdShow);#import#define SW_HIDE 0#define SW_SHOWNORMAL 1#define SW_SHOWMINIMIZED 2#define SW_SHOWMAXIMIZED 3#define SW_MAXIMIZE 3#define SW_SHOWNOACTIVATE 4#define SW_SHOW 5#define SW_MINIMIZE 6#define SW_SHOWMINNOACTIVE 7#define SW_SHOWNA 8#define SW_RESTORE 9#define SW_SHOWDEFAULT 10int start(){
GoogleCalendar("C:\\TerminalWatch\\terminalWatcher.jar","user_name","password");return(0);}void GoogleCalendar(// Имя java-файла, включая полный путьstring JavaFileName,// Логин Googlestring UserName,// Пароль Googlestring Password,// Текст сообщения о потере связиstring AlertString ="Terminal_Alert",// Текст сообщения о восстановлении связиstring ReanimationString ="Trading_Resolved",// Название события, при нахождении которого новые сообщения размещаться не будутstring StopString ="STOP",// Интервал обновленияint RefreshPeriod =5,// Режим (0 - обычная работа, 1 - отправка сообщения на завтрашнее утро или утро понедельника)int Mode =0,// Час...int MondayHour =8,// ...и минута завтрашнего утраint MondayMinute =20)
{
WinExec(StringConcatenate("java -jar \"", JavaFileName,"\" ", UserName," ", Password," ",
AlertString," ", ReanimationString," ", StopString," ",
RefreshPeriod," ", Mode," ", MondayHour," ", MondayMinute ), SW_HIDE );}
Осталось исправить мелкие огрехи в логике, и можно пользоваться ;)
1-ый вариант сборки был сыроват и я хотел его удалить, прикрепив 2-ую версию, но не успел до публикации статьи.
Все ваши замечания и пожелания очень разумны, мне и вправду не приходило в голову на стадии разработки, реализовать такое.
Большое спасибо, сообществу, что идея теперь будет жить.
Уверен, что даже в том варианте готовности, в котором система представлена, она сможет помочь многим трейдерам, а те, кому её как таковой мало, смогут на базе этой идеи сформировать свой "шедевр".
1-ый вариант сборки был сыроват и я хотел его удалить, прикрепив 2-ую версию, но не успел до публикации статьи.
Вы в любой момент можете отредактировать уже опубликованную статью и отправить ее снова на публикацию. Это касается не только текста, но и всех вложений (файлов,прикрепленныхк статье).
Я слабо себе представляю, какой трейдер согласится каждые 5 минут принимать SMS с уведомлением о том, что все в порядке, вместо того, чтобы 1 раз получить уведомление, если вдруг что-то поломалось.
Простите, ровно это предложение доказывает, что вы не разобрались в вопросе. Если взять цитату из текста статьи, то ответ будет таков:
Извините, уважаемый автор, но это Вы не поняли, что я объясняю другому пользователю именно ту самую стратегию, какую Вы еще раз описали, а именно периодическую отмену периодически возобновляемого отложенного алерта. Я называю это для краткости пингом, в соответствии с тем, как это делается во всех распределенных системах.
Я же русским языком написал, что я "слабо представляю" (т.е. считаю не пригодным для работы, из-за чего собсно и написана данная статья с правильным решением), чтобы sms-ить нормальную работу каждые 5 минут, вместо того, чтобы один раз от-sms-ить проблему.
...
Вобщем погуглил и написал консольную утилитку на C#. Принимает на вход Логин Пароль Текст сообщения
...
Вобщем погуглил и написал консольную утилитку на C#. Принимает на вход Логин Пароль Текст сообщения
Спасибо автору за интересное решение и за статью.
Есть несколько вопросов и замечаний:
А вообще, работа проделана хорошая. Немножечко доделать, собрать во включаемый mq4-файл и пользоваться налево и направо ;)
Спасибо автору.
komposter писал(а):
Использование ярлыка - не самое удобное решение. Можно попробовать запускать bat-файл с параметром "/MIN" (обсуждалось здесь).
Решение без ярлыка:
Если вместо SW_SHOWMINIMIZED использовать SW_HIDE, окно вообще не будет появляться.
komposter писал(а):
Да и от самого bat-ника я бы избавился. Достаточно одной функции на MQL4 с 9-ю аргументами которую и надо будет вызывать. Аргументы можно задавать внешними переменными или просто передавать при вызове.
Вариант без bat-файла:
Осталось исправить мелкие огрехи в логике, и можно пользоваться ;)
И еще было бы неплохо добавить 2 независимые функции (jar-файла):
- создать_событие ( "имя", время );
- и удалить_событие( "имя" ).
Это бы значительно расширило область применения этой удобности.
Добрый день.
to: komposter
1-ый вариант сборки был сыроват и я хотел его удалить, прикрепив 2-ую версию, но не успел до публикации статьи.
Все ваши замечания и пожелания очень разумны, мне и вправду не приходило в голову на стадии разработки, реализовать такое.
Большое спасибо, сообществу, что идея теперь будет жить.
Уверен, что даже в том варианте готовности, в котором система представлена, она сможет помочь многим трейдерам, а те, кому её как таковой мало, смогут на базе этой идеи сформировать свой "шедевр".
to: komposter
Подскажите, могу ли я чем-то быть полезен, для улучшения логики утилиты?
Добрый день.
to: komposter
1-ый вариант сборки был сыроват и я хотел его удалить, прикрепив 2-ую версию, но не успел до публикации статьи.