Учимся писать эксперты для MetaTrader. Ответы на вопросы читателей.
|

Учимся писать эксперты для MetaTrader. Ответы на вопросы читателей.

   13.1. Вопрос – ответ


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


   Работа с файлами это тема отдельного урока, об этом поговорим в следующих выпуска. Все таки я хочу кое что сказать по этому вопросу. Объявляя переменные в секции var, мы задаем их первое значение (значение переменных при самом первом запуске эксперта). После того как эксперт выполняется (обычно это происходит менее чем за 1 секунду, при среднем эксперте и средней машине), происходит выход из эксперта, но значения всех переменных сохраняется. На следующем тике эксперт запускается снова, но переменные могут иметь уже другие значения нежели в скобках после названия переменной, в секции var.


   “Каким образом можно сделать пользовательский индикатор из 3 линий?”


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


   “Имеется ли в МТ возможность отделять открытые позиции руками от позиций открытых экспертом, на одном инструменте.”


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


   “1. Возможность эксперта “мониторить” рынок, т.е. поочередная проверка на открытие по заданному списку торговых инструментов. (Напр:: EUR/USDM30, EUR/USDH1, USD/CHFM30, GBP/USDH1). Если условие открытия выполняется, то открыть позицию и работать дальше только с ней. После закрытия позиции снова перейти к “мониторингу”.
   2.То же, что и в п.1, только после открытия позиции по одому из инструментов и работы по нему, продолжать “мониторинг”, а при выполнении условия на открытие по другому инструменту, открыть позицию и продолжать паралельно обрабатывать 2 позиции.”


   Для мониторинга, к каждому инструменту нужно перекреплять эксперт. В каждом из них можно прописать условие в начале кода.


   If TotalTrades>0 then exit;


   Смысл в том, что если по какой-то паре будет открыта позиция, больше никакой эксперт не сможет войти в рынок. Стоить помнить, что для эксперта, например, EUR/USDM30 и EUR/USDH1 это один символ, но разные графики, со всеми вытекающими.


   ” У меня вопрос. Не могу войти по клавише F4 в редактор в МТ чтобы написать эксперт. Я скачивал МТ с интернета. Если можно объясните…”


   Эта проблема у меня была раньше, сейчас что-то нет, это баг МТ. Перезагрузка машины отлично помогает.


   “Почему не видно внешних переменных в индикаторе, вроде я все правильно написал.”


   Не забывайте, что в экспертах секция внешних переменных это defines, а в пользовательских индикаторах это inputs и путать их не нужно.


   “ Почему эксперт не открывает позицию если условие наступило?”


   В функции SetOrder четвертым параметром является максимально допустимое проскальзавание при открытии сделки, видимо у Вас оно очень не велико, а рынок в момент теста был быстрым.


   ” Как быть если я хочу прикрепить к одному инструменту несколько экспертов?”


   Можно открыть несколько графиков с одним инструментом и к каждому графику прикрепить несколько разных экспертов.


  ” Почему МТ с пользовательским индикатором собственного изготовления очень сильно тормозит?”


   МТ имеет такую проблему, для ее решения индикатор стоит прорисовывать не для все истории котировок а, например, для последних 500 баров. Количество баров для прорисовки индикатора можно сделать в настраиваемой переменной.


   ” Можно ли каким-либо образом добавить в МТ какие-нибудь дополнительные технические инструменты, вроде линий фибоначчи? “


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


На вопросы читателей отвечал:
Халхальян Артур
artur@fxtest.ru