Надёжные реализации экспертов

 

 Я вот думаю по поводу того, что можно писать проще, но это, как я понимаю, не всегда будует надёжно отрабатываться в реале. Хочу обсудить данный момент. Так как написать могу всё что нужно, но не хочется избыточности кода. Потому прикидываю в плане оптимизации сразу. А думаю я о том, что торговые операции совершаются есс-но на новом баре, т.е. не то чтоб на новом, но не на каждом тике, а периодически, через N-ое количество секунд (минут). Но это касается лишь совершения сделок.

 А есть ещё и другие вещи. Например,операции удаления ордеров (если они не исполнились), траалы и тд, Их нужно, по ходу, отрабатывать на каждом тике? Я думаю, что иначе никак. Например, если ордер не удалится с первого раза, и ждать ещё какое-то время, не всегда будет толк, если торговать на не высоких ТФ. Получается, нужно это всё разруливать либо на каждом тике, либо использовать глобальные флаги типа ТРЕНД вверх или вниз. Если флаг активен, то проверяется или что-то делается, если не активен, то не делается.

Как кто выстраивает подобные конструкции? Хочу написать более гибкий код.. 

 
Практически, с точностью до наоборот. Попробуйте потралить позицию на каждом тике,- получите незабываемые впечатления. 
 
tara:
Практически, с точностью до наоборот. Попробуйте потралить позицию на каждом тике,- получите незабываемые впечатления. 
Ну а как тогда?
 
shanty:
Ну а как тогда?
Да, как пишется. 
 
tara:
Да, как пишется. 
В том то и дело, что пока лишь думается..
 
shanty:
В том то и дело, что пока лишь думается..
Дык, я тоже зело ленив. 
 
shanty:
Ну а как тогда?
Если хотите получить конкретные ответы то и задавайте конкретные вопросы, по пунктам.
 
tara:
Дык, я тоже зело ленив. 

А мне приходится быть трудоголиком. Видеть ж я написал вопрос, а это уже кой-чиво знчит...) Так что предлагаю перейти к дискуссии, а не флудить.

Я думаю, что, например, удалять ордера можно так:

1. На каждом тике ищем свои ордера.

2. Если есть просроченные пытаемся из снести. 

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

4. На следующем тике проверяем положение флага, и, если  он в положении не удалось снести ордер, то пытаемся снова.

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

Логично? 

 
Виктор, мне совсем не интересно, как удалять ордер.
 
shanty:
Логично? 
Поищите здесь, там очень много профессионально написанных готовых функций, в т.ч. и для удаления ордеров.
 
shanty:

В дополнение к посту выше, скажу, что:

  1. Ещё коды Игоря Кима, из тех, что он выложил в свободный доступ, здесь на сайте можно посмотреть, к примеру, в этой теме: https://www.mql5.com/ru/forum/131859
  2. Очень хорошим ориентиром направлений действий по вашему вопросу является учебник: https://book.mql4.com/ru/trading/index , Документация + поиск по сайту.

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

P./S.: Это вам как трудоголик трудоголику говорю. Поскольку если вы действительно им являетесь или приходиться быть, как вы сказали выше, то коллеги, можно сказать.

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