Обсуждение статьи "Советы профессионального программиста (Часть II): Организация хранения и обмена параметров между экспертом, скриптами и внешними программами"

 

Опубликована статья Советы профессионального программиста (Часть II): Организация хранения и обмена параметров между экспертом, скриптами и внешними программами:

Советы профессионального программиста о методах, приемах и вспомогательных инструментах, облегчающих программирование. Речь пойдет о параметрах, которые можно восстанавливать после перезапуска (закрытия) Терминала. Все примеры — реально работающие куски кода из моего проекта Cayman.

Скрипт SetTradeLevel позволяет установить параметры торгового уровня. На графике выделяется один объект (прямая или трендовая линия, или прямоугольник). Скрипт SetTradeLevel находит выделенный объект (торговый уровень) и устанавливает его параметры.

Параметры скрипта SetTradeLevel

Далее, скрипт сохраняет параметры в файл Files\Cayman\Params\128968168864101576\exp_05_Lev607A160E_H4.txt и оправляет команду и путь к файлу через функцию SendCommand

Автор: Malik Arykov

 

зачем сторонние сервисы чтоб отправить сообщение на сматфон? Они чем-то лучше? Есть Пуш сообщения в терминале. 

Если нужно информацию перекидывать сразу (т.е. скрипт что-то создал - советник сразу принял) - ок. Если советнику нужно, напр, загрузится и получить информацию о торговле (ступень мартина на данный момент, группы ордеров и пр которой нет в самих ордерах), то лучше как-то максимально выкручиваться без файлов и локального хранения. Большинство пользователей забудет что где-то есть файл и при перекидывании советника на другой терминал получит сюрприз. 

Так же, кроме комментария в ордеров (позиций) есть еще магик, в который так же можно шифровать информацию. 

Так же я бы обратила внимание на быстродействие и количество проверок на поступление информации.  

 
Sofiia Butenko:

зачем сторонние сервисы чтоб отправить сообщение на сматфон? Они чем-то лучше? Есть Пуш сообщения в терминале. 

Если нужно информацию перекидывать сразу (т.е. скрипт что-то создал - советник сразу принял) - ок. Если советнику нужно, напр, загрузится и получить информацию о торговле (ступень мартина на данный момент, группы ордеров и пр которой нет в самих ордерах), то лучше как-то максимально выкручиваться без файлов и локального хранения. Большинство пользователей забудет что где-то есть файл и при перекидывании советника на другой терминал получит сюрприз. 

Так же, кроме комментария в ордеров (позиций) есть еще магик, в который так же можно шифровать информацию. 

Так же я бы обратила внимание на быстродействие и количество проверок на поступление информации.

1) Свой звук на каждый тип уведомления.

2) О файлах юзеру знать не обязательно. Это логика программ. Есть файл - восстанавливаем параметры, нет файла - используем значения по умолчанию

3)  Комменты ордеров я вижу в терминале и могу сразу же сказать что не так было с убыточной сделкой. Поскольку мне сразу видна ситуация перед открытием ордера

4) сорри, не понял насчет быстродействие и количество проверок. Можете пальцем показать

 
Malik Arykov:

1) Свой звук на каждый тип уведомления.

2) О файлах юзеру знать не обязательно. Это логика программ. Есть файл - восстанавливаем параметры, нет файла - используем значения по умолчанию

3)  Комменты ордеров я вижу в терминале на истории и могу сразу же сказать что не так было с убыточной сделкой. Поскольку мне сразу видна ситуация перед открытием ордера

4) сорри, не понял насчет быстродействие и количество проверок. Можете пальцем показать

1) ок, хотя такого запроса от пользователей ни разу не было. Были запросы давно на СМС и для этого нужны были сторонние сервисы. 

2) Обязательно если файл необходим для загрузки советника и его нужно переносить вместе с советником. Вы не поняли мою мысль. 

3) И что не так было с убыточной сделкой? Бывает чтоб восстановить полностью картину торговли нужны сотни ордеров с реала или истории. Выделение каждого тянет ресурс, а в МТ4 может и не быть истории (если она не выбрана пользователем), поэтому все операции перебора должны быть сокращены до минимума. Я же не за простые случаи говорю. 

4) Как узнаете что вторая программа создала графический объект? Постоянно перебирая все объекты и сверяя по названию каждый тик? А потом пользователь запустит пару десятков, а то и сотню версий и скажет "Сделайте что ни будь у меня висит". Реально были такие случаи... 

-------

Все мое мнение основано на опыте работы на фрилансе -  как сделать чтоб пользователь ничего не сломал и потом не жаловался.   

 
Sofiia Butenko:

4) Как узнаете что вторая программа создала графический объект? Постоянно перебирая все объекты и сверяя по названию каждый тик? А потом пользователь запустит пару десятков, а то и сотню версий и скажет "Сделайте что ни будь у меня висит". Реально были такие случаи... 

-------

Все мое мнение основано на опыте работы на фрилансе -  как сделать чтоб пользователь ничего не сломал и потом не жаловался.   

4) Имя графического объекта с параметрами одно и постоянное. Я запустил скрипт. Установил параметры и сохранил в графическом объекте. Эксперт каждый тик проверяет наличие только одного объекта. Если объект есть, то считать параметры и тут же его удалить. Скрипт и эксперт на одном графике. Эксперты на других графиках ничего не знают об этом.

 
Sofiia Butenko:

2) Обязательно если файл необходим для загрузки советника и его нужно переносить вместе с советником. Вы не поняли мою мысль. 

   

У меня при запуске эксперта или скрипта высветится "Нет файла ПУТЬ/AppSettings.txt. Пожалуйста, прочтите инструкцию по установке"

 
Сложно о простом.. или как пафоснее назвать статью ни о чём.
 
Sofiia Butenko:

зачем сторонние сервисы чтоб отправить сообщение на сматфон? Они чем-то лучше? Есть Пуш сообщения в терминале.  

Из справки: "Для функции SendNotification() установлены жесткие ограничения по использованию: не более 2-х вызовов в секунду и не более 10 вызовов в минуту. Контроль за частотой использования осуществляется динамически, и функция может быть заблокирована при нарушении."

Это серьёзные ограничения, например, если эксперт осуществляет торговые операции на открытии свечи.

Я пользуюсь отправкой сообщений в Телеграм.

 

Я пользуюсь отправкой сообщений в Телеграм.

я раньше тоже что такое делал, сейчас вообще не интересно что то и куда то отправлять, встроенного в терминал сервиса вполне хватает и тот редко смотрю,

а вообще я считаю что нельзя тормозить торговый робот отправкой сообщений .... которые по той или иной причине могут подвесить сам торгующий робот,

а вот насчет телеграм и предложенного тут решения вынужден сказать что в этой статье предложено на порядок более простое решение .... автору спасибо

 
Boris Egorov:

а вообще я считаю что нельзя тормозить торговый робот отправкой сообщений .... которые по той или иной причине могут подвесить сам торгующий робот,

В WebRequest есть параметр timeout. Для интереса можете проверить скорость WebRequest для сервиса WirePusher, путем вставки Print(TimeCurrent()) до и после отправки запроса. Как правило, оно мизерное. Ну а если все-таки будете получать код ошибки по таймауту, то можно сделать очередь обработки запросов. Сообщение не ушло на очередном тике, так уйдет на следующем. Главное удалять их из очереди после успешной отправки ;-)

 
Aleksey Mavrin:
Сложно о простом.. или как пафоснее назвать статью ни о чём.

+