Как кодировать? - страница 89

 
shanyang:
Я скачал индикатор, который показывает зеленую/красную стрелку, когда приходит сигнал на покупку/продажу.

теперь я хочу запрограммировать свой собственный советник на основе этого индикатора.

Но у меня есть только файл ex4 этого индикатора (без исходного кода).

Я хочу, чтобы мой советник считывал стрелку индикатора на основном графике и отправлял ордер на покупку/продажу (зеленая стрелка==> покупка, красная стрелка==> продажа).

есть ли какой-нибудь способ получить информацию о стрелке индикатора на основном графике?

спасибо

Стрелка может быть нарисована как значение одного из буферов индикатора, в этом случае цвет в свойствах индикатора должен давать номер буфера, что достаточно для вызова его функцией "ICustom()", также необходимо заполнить все значения вкладки "Input" как параметры вызова ICustom().

Если стрелка не является значением буфера, то это объект. Выберите его, чтобы увидеть его свойства. Чаще всего легко понять, как генерируются имена, и тогда можно будет использовать ObjectFind().

Эксперт должен следить за ObjectsTotal(), и только когда она увеличивается, он может попытаться узнать последний объект. Если имя неизвестно, эксперт не может использовать OjectFind() и должен просканировать все объекты, чтобы определить последний. Последний объект не обязательно тот, у которого самый высокий индекс (ObjectsTotal() - 1), но лучше начинать сканирование с самого высокого индекса, так как вы, вероятно, сможете быстрее выполнить перебор. Теперь вам нужно сравнить OBJPROP_TIME1, полученный ObjectGet(), с Time[0] или Time[1], например, и проверить цвет или тип стрелки, или подстроку имени, чтобы определить сигнал на покупку или продажу.

Это кажется сложным, но это не так. Попробуйте написать это и не стесняйтесь спрашивать больше уточнений, если это необходимо.

 
Big Be:
Предыдущий ответ был неполным.

Если индикатор является стандартным в MT4, он будет отображаться в обычном месте. Если он вызывается iCustom, он также будет отображаться, если он правильно закодирован.

В следующих советниках индикаторы даже отображаются в окне графика. Изучите их, чтобы узнать, как это делается:

bouncingPipEA_mpowerV42.mq4

bouncingPipEA_BigBear_v23.mq4

Big Be

Спасибо Big Be, я проверю их.

 
Michel:
Стрелка может быть нарисована как значение одного из буферов индикатора, в этом случае цвет в свойствах индикатора должен дать вам номер буфера, что достаточно для вызова его функцией "ICustom()", также необходимо заполнить все значения вкладки "Input" как параметры вызова ICustom().

Если стрелка не является значением буфера, она является объектом. Выберите его, чтобы увидеть его свойства. Чаще всего легко понять, как генерируются имена, и тогда можно будет использовать ObjectFind().

Эксперт должен следить за ObjectsTotal(), и только когда она увеличивается, он может попытаться узнать последний объект. Если имя неизвестно, эксперт не может использовать OjectFind() и должен просканировать все объекты, чтобы определить последний. Последний объект не обязательно тот, у которого самый высокий индекс (ObjectsTotal() - 1), но лучше начинать сканирование с самого высокого индекса, так как вы, вероятно, сможете быстрее завершить работу. Теперь вам нужно сравнить OBJPROP_TIME1, полученный ObjectGet(), с Time[0] или Time[1], например, и проверить цвет или тип стрелки, или подстроку имени, чтобы определить сигнал на покупку или продажу.

Это кажется сложным, но это не так. Попробуйте написать его и не стесняйтесь спрашивать больше уточнений, если это необходимо.

Отличное объяснение Мишель ... На 100% более полное, чем мое!

Спасибо тем, кто заинтересовался.

FerruFx

 

изменить индикатор в советнике

я хотел бы изменить индикатор в советнике, но не знаю, как это сделать.

Я не программист, на самом деле я не очень разбираюсь в таких вещах, ниже только часть, которая относится к индикатору, я хочу изменить DiMA на MFA(14).

я хочу покупать @ >60 и продавать @<40

double diClose0=iClose(NULL,5,0);

double diMA1=iMA(NULL,5,7,0,MODE_SMA,PRICE_OPEN,0);

double diClose2=iClose(NULL,5,0);

double diMA3=iMA(NULL,5,6,0,MODE_SMA,PRICE_OPEN,0);

if(AccountFreeMargin()<(1000*Lots)){

Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());

return(0);

}

if (!ExistPositions()){

if ((diClose0<diMA1)){

OpenBuy();

return(0);

}

if ((diClose2>diMA3)){

OpenSell();

return(0);

}

}

кто-нибудь может мне помочь?

денис

 

Пожалуйста, опубликуйте ваш индикатор MFA. Мне нужно увидеть буферы. По какой логике вы хотите переключать индикаторы?

Дэйв

 

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

денис

 
denis68:
привет дэйв я не могу выложить индикатор MFI его нет в папке индикаторов вы можете получить индикатор из панели инструментов под объемами, я не знаю что вы имеете ввиду под какой логикой. денис

Вот этот? Индекс содействия рынку

Файлы:
mfi.mq4  3 kb
 

привет linuxer я не думаю, что это тот самый, но все равно спасибо, тот, который у меня есть, называется money flow index.

денис

 
denis68:
Привет, linuxer, я не думаю, что это тот самый, но все равно спасибо, тот, который у меня есть, называется индекс денежного потока. денис

Извините, я неправильно написал название, это оно.

Money Flow Index.mq4 aka MFI.mq4

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