Как обратиться к значениям Alligator?

 
Тоесть, нужны значения Jaws, Teeth, Lips...
 
В справке:

double iAlligator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period, int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price, int mode, int shift)
Расчет индикатора Alligator.
Параметры:
symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
jaw_period - Период усреднения синей линии (челюсти аллигатора).
jaw_shift - Смещение синей линии относительно графика цены.
teeth_period - Период усреднения красной линии (зубов аллигатора).
teeth_shift - Смещение красной линии относительно графика цены.
lips_period - Период усреднения зеленой линии (губ аллигатора).
lips_shift - Смещение зеленой линии относительно графика цены.
ma_method - Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average).
applied_price - Используемая цена. Может быть любой из ценовых констант.
mode - Источник данных, идентификатор одной из линий индикатора. Mожет быть любой из следующих величин:
MODE_GATORJAW - синяя линия (линия челюсти аллигатора),
MODE_GATORTEETH - красная линия (линия зубов аллигатора),
MODE_GATORLIPS - зеленая линия (линия губ аллигатора).
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
Пример:
  double jaw_val=iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, 1);
 
Rosh:
В справке:

double iAlligator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period, int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price, int mode, int shift)
....


Rosh - тоесть, если мне надо узнать разницу между Jaws и Lips на данный момент, как это будет выглядеть в коде...

Спасибо за терпение и помощь
Чайник я, одним словом, пытаюсь разобраться...
 
Хорошо, а как вот обратиться к своему индикатору, не к стандартному... Ну например к своему "Фракталу"
 
 double jaw_val=iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, 0);
double lips_val=iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS, 0);
double raznitsa=jaw_val-lips_val;
 

Rosh - Спасибо, теперь понял...

А как насчет второго вороса, если не в тягость..

Как обратиться к своему индикатору, не к стандартному... Ну например к своему "Фракталу" , имя его например "Vasya-Fractals"

Зараннее благодарен...

 
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 - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
Пример:
  double val=iCustom(NULL, 0, "SampleInd",13,1,0);
 

komposter - сенкс, я всегда говорил, мир не без добрых людей...

 
Вопросик
у меня есть индикатор 3d oscilator

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

как я понимаю когда пишется icustom то вызывается целиком индикатор ,мне же нужно что бы вызывалась 1 линия из инидкатора

//+------------------------------------------------------------------+
//|                                                 3D Oscilator.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Author - Luis Damiani. Ramdass - Conversion only"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Red
//---- input parameters
 
extern int D1RSIPer=13;
extern int D2StochPer=8;
extern int D3tunnelPer=8;
extern double hot=0.4;
extern int sigsmooth=4;
 
 
//---- buffers
double sig1n[];
double sig2n[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(0,sig1n);
   SetIndexBuffer(1,sig2n);
//----
   SetIndexDrawBegin(0,D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth);
   SetIndexDrawBegin(1,D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| CCI_Woodies                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,i2,counted_bars=IndicatorCounted();
   double rsi,maxrsi,minrsi,storsi,E3D,
   sig1,sig2,sk,ss,sk2;
   double cs;
   bool init=true;
//----
   cs= D1RSIPer+D2StochPer+D3tunnelPer+hot+sigsmooth;
   if(Bars<=cs) return(0);
 
//if (init)
//{
ss=sigsmooth;
if (ss<2) ss=2;
sk = 2 / (ss + 1);
sk2=2/(ss*0.8+1);
init=false;
//};
 
 
//---- initial zero
   if(counted_bars<1)
   {
      for(i=1;i<=cs;i++) sig1n[Bars-i]=0.0;
      for(i=1;i<=cs;i++) sig2n[Bars-i]=0.0;
   }
//----
   i=Bars-cs-1;
   
   
   
   if(counted_bars>=cs) i=Bars-counted_bars-1;
   while(i>=0)
     {
      
      rsi=iRSI(NULL,0,D1RSIPer,PRICE_CLOSE,i);
maxrsi=rsi;
minrsi=rsi;
 
for (i2=i+D2StochPer;i2>=i; i2--)
{
rsi=iRSI(NULL,0,D1RSIPer,PRICE_CLOSE,i2);
if (rsi>maxrsi) maxrsi=rsi;
if (rsi<minrsi) minrsi=rsi;
//maxrsi=Maximum(rsi,maxrsi);
//minrsi=min(rsi,minrsi);
}
 
storsi=((rsi-minrsi)/(maxrsi-minrsi)*200-100);
E3D=hot*iCCI(NULL,0,D3tunnelPer,PRICE_TYPICAL,i)+(1-hot)*storsi;
sig1n[i]=sk*E3D+(1-sk)*sig1;
sig2n[i]=sk2*sig1+(1-sk2)*sig2;
sig1=sig1n[i];
sig2=sig2n[i];
 
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
 
При первом вызове любого поьзовательского индикатора происходит расчет всех индикаторных массивов (линий). То есть, если сначала был вызов iCustom(NULL,0,"Имя_индикатора"...,0,1), то следующий вызов iCustom(NULL,0,"Имя_индикатора"...,1,1) или iCustom(NULL,0,"Имя_индикатора"...,0,4) использует уже рассчитанные значения для всех индексов и линий. Повтороного лишнего расчета не происходит. Считается все и за один раз.
Причина обращения: