Как выполнить только однократное действие по серии убытков? - страница 2

 
Самый железный вариант: смотреть по истории. В окне свойств параметр - время с которого смотреть. Если надо начать с начала - поставить текущее время.
 
KimIV:

Всё, что Вы перечислили - это рычаги управления, которые ничем не отличаются от внешнего параметра или от глобальной переменной терминала. Отличие лишь в удобстве использования. Вопрос состоит в том, как и чем двигать эти рычаги? Получается, что автоматизировать этот процесс не получается :-)))))))) Нужно, видимо, рычаг давать в руки пользователю и на рычаге написать, чтоб не забывал его дёргать в нужные моменты ))))))))

Но задачу пока никто не отменял и она состоит в том, чтобы советник прекращал работу после серии убытков. В какой-то момент времени пользователь решает, что уже пора советник оживить, что-то там в нём передёргивает и советник начинает работать как с нуля. Есть мысль, заставить пользователя писать во внешний параметр дату и время, с которых учитывать убытки. Как Вам такая мысль? Вроде должно сработать...

Почему, серию убытков будет фиксировать советник. Как лось - так пишем в файл, еще лось - снова пишем.

После каждой итерации проверяем, не достигло ли кол-во убыточных сделок N. Если да, дергаем стоп-кран)

Цель (выделено) достигнута. Или я чего-то не допонял?)

"Оживление" же снова до рабочего состояния - можно опрашивать булевую глобалку, которую юзер вкл./выкл.

 
KimIV:

Нужно остановить работу советника по достижении им некоторого количества убыточных сделок подряд.

1. В глобальной переменной советника (не терминала) вести учёт убытков. Переменную наращивать после убытка и сбрасывать после прибыли. После достижения критического значения выбрасывать из функции start() с соответствующим сообщением. Этот вариант не катит, т.к. при перезапуске советника теряются значения всех его переменных.

2. Количество убытков считывать непосредственно из истории сделок. Тоже не катит, т.к. после достижения критического значения будет постоянное выбрасывание из функции start() даже после перезапуска советника.

Кто-нибудь может предложить надёжный вариант?

Если я правильно понял, автору топика требуется запрещать работу советника, если количество непрерывных убыточных сделок превышает заданное количество. Но ничего не сказано, какое условие должно привести к возобновлению работы советника. Возможно автоматическое возобновление, если работа полностью не запрещается, а переводится в режим виртуальных сделок и при первой прибыльной сделке возвращается в нормальный режим. Либо более простой вариант перезапуск советника вручную, при этом глобальная переменная запрещающая работу сбрасывается в функции init().
 
OnGoing:

Почему, серию убытков будет фиксировать советник. Как лось - так пишем в файл, еще лось - снова пишем.

Хорошо... Как в советнике определить лося? Если советник зафиксировал лося, то зачем этого лося ещё и в файл записывать? Не лучше ли напрямую заново его определить вместо считывания из файла?

OnGoing:

После каждой итерации проверяем, не достигло ли кол-во убыточных сделок N. Если да, дергаем стоп-кран)

Цель (выделено) достигнута. Или я чего-то не допонял?)

Это тоже не проблема. Проблема в другом. Как вернуть всё на круги своя?

Но собственно, чем дольше я думаю о дате, как о некоей границе, до которой изучать историю и на ней определять наличие серии, тем больше утверждаюсь, что должно сработать. Но может, есть что-то проще, чем принуждать пользователя правильно вводить дату и время?

 
Integer:
Самый железный вариант: смотреть по истории.
Я так чуть не попал. Советник смотрит и берет данные из истории. ДЦ в начале месяца всегда скрывает историю... веселуха была.
 
khorosh:
Если я правильно понял, автору топика требуется запрещать работу советника, если количество непрерывных убыточных сделок превышает заданное количество. Но ничего не сказано, какое условие должно привести к возобновлению работы советника. Возможно автоматическое возобновление, если работа полностью не запрещается, а переводится в режим виртуальных сделок и при первой прибыльной сделке возвращается в нормальный режим. Либо более простой вариант перезапуск советника вручную, при этом глобальная переменная запрещающая работу сбрасывается в функции init().

После серии полный останов, а продолжение работы после какого-либо вмешательства трейдера.
 
KimIV:

Хорошо... Как в советнике определить лося? Если советник зафиксировал лося, то зачем этого лося ещё и в файл записывать? Не лучше ли напрямую заново его определить вместо считывания из файла?

Это тоже не проблема. Проблема в другом. Как вернуть всё на круги своя?

Но собственно, чем дольше я думаю о дате, как о некоей границе, до которой изучать историю и на ней определять наличие серии, тем больше утверждаюсь, что должно сработать. Но может, есть что-то проще, чем принуждать пользователя правильно вводить дату и время?

Я как- то делала... простенький сов и индикатор, который эмулирует график баланса этого сова.. при серии из 3 убытков - прекращалась торговля, при серии из 3х прибылей - возобновлялась.

Можно так же сделать виртуальные сделки с учетом , параллельно и аналогично с реальными.   При серии  выигравших виртуальных - переключать их на реальные...... массив глобальных переменных придется создавть...

 

Хотя, может и не в тему.. 

 
sever31:
Я так чуть не попал. Советник смотрит и берет данные из истории. ДЦ в начале месяца всегда скрывает историю... веселуха была.

Ага, и как всегда брокер виноват. Подходящие натсройки в терминале не пробовали ставить?
 
KimIV:

Хорошо... Как в советнике определить лося? Если советник зафиксировал лося, то зачем этого лося ещё и в файл записывать? Не лучше ли напрямую заново его определить вместо считывания из файла?

Это тоже не проблема. Проблема в другом. Как вернуть всё на круги своя?

Но собственно, чем дольше я думаю о дате, как о некоей границе, до которой изучать историю и на ней определять наличие серии, тем больше утверждаюсь, что должно сработать. Но может, есть что-то проще, чем принуждать пользователя правильно вводить дату и время?

И все-тки. Почему Вы считаете, что обязательно необходимо брать точку отсчета по времени?

Ведь можно просто вести статистику (подсчет) убыточных позиций на лету (да хоть по значению баланса).

Как счетчик достиг N, изменяем глобальный флаг на false, зацикливаем советника до тех пор, пока пользователь не изменит его на true.

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

 
Integer:Ага, и как всегда брокер виноват. Подходящие натсройки в терминале не пробовали ставить?

брокер не брокер, но эти нюансы всегда портят общее впечатление

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

Причина обращения: