Функция ICustom

 

привет

Во-первых, я должен сказать, что на этом форуме действительно много полезной информации, это здорово:D

следующий мой вопрос

как мне получить результат индикатора (или другую переменную) в качестве возвращаемого значения, если я вызываю его с помощью icustom?

Я пытался проанализировать код некоторых других индикаторов для этой части, но... разницы нет (или я ее упустил).

Так как же это работает?

приветствую, Хоми:)

 
 

привет и извини

tj за ответ:)

Вы меня неправильно поняли.

это мой плохой английский...извините!

Обычно я знаю, как вызвать индикатор с помощью icustom(),

но когда я пытаюсь вызвать LSMA trendindicator, он все время возвращает мне значение "1", независимо от того, какой на самом деле тренд, он все время возвращает одно значение..... "1".

Поэтому я подумал, что 1, которую он возвращает, это своего рода проверка на ошибки, которая возвращает true или false.

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

И мой вопрос выше означает :какой код нужно добавить в индикатор, чтобы получить значение тренда вместо значения errorcheck, когда я вызываю его с помощью icustom().

приветствую вас, Хоми

 

Использование iCustom для получения значения LSMA.

homicida:
tj за ответ:)

Вы меня неправильно поняли.

это мой плохой английский... извините!

Обычно я знаю, как вызвать индикатор с помощью icustom(),

но когда я пытаюсь вызвать LSMA trendindicator, он все время возвращает мне значение "1", независимо от того, какой на самом деле тренд, он все время возвращает одно значение..... "1".

Поэтому я подумал, что 1, которую он возвращает, это своего рода проверка на ошибки, которая возвращает true или false.

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

И мой вопрос выше означает :какой код нужно добавить в индикатор, чтобы получить значение тренда вместо значения errorcheck, когда я вызываю его с помощью icustom().

приветствует Хоми

Привет, Хоми,

Я не понял вас неправильно. Я привел вам рабочий пример iCustom.

В любом случае, это строка кода, которая позволит получить значение LSMA с помощью iCustom.

Примечание: я использовал LSMA в цвете ()

Alert(iCustom(NULL,0,"LSMA in Color",14,1500,0,0));

parmeter 1:символ - NULL для текущего символа.

parmeter 2: таймфрейм - 0 для текущего таймфрейма.

parmeter 3: имя индикатора - здесь это"LSMA in Color".

parmeter 4: это настройка для LSMA - Rperiod= 14.

parmeter 5: это настройка для LSMA - Draw4HowLongg= 1500.

parmeter 6: номер линии (диапазон от 0 до 7) - обычно используется 0.

параметр 7: рабочий бар - 0 для текущего бара.

Пожалуйста, попробуйте эту строку кода и скажите мне .

 

привет

Я протестировал его, ваш код работает хорошо.....

но это не решает проблему^^

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

Я искал значение в коде индикатора, там есть 3 буфера, и буфер, который держит 214783647 - это тренд, а не значение, которое хранится в нем.

например,

если буфер1 держит 214783647 значит тренд вверх, другие 2 буфера держат что-то вроде 174...

если в буфере2 хранится 214783647, значит тренд вниз, в других 2 буферах хранится что-то вроде 174...

может ли это быть причиной проблемы?

приветствует Хоми

 

214783647 означает, что произошла ошибка!

homicida:
привет

Я протестировал его, ваш код работает хорошо.....

но это не решает проблему^^

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

Я искал значение в коде индикатора, там есть 3 буфера, и буфер, который держит 214783647 - это тренд, а не значение, которое хранится в нем.

например,

если буфер1 держит 214783647 значит тренд вверх, другие 2 буфера держат что-то вроде 174...

если в буфере2 хранится 214783647, значит тренд вниз, в других 2 буферах хранится что-то вроде 174...

может ли это вызвать проблему?

приветствует Хоми

Привет, Хоми,

