Линейное торможение - ошибка программиста или особенность работы MT4? - страница 6

 
sergeev:


Вам нужно перестать тратить время и начать наконец разработку.  Оформляйте ТЗ.

Так как клиенту нужно решение, а не простой по времени.

Уже бегу).
 
FAQ:

  Вам опытный человек уже в который раз объясняет, что в этом в коде за один проход функции старт

32 цикла "for"

17  раз сканируете ордера (как открытые, так и историю),

24  вызова функции удаления отложенных ордеров, а в ней тоже цикл по всем ордерам (* количество ордеров)

7   вызовов функции удаления рыночных ордеров, а в ней тоже цикл по всем ордерам (* количество ордеров)

6  модификаций лимитников с циклами внутри (* количество ордеров)

6  модификаций стоповых ордеров с циклами внутри (* количество ордеров)

10 вызовов функций установки ордеров с циклами внутри (* количество ордеров)

37 раз печатаете (Print),

7(семь) раз обращаетесь к полной истории баров на всю длину истории (а она растет в процессе тестирования).

И это занимает тучу времени.

Я уже молчу о неоптимизированных фильтрах "if", сложных условиях в них (а сокращенной проверки в МТ4 нет).

  Ну и после этого, на совершенно не читаемый код можно закрыть глаза, это уже не существенно, его по крайней мере можно пропустить через стилизатор и получить хоть что то (хотя мне лично его стиль не нравится) :    

micle:
Возможно повторюсь, но! Первая и вполне возможно главная проблема в том, что код не читаем и не структурирован. Можно иметь вполне чёткое ТЗ. Но если писать по нему код в лоб, то получается вот такая каша. если разобраться в ТЗ, и подойти с правильной стороны к написанию кода, то это (как правило) даёт существенный выигрыш в скорости выполнения, но и стоит других денег.

 

В итоге получается, что необходима так называемая блок-схема, по которой будет видно, что  выполняется лишнее количество раз. Для начинающих программистов(читай "трейдеров"), было бы удобно видеть такую визуализацию кода средствами самой программы MT4.

Из простейшей оптимизации, как я понял это систематизировать код по работе с ордерами, а именно сделать всего 2 основных запроса на бар, и дополнительно на 1 тик, если условия ТЗ требуют работу с ордеров при наступлении определенных условий, в результате получим:

1. Проверка условий для модернизации/закрытия ордера при открытии нового бара;

2. Изменение/закрытие ордера

3. Проверка условий для открытия нового ордера при открытии нового бара

4. Открытие нового ордера

5. Проверка  условий для модернизации бара на каждом тике

6. Модернизация/закрытие ордера при исполнении условия 5. 

 

Правда мне один программист рассказал, что код все равно будет исполнятся на каждом тике(полная проверка соответствию ТЗ, а не только той части что должна проверятся на каждом тике), разве это нельзя как то решить? 

 

А вот разве функция "print" тормозит советник при оптимизации? 

Что за файл Вы приложили, после прогона в "стилизаторе"? 

 
который вы выложили в первом посте темы.
 

FAQ:
который вы выложили в первом посте темы. 

А что касается "код все равно будет исполнятся на каждом тике(полная проверка соответствию ТЗ, а не только той части что должна проверятся на каждом тике)", как прокомментируете? 

 
-Aleks-:

А что касается "код все равно будет исполнятся на каждом тике(полная проверка соответствию ТЗ, а не только той части что должна проверятся на каждом тике)", как прокомментируете? 

  Надо переделывать, с умом переделывать. Тогда все будет работать когда надо и как надо.
 
FAQ:
  Надо переделывать, с умом переделывать. Тогда все будет работать когда надо и как надо.

Я не об этом коде, а вообще глобально. Т.е. вы опровергаете это утверждение? 

 
-Aleks-:

Я не об этом коде, а вообще глобально. Т.е. вы опровергаете это утверждение? 

не занимайтесь теорией.  все равно вы ничего не поймете. 

вся теория без конкретного кода или применения - это пустозвонство.

хотите опровергнуть или подвердить - сделайте код и посмотрите как он себя ведет.

 
sergeev:

не занимайтесь теорией.  все равно вы ничего не поймете. 

вся теория без конкретного кода или применения - это пустозвонство.

хотите опровергнуть или подвердить - сделайте код и посмотрите как он себя ведет.

Возможно я много чего не понимаю, но стараюсь это понять...

Подумаю о Вашем призыве к действиям... 

 
-Aleks-:

но стараюсь это понять...

пока вы не откроете MetaEditor и не начнете писать СВОЙ собственный код - вы никогда ничего не начнете понимать как оно работает.
и даже маломальский начинающий прогер все ваши теоретические знания переплюнет своими практическими навыками и эмпирическими наблюдениями.
Если же у вас в планах нет желания "писать СВОЙ собственный код" - то даже и не начинайте спрашивать у форума - почему что то тормозит.  Ибо для вас это не имеет смысла.  

Или вы решили стать профи кодинга по советам с форума?  :)))  Название темы "линейное торможение"  подсказывает нам, что вы учились на каком-то естфаке либо на инженера.


Теоретегов в программировании не существует.  Впрочем как нет и профи футболистов/тренеров/хирургов/лингвистов, которые теоретеги и ни разу не занимались практикой. 

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

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


И немного юморной сути в тему.






 
sergeev:

пока вы не откроете MetaEditor и не начнете писать СВОЙ собственный код - вы никогда ничего не начнете понимать как оно работает.
и даже маломальский начинающий прогер все ваши теоретические знания переплюнет своими практическими навыками и эмпирическими наблюдениями.
Если же у вас в планах нет желания "писать СВОЙ собственный код" - то даже и не начинайте спрашивать у форума - почему что то тормозит.  Ибо для вас это не имеет смысла.  

Или вы решили стать профи кодинга по советам с форума?  :)))  Название темы "линейное торможение"  подсказывает нам, что вы учились на каком-то естфаке либо на инженера.

Теоретегов в программировании не существует.  Впрочем как нет и профи футболистов/тренеров/хирургов/лингвистов, которые теоретеги и ни разу не занимались практикой. 

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

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

И немного юморной сути в тему. 

Спасибо за юмор!

 

Но если говорить в тему, то моя профессиональная деятельность лежит в области оптимизации налогообложения, так что с алгоритмами я знаком ;) Считал что мои ТЗ доступны для понимания, естественно после уточнений деталей (стараюсь и картинки рисовать и расчет в экселе прикладывать).

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

Ну, и потом мне действительно интересно. 

Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Торговые функции - Документация по MQL5
Причина обращения: