Учимся писать эксперты для MetaTrader. Урок №22
|

Учимся писать эксперты для MetaTrader. Урок №22

   Здравствуйте, Дорогие читатели. Мне опять пришло много вопросов и сегодня мы разберем их.


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


   “… Я пишу пользовательский индикатор, в виде гистограмы, как мне сделать что бы в одном случае столбик индикатора имел один цвет, а в другом другой?…”


   Как я понял из письма, если значение индикатора “проходит” по одному условию то оно рисутся одним цветом, если по другому ( не “проходит” по прошлому), то другим.


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


   if УСЛОВИЕ SetIndexValue(shift,ind) else SetIndexValue2(shift,ind2);


   “… В моем эксперте нужно входить в рынок через указанное количество баров после условия входа, точнее нужно делать повторную проверку, как это можно сделать?… “


   Этот момент можно сделать двумя способами.
   Первый способ.


   В эксперте, во внешней переменной указать временной фрейм к которому прикреплен эксперт. Например, если торговля ведется на Н1, переменная, например, timeframe(3600), т.е. 3600 секундн-1 час. В эксперте при выполнении первного условия запоминать текущее время (t1=curtime), а потом для проверки использовать такую связку:


   if curtime-t1>timeframe*N then {…………….


   curtime – количество секунд прошедших с 0 часов, 1 января 1970 года.
   t1- значение curtime N секунд назад
   N- количество нужных баров


   Второй способ.
 
   Второй способ более универсален. При первом условии в переменную, например, Barr сохраняется номер текущего бара, bars, Barr=bars.


   if Barr+N>=bars then {…….


   N- количество нужных баров


   “… Как сделать чтобы в пользовательском индикаторе отображалось 3 линии?.. “


   Если Вы используте индикатор в новом окне, т.е., не в окне с ценам, то никак. МТ на текущий момент поддерживает только 2 массива данных пользовательского индикатора.


   Если индикатор используется в одном окне с ценами, то можно написать несколько (разбить на несколько) индикаторов и использовать их одновремменно.


   ” …Я написал пользовательский индикатор, он нормально работает, но отображается не на всей истории котировок. Почему?…”


   Дело в том, что сложные пользовательские индикаторы, содержащие в себе серьезные рассчеты “подвешивают” МТ. С такими индикаторами МТ может довольно сильно тормозить, если это происходит, уместным будет ограничить отображение индикатра на N последних барах. Если нужно протестировать исхорию с использование этого индикатора, лучше встроить его в эксперт.


   На всякий случай ограничение отображение индикатора будет выглядеть так:


   For shift = 0 To Nbars Begin


   или так


   For shift =Nbars Downto 0 Begin


   “…Мой эксперт иногда очень долго пытается открыть позицию, а иногда открывает сразу. Почему так происходит?…”


   В функции установки ордера, четвертым параметром идет параметр “slippage”.


   SetOrder(operation,lots,price,slippage,stoploss,takeprofit,color)


   От него зависит скорость и точность исполнения ордера. Slippage это максимально допустимое проскальзывание для того что бы ордер открылся. На спокойном рынке, например, для евры можно использовать значение менее 3 пунктов, на американской сессии лучше, на мой взгляд, использовать 3-4 пункта.


   Заключение


   Если у Вас остались вопросы по этому материалу или возникли новые, обязательно пишите мне и я очень постараюсь ответить всем.


Халхальян Артур
artur@fxtest.ru