Как из советника узнать направление

 

Подскажите пожалуйста, как можно запросить состояния буфера индикатора на предыдущем баре из советника? если он заполняет буфер так:

if (sigCurrent==1 && sigPrevious==2)
  {
  ExtMapBuffer4[i-1] = High[i-1]-5*Point;
  //ExtMapBuffer3[i] = Ask;
  entry=true;
  entry_point=Ask;
  } 
  else if (sigCurrent==2 && sigPrevious==1)
  {
  ExtMapBuffer3[i-1] = Low[i-1]-5*Point;
  //ExtMapBuffer4[i] = Bid;
  entry=true;
  entry_point=Bid;
   
  }
Советнику нужно совпадение условий, гдето таких:

  double Up;
  double Down;
  int res;

  Up=iCustom(NULL, 0,"sidus_v.2", 3, 1);
  Down=iCustom(NULL,0,"sidus_v.2",2,1);
//---- sell conditions
  if(Down==Low)  
  {
  res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,Red);
  return;
  }
//---- buy conditions
  if(Up==High)  
  {
  res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Blue);
  return;
  }

Но это неверно!!

Подскажите плиз как поступить в таком случае...

 
sergeev >>:

iCustom(NULL, 0,"sidus_v.2", 3, 1);

попробуйте iCustom(Symbol(), 0,"sidus_v.2", 3, 1);

Та я уже как хочеш пробовал. В принцыпе это у меня одно и тоже.

Главный вопрос в том: какие данные из буфера запросить на проверку???

 
skylord писал(а) >>

Та я уже как хочеш пробовал. В принцыпе это у меня одно и тоже.

Главный вопрос в том: какие данные из буфера запросить на проверку???

Сам индикатор выложи. Может и помощь тогда будет. А то можно долго с самим собой беседовать. Хотя я понимаю что приятно с умным человеком поговорить.

 
Vinin >>:

Сам индикатор выложи. Может и помощь тогда будет. А то можно долго с самим собой беседовать. Хотя я понимаю что приятно с умным человеком поговорить.

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

Вот индикатор:

Файлы:
 

У тебя в этом индикаторе 4 (четыре)!!! внешних параметра, а ты только один вставляешь. Непорядочек.

И вообще, тебе бы лучше использовать стандартные машки, а вычисление перенести в советник.

 
Roger >>:

У тебя в этом индикаторе 4 (четыре)!!! внешних параметра, а ты только один вставляешь. Непорядочек.

И вообще, тебе бы лучше использовать стандартные машки, а вычисление перенести в советник.

Не совсем понял провнешние параметры! Вы про extern ??

 
double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
Расчет указанного пользовательского индикатора. Пользовательский индикатор должен быть скомпилирован (файл с расширением EX4) и находиться в директории каталог_терминала\experts\indicators.
Параметры:
symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
name - Имя пользовательского индикатора.
... - Список параметров (при необходимости). Передаваемые параметры должны соответствовать порядку объявления и типу внешних (extern) переменных пользовательского индикатора.
mode - Индекс линии индикатора. Может быть от 0 до 7 и должен соответствовать индексу, используемому одной из функций SetIndexBuffer.
shift -

Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Передаваемые параметры должны соответствовать порядку объявления и типу внешних (extern) переменных пользовательского индикатора.

 
Но есть в этом индикаторе еще один побочный ефект. Иногда, при выполнении условий, он сигнал подает а стрелки не рисует. Но когда я его кидаю наново на график все стрелки стают на свое место. Может както можна сделать чтоби он толи "компилился" на графике наново, или обновлял наново свои бефера???
 
Roger писал(а) >>
double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
Расчет указанного пользовательского индикатора. Пользовательский индикатор должен быть скомпилирован (файл с расширением EX4) и находиться в директории каталог_терминала\experts\indicators.
Параметры:
symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
name - Имя пользовательского индикатора.
... - Список параметров (при необходимости). Передаваемые параметры должны соответствовать порядку объявления и типу внешних (extern) переменных пользовательского индикатора.
mode - Индекс линии индикатора. Может быть от 0 до 7 и должен соответствовать индексу, используемому одной из функций SetIndexBuffer.
shift -

Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Передаваемые параметры должны соответствовать порядку объявления и типу внешних (extern) переменных пользовательского индикатора.

У него нет в iCustom передаваемых параметров-iCustom(NULL, 0,"sidus_v.2", 3, 1)значит они будут просто по умолчанию.

 
Roger писал(а) >>

У тебя в этом индикаторе 4 (четыре)!!! внешних параметра, а ты только один вставляешь. Непорядочек.

И вообще, тебе бы лучше использовать стандартные машки, а вычисление перенести в советник.

Он там ни одного внешнего параметра вобще не использует. Или я вас тоже не так поняла.

 
vtoroe_dyxanie писал(а) >>

У него нет в iCustom передаваемых параметров-iCustom(NULL, 0,"sidus_v.2", 3, 1)значит они будут просто по умолчанию.

А почему бы ему (оператору iCustom) не подумать, что 3 и 1 - это параметры, а не номер линии и номер бара?

Если в индикаторе есть внешние параметры, они должны быть перечислены в операторе.