Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 125

 
novichok2018:

И выводить сообщение об ошибке не надо? Наверное не мешало бы знать, почему не найден ордер и как этого избежать?

На мой взгляд, не нужно. По большому счету OrderSelect завершится с ошибкой только в том случае, если указан неверный индекс строки списка. Если индекс точно верен, то ошибка не возникнет. Таким образом, ошибка OrderSelect - это ошибка программиста, а не ошибка времени выполнения программы.

 
Ihor Herasko:

Мне известен только один учебник по MQL4 - Учебник Сергея Ковалева.

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

 В Вашем коде вроде бы всё понятно, но как его использовать в анализе позиций, не понимаю. 

В то же время вроде бы без массивов мою ситуацию не разрулить. Я уже вроде использовал все варианты - и флаги, и счетчики позиций, и открытие бай и селл отдельными функциями, как и их закрытие. Ни что не помогает. Как только при открытой селл открывается-закрывается бай, терминал не видит условий её закрытия, пока не откроется новая селл. Если же баев в этот период не было, всё работает нормально. Будет весьма огорчительно, если массивы не помогут.

В общем, жду от Вас дальнейших рекомендаций. Спасибо.

22.02  13.00  Кажется я понял,в чем причина моей ситуации: для того, чтобы позиции закрывались по своим условиям в зависимости от условий их открытия, я присваиваю каждой свой магик. Но для этого сначала после открытия позиции используется OrderSelect(). Получается, что каждая позиция при применении OrderSelect() создает новый магик, уничтожая предыдущий. Поэтому поиск условий на закрытие происходит по последнему магику, и если открылось несколько баев(селлов) по разным условиям, все они закрываются по условию последней открытой позиции (это видно в тестере). И получается, когда при открытой селл открывается бай, он изменяет магик и терминал не находит условий для закрытия селл. Подтверждение этому я нашел принтами. Теперь осталось найти, как избежать подобной ситуации. Кто может помочь?

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

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

 В Вашем коде вроде бы всё понятно, но как его использовать в анализе позиций, не понимаю. 

В то же время вроде бы без массивов мою ситуацию не разрулить. Я уже вроде использовал все варианты - и флаги, и счетчики позиций, и открытие бай и селл отдельными функциями, как и их закрытие. Ни что не помогает. Как только при открытой селл открывается-закрывается бай, терминал не видит условий её закрытия, пока не откроется новая селл. Если же баев в этот период не было, всё работает нормально. Будет весьма огорчительно, если массивы не помогут.

В общем, жду от Вас дальнейших рекомендаций. Спасибо.

Учебник древний, написан для версий МТ4 < 600, то есть для старого MQL4, в нем не было структур. Массивы были.

 
Alexey Volchanskiy:

Учебник древний, написан для версий МТ4 < 600, то есть для старого MQL4, в нем не было структур. Массивы были.

В справке массивы тоже есть, да что толку: как созданные массивы использовать для закрытия/открытия позиций - не понятно.

 
novichok2018:

В справке массивы тоже есть, да что толку: как созданные массивы использовать для закрытия/открытия позиций - не понятно.

))))))))) рассмешили. Зачем для открытия/закрытия массивы? 

 
Alexey Volchanskiy:

))))))))) рассмешили. Зачем для открытия/закрытия массивы? 

если серия сделок, и для каждого шага свои параметры лот/сл/тп/дистанция, то проще, это всё перебирать в массиве

 
Taras Slobodyanik:

если серия сделок, и для каждого шага свои параметры лот/сл/тп/дистанция, то проще, это всё перебирать в массиве

Ситуация описана в посте 1243. Может Вы сможете разрулить? Спасибо.

 

novichok2018:

Кто может помочь?

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

 
Aleksey Lebedev:

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

Спасибо всем. Кажется решил проблему сам: просто убрал все магики и для идентификации позиций применил флаги, для каждого условия свой. Просто и действенно. И без массивов.

Если кто-то из специалистов видит в этом решении подводные камни, которые ещё себя не проявили - буду очень признателен за пояснения.

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