Я думаю, что в вашем вызове iCustom есть ошибка.

В любом случае, вот код, который вызовет iCustom из LSMA, чтобы вернуть значение его 3 линий.

Примечание 1: Значения 3 линий одинаковы, потому что LSMA является цветным индикатором (если хотите узнать больше, спросите меня).

Примечание 2: 214783647 - это ошибка. Я включил в демонстрационный пример несколько строк кода, которые возвращают ту же ошибку, чтобы вам было понятнее.

//+------------------------------------------------------------------+

//| iCustom_Demo.mq4 |

//| Coders' Guru. |

//| https://www.forex-tsd.com |

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

#property indicator_chart_window

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//----

Alert("Line3 on LSMA is: " + iCustom(NULL,0,"LSMA in Color",14,1500,2,0));

Alert("Line1 on LSMA is: " + iCustom(NULL,0,"LSMA in Color",14,1500,0,0));

Alert("Line2 on LSMA is: " + iCustom(NULL,0,"LSMA in Color",14,1500,1,0));

//Some mis-typed iCustom calls which will return:

//Wrong LSMA parameter

Alert("This is an error " + iCustom(NULL,0,"LSMA in Color",0,1500,0,0));

//Wrong line number

Alert("This is an error " + iCustom(NULL,0,"LSMA in Color",14,1500,3,0));

//Wrong Bar number

Alert("This is an error " + iCustom(NULL,0,"LSMA in Color",14,1500,3,counted_bars));

//----

return(0);

}

//+------------------------------------------------------------------+
Файлы:
 

привет еще раз:D

Хорошо, я побежден индикатором lol:)

Я не могу заставить его работать так, как я хочу.

Вы говорите, что это цветовой индикатор, что это значит?

И самое главное, как я могу получить текущее состояние индикатора?

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

чего мне не хватает?

как мне преобразовать вывод в простую "зеленую" "красную" "желтую" строку?

приветствую

подчеркнуто гоми

 

Помогите мне, пожалуйста!

homicida:
Хорошо, я победил индикатор lol:)

Я не могу заставить его работать так, как я хочу.

Вы говорите, что это цветовой индикатор, что это значит?

и самое главное, как мне получить его текущее состояние?

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

чего мне не хватает?

как мне преобразовать вывод в простую "зеленую" "красную" "желтую" строку?

привет

напряжённый гоми

Привет, подчеркнутый Хоми

Вы попробовали демо и все еще получаете неправильные числа?

Не могли бы вы рассказать мне, какие алерты вы получили? Вот что я получил (2 минуты назад)

Файлы:
icustom.jpg  29 kb
 

выглядит точно так же, как и результаты, которые я получил.

но что это за значения?

приветствует Хоми

p.s

у кого-нибудь еще есть проблема с тем, что strategybuilder не обновляет графики?

 
homicida:
выглядит точно так же, как результаты, которые я получил.

но что это за значения?

приветствует Хоми

homi,

Строка 1 Предупреждение: это значение первого буфера или LSMA(ExtMapBuffer1)

Строка 2 Alert: это значение второго буфера или LSMA(ExtMapBuffer2)

Строка 3 Alert: является значением третьего буфера или LSMA(ExtMapBuffer3).

Затем я написал три вызова iCustoms с намеренно неправильными параметрами, чтобы показать вам, что может быть неправильным в вызове вашего iCustom'а.

Не могли бы вы рассказать мне, что именно вы хотите сделать? Возможно, я смогу помочь!

 

единственное, чего я хочу, это назвать его и вернуть текущий тренд.

Например, "1" - вверх, "2" - вниз и "3" - в сторону.

Вот что я пытаюсь сделать.

Потому что ваш код работает правильно.

Я знаю, что моя главная проблема в отсутствии знаний об индикаторе.

поэтому я не могу правильно интерпретировать значения возврата.

Но я не могу найти какую-то информацию по этому поводу.

приветствую, Хоми