Срабатывает Alert на каждом тике, как устранить?

 

Написал индикатор для определения Волн Вульфа. После функции start идет функция isNewBar исполняющая весь код при появлении нового бара (респект Rosh'у). После isNewBar вызываюся функции отвечающие за отрисовку индикатора и Alert. Так вот Alert появляется на каждом тике, а не при появлении нового бара. В чем ошибка и как ее устранить?
Для работы нужен DT_ZZ. Прикрепляю ниже.

Нормально вставить не получается, на 38%-ми процентах виснет и все, прям Фибоначчи какой-то
Вставляю так.
Код индикатора:
//+------------------------------------------------------------------+
//| Wolfewaves. mq4 |
//| Talex |
//| tan@gazinter.net |
//+------------------------------------------------------------------+
#property copyright "Talex"
#property link "tan@gazinter.net"

#property indicator_chart_window

extern int ExtDepth=12; // для расчера DT_ZZ
//extern int ExtDeviation=5;
//extern int ExtBackstep=3;
extern bool Real=true; // true - показывает реально формирующуюся WW, false - на истории.
extern bool WW5=True; // true -будет искать модели с образованными 5-ю точками, false - 4-мя.
extern double dopusk=0.1; // 10%-ное отклонение т.5 от линии 1-3(по размаху движения от т.4 до т.5)
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
for(int i=Bars-1;i>=0;i--)
{
ObjectDelete("Line_1-3_"+i);
ObjectDelete("Line_1-4_"+i);
ObjectDelete("Line_2-4_"+i);
ObjectDelete("1_"+i);
ObjectDelete("2_"+i);
ObjectDelete("3_"+i);
ObjectDelete("4_"+i);
ObjectDelete("5_"+i);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double Z1,Z2,Z3,Z4,Z5,Z6;
int shift1,shift2,shift3,shift4,shift5,shift6;

if(isNewBar())
{

if(Real==false)
{
for(shift6=Bars-1;shift6>=0;shift6--)
{
Z6=iCustom(NULL,0,"DT_ZZ",ExtDepth,0,shift6);

if(Z6 != 0)
{
Z1=Z2;Z2=Z3;Z3=Z4;Z4=Z5;Z5=Z6;shift1=shift2;shift2=shift3;shift3=shift4;shift4=shift5;shift5=shift6;
if( Z4<Z2 && Z4>Z1 && Z1>Z3 && Z5<Z3 && shift5>=shift3-(shift1-shift3))
WWUp(Z1,Z2,Z3,Z4,Z5,shift1,shift2,shift3,shift4,shift5);
if( Z4>Z2 && Z4<Z1 && Z1<Z3 && Z5>Z3 && shift5>=shift3-(shift1-shift3))
WWDown(Z1,Z2,Z3,Z4,Z5,shift1,shift2,shift3,shift4,shift5);
}}}
if(Real==true)
{
for(shift6=Bars-1;shift6>=0;shift6--)
{
Z6=iCustom(NULL,0,"DT_ZZ",ExtDepth,0,shift6);
if(Z6 != 0)
{
Z1=Z2;Z2=Z3;Z3=Z4;Z4=Z5;Z5=Z6;shift1=shift2;shift2=shift3;shift3=shift4;shift4=shift5;shift5=shift6;
}}
if( (Z4<Z2 && Z4>Z1 && Z1>Z3) || (Z5<Z3 && Z5>Z2 && Z2>Z4) )
WWRealUp(Z1,Z2,Z3,Z4,Z5,shift1,shift2,shift3,shift4,shift5);
if( (Z4>Z2 && Z4<Z1 && Z1<Z3) || (Z5>Z3 && Z5<Z2 && Z2<Z4) )
WWRealDown(Z1,Z2,Z3,Z4,Z5,shift1,shift2,shift3,shift4,shift5);
}
//----
}
return(0);
}
//+------------------------------------------------------------------+

/*---------------------------------------------------------------+
| Функция создания объектов для WW, у которой линия от точки 5 |
| до предполагаемой точки 6, направленна вверх (на истории) |
+---------------------------------------------------------------*/
void WWUp(double Z1,double Z2,double Z3,double Z4,double Z5,int shift1, int shift2, int shift3,int shift4,int shift5)
{


ObjectCreate("Line_1-3_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift1), Z1, iTime(NULL,0,shift3-(shift1-shift3)),Z3+(Z3-Z1));

double price_1_3=ObjectGetValueByShift("Line_1-3_"+shift5, shift5);

if (Z5<=price_1_3+(Z4-Z5)*dopusk && Z5>=price_1_3-(Z4-Z5)*dopusk)
{
ObjectCreate("Line_1-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift1), Z1, iTime(NULL,0,shift4-(shift1-shift4)),Z4+(Z4-Z1));
ObjectCreate("Line_2-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift4),Z4);
ObjectSet("Line_1-3_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-4_"+shift5,OBJPROP_COLOR,Red);
ObjectSet("Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,false);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,false);
ObjectSet("Line_2-4_"+shift5,OBJPROP_RAY,false);

if (iTime(NULL,0,shift4-(shift1-shift4))==0)
{
ObjectSet("Line_1-3_"+shift5,OBJPROP_TIME2,iTime(NULL,0, shift3));
ObjectSet("Line_1-3_"+shift5,OBJPROP_PRICE2,Z3);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_1-4_"+shift5,OBJPROP_TIME2,iTime(NULL,0, shift4));
ObjectSet("Line_1-4_"+shift5,OBJPROP_PRICE2,Z4);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,true);
}

ObjectCreate("1_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift1+2), Z1);
ObjectCreate("2_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift2+2), Z2);
ObjectCreate("3_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift3+2), Z3);
ObjectCreate("4_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift4+2), Z4);
ObjectCreate("5_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift5+2), Z5);
ObjectSetText("1_"+shift5,"1",9,"Times New Roman", Red);
ObjectSetText("2_"+shift5,"2",9,"Times New Roman", Red);
ObjectSetText("3_"+shift5,"3",9,"Times New Roman", Red);
ObjectSetText("4_"+shift5,"4",9,"Times New Roman", Red);
ObjectSetText("5_"+shift5,"5",9,"Times New Roman", Red);
}else ObjectDelete("Line_1-3_"+shift5);


}

/*---------------------------------------------------------------+
| Функция создания объектов для WW, у которой линия от точки 5 |
| до предполагаемой точки 6, направленна вниз (на истории) |
+---------------------------------------------------------------*/
void WWDown(double Z1,double Z2,double Z3,double Z4,double Z5, int shift1, int shift2,int shift3,int shift4,int shift5)
{

ObjectCreate("Line_1-3_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift1), Z1, iTime(NULL,0,shift3-(shift1-shift3)),Z3+(Z3-Z1));

double price_1_3=ObjectGetValueByShift("Line_1-3_"+shift5, shift5);

if (Z5<=price_1_3+(Z5-Z2)*dopusk && Z5>=price_1_3-(Z5-Z2)*dopusk)
{
ObjectCreate("Line_1-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift1), Z1, iTime(NULL,0,shift4-(shift1-shift4)),Z4-(Z1-Z4));
ObjectCreate("Line_2-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift4),Z4);
ObjectSet("Line_1-3_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-4_"+shift5,OBJPROP_COLOR,Red);
ObjectSet("Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("3_Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,false);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,false);
ObjectSet("Line_2-4_"+shift5,OBJPROP_RAY,false);
ObjectSet("3_Line_2-4_"+shift5,OBJPROP_RAY,false);

if (iTime(NULL,0,shift4-(shift1-shift4))==0)
{
ObjectSet("Line_1-3_"+shift5,OBJPROP_TIME2,iTime(NULL,0, shift3));
ObjectSet("Line_1-3_"+shift5,OBJPROP_PRICE2,Z3);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_1-4_"+shift5,OBJPROP_TIME2,iTime(NULL,0, shift4));
ObjectSet("Line_1-4_"+shift5,OBJPROP_PRICE2,Z4);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,true);
}

ObjectCreate("1_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift1+2), Z1);
ObjectCreate("2_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift2+2), Z2);
ObjectCreate("3_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift3+2), Z3);
ObjectCreate("4_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift4+2), Z4);
ObjectCreate("5_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift5+2), Z5);
ObjectSetText("1_"+shift5,"1",9,"Times New Roman", Red);
ObjectSetText("2_"+shift5,"2",9,"Times New Roman", Red);
ObjectSetText("3_"+shift5,"3",9,"Times New Roman", Red);
ObjectSetText("4_"+shift5,"4",9,"Times New Roman", Red);
ObjectSetText("5_"+shift5,"5",9,"Times New Roman", Red);
}else ObjectDelete("Line_1-3_"+shift5);


}

/*--------------------------------------------------------------+
|Функция возвращает true, если появиться новый бар, иначе false |
+--------------------------------------------------------------*/
bool isNewBar()
{
bool res=false;
int expBars=0;
if(expBars!=Bars)
{expBars=Bars;
res=true;
}
return(res);
}

/*---------------------------------------------------------------+
| Функция создания объектов для WW, у которой линия от точки 5 |
| до предполагаемой точки 6, направленна вверх (в реале) |
+---------------------------------------------------------------*/
void WWRealUp(double Z1,double Z2,double Z3,double Z4,double Z5,int shift1, int shift2,int shift3,int shift4,int shift5)
{
if(WW5)
{
if(Z4<Z2 && Z4>Z1 && Z1>Z3)
{
ObjectCreate("Line_1-3_"+shift5,OBJ_TREND,0,iTime(NULL,0,shift1),Z1,iTime(NULL, 0,shift3),Z3);
double price_1_3=ObjectGetValueByShift("Line_1-3_"+shift5,shift5);
if (Z5<=price_1_3+(Z4-Z5)*dopusk && Z5>=price_1_3-(Z4-Z5)*dopusk)
{// создание объектов по 5-ти точкам, т.5 последняя на зигзаге
ObjectCreate("Line_1-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift1), Z1, iTime(NULL,0,shift4),Z4);
ObjectCreate("Line_2-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift4),Z4);
ObjectSet("Line_1-3_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-4_"+shift5,OBJPROP_COLOR,Red);
ObjectSet("Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_2-4_"+shift5,OBJPROP_RAY,true);
ObjectCreate("1_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift1+2), Z1);
ObjectCreate("2_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift2+2), Z2);
ObjectCreate("3_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift3+2), Z3);
ObjectCreate("4_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift4+2), Z4);
ObjectCreate("5_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift5+2), Z5);
ObjectSetText("1_"+shift5,"1",9,"Times New Roman", Red);
ObjectSetText("2_"+shift5,"2",9,"Times New Roman", Red);
ObjectSetText("3_"+shift5,"3",9,"Times New Roman", Red);
ObjectSetText("4_"+shift5,"4",9,"Times New Roman", Red);
ObjectSetText("5_"+shift5,"5",9,"Times New Roman", Red);
//Alert(Symbol(),Period(),"- WWRealUp5");
}else ObjectDelete("Line_1-3_"+shift5);
}}else
if(Z5<Z3 && Z5>Z2 && Z2>Z4)
{ // создание объектов по 4-м точкам, т.4 последняя на зигзаге
ObjectCreate("Line_1-3_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift4),Z4);
ObjectCreate("Line_1-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift5),Z5);
ObjectCreate("Line_2-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift3), Z3, iTime(NULL,0,shift5),Z5);
ObjectSet("Line_1-3_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-4_"+shift5,OBJPROP_COLOR,Red);
ObjectSet("Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_2-4_"+shift5,OBJPROP_RAY,true);
ObjectCreate("1_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift2+2), Z2);
ObjectCreate("2_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift3+2), Z3);
ObjectCreate("3_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift4+2), Z4);
ObjectCreate("4_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift5+2), Z5);
ObjectSetText("1_"+shift5,"1",9,"Times New Roman", Red);
ObjectSetText("2_"+shift5,"2",9,"Times New Roman", Red);
ObjectSetText("3_"+shift5,"3",9,"Times New Roman", Red);
ObjectSetText("4_"+shift5,"4",9,"Times New Roman", Red);
// Alert(Symbol(),Period(),"- WWRealUp4");
}
}

/*---------------------------------------------------------------+
| Функция создания объектов для WW, у которой линия от точки 5 |
| до предполагаемой точки 6, направленна вниз (в реале) |
+---------------------------------------------------------------*/
void WWRealDown(double Z1,double Z2,double Z3,double Z4,double Z5, int shift1, int shift2,int shift3,int shift4,int shift5)
{
if(WW5)
{
if(Z4>Z2 && Z4<Z1 && Z1<Z3)
{
ObjectCreate("Line_1-3_"+shift5,OBJ_TREND,0,iTime(NULL,0,shift1),Z1,iTime(NULL, 0,shift3),Z3);
double price_1_3=ObjectGetValueByShift("Line_1-3_"+shift5,shift5);
if (Z5<=price_1_3+(Z4-Z5)*dopusk && Z5>=price_1_3-(Z4-Z5)*dopusk)
{// создание объектов по 5-ти точкам, т.5 последняя на зигзаге
ObjectCreate("Line_1-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift1), Z1, iTime(NULL,0,shift4),Z4);
ObjectCreate("Line_2-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift4),Z4);
ObjectSet("Line_1-3_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-4_"+shift5,OBJPROP_COLOR,Red);
ObjectSet("Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_2-4_"+shift5,OBJPROP_RAY,true);
ObjectCreate("1_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift1+2), Z1);
ObjectCreate("2_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift2+2), Z2);
ObjectCreate("3_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift3+2), Z3);
ObjectCreate("4_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift4+2), Z4);
ObjectCreate("5_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift5+2), Z5);
ObjectSetText("1_"+shift5,"1",9,"Times New Roman", Red);
ObjectSetText("2_"+shift5,"2",9,"Times New Roman", Red);
ObjectSetText("3_"+shift5,"3",9,"Times New Roman", Red);
ObjectSetText("4_"+shift5,"4",9,"Times New Roman", Red);
ObjectSetText("5_"+shift5,"5",9,"Times New Roman", Red);
// Alert(Symbol(),Period(),"- WWRealDown5");
}else ObjectDelete("Line_1-3_"+shift5);
}}else
if(Z5>Z3 && Z5<Z2 && Z2<Z4)
{ // создание объектов по 4-м точкам, т.4 последняя на зигзаге
ObjectCreate("Line_1-3_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift4),Z4);
ObjectCreate("Line_1-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift2), Z2, iTime(NULL,0,shift5),Z5);
ObjectCreate("Line_2-4_"+shift5,OBJ_TREND,0,iTime(NULL,0, shift3), Z3, iTime(NULL,0,shift5),Z5);
ObjectSet("Line_1-3_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-4_"+shift5,OBJPROP_COLOR,Red);
ObjectSet("Line_2-4_"+shift5,OBJPROP_COLOR,Blue);
ObjectSet("Line_1-3_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_1-4_"+shift5,OBJPROP_RAY,true);
ObjectSet("Line_2-4_"+shift5,OBJPROP_RAY,true);
ObjectCreate("1_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift2+2), Z2);
ObjectCreate("2_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift3+2), Z3);
ObjectCreate("3_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift4+2), Z4);
ObjectCreate("4_"+shift5,OBJ_TEXT,0,iTime(NULL,0,shift5+2), Z5);
ObjectSetText("1_"+shift5,"1",9,"Times New Roman", Red);
ObjectSetText("2_"+shift5,"2",9,"Times New Roman", Red);
ObjectSetText("3_"+shift5,"3",9,"Times New Roman", Red);
ObjectSetText("4_"+shift5,"4",9,"Times New Roman", Red);
// Alert(Symbol(),Period(),"- WWRealDown4");
}
}

Файлы:
dt_zz.mq4  4 kb
 
А где кусок с (isNewBar и) Alert, как и когда к нему обращаетесь? В DT_ZZ ведь их нет, так что скорее всего дело не в нем...
Я далеко не Rosh по опыту конечно, просто Alert использую часто.
 
Bookkeeper писал (а):
А где кусок с (isNewBar и) Alert, как и когда к нему обращаетесь? В DT_ZZ ведь их нет, так что скорее всего дело не в нем...
Я далеко не Rosh по опыту конечно, просто Alert использую часто.

Вставил См. выше.
 
Да уж :). Чтоб искать - в Ворд пришлось копировать...

 bool isNewBar()
 {
   bool res=false;
   int expBars=0;
   if(expBars!=Bars)
   {expBars=Bars;
   res=true;
   }
  return(res);
 }
А что Вы хотели от этой функции? При каждом обращении сюда if(expBars!=Bars) всегда прав :). Вы ведь навсегда ставите expBars=0 т.е !=Bars. Чтоб все работало, перенесите int expBars=0; вверх, сразу после екстернов, а из bool isNewBar()
уберите.

extern bool WW5=True; // true -будет искать модели с образованными 5-ю точками,false - 4-мя.
extern double dopusk=0.1; // 10%-ное отклонение т.5 от линии 1-3(по размаху движения от т.4 до т.5)
 
int expBars=0;
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
bool isNewBar()
 {
   bool res=false;
   if(expBars!=Bars)
   {expBars=Bars;
   res=true;
   }
  return(res);
 }

Это по быстрому, может еще где чего - но тогда уже к Rosh'у и прочим, кто разбирается получше.


Будет время и если заработает - поделитесь впечатлениями. Если не ошибаюсь, Вульф это из древности и акций? Я как-то смотрел, и мне показалось, что все как с Элиотом: на истории все видно и красиво, а как до здесь и сейчас, да еще и волны считать не подряд а с перескоком, так кто его знает...

 

Bookkeeper Спасибо. Я раз ...цать смотрел, видно глаз замылил.
Да все работает. С уважением.

P.S. Rosh эту функцию видел в какой-то Вашей статье. Исправьте, чтоб другие репу не чесали, как я.

 
Я был уверен, что эта функция у меня была написана праивльно, иначе давно уже кто-нибудь обратил на это внимание. К тому же перед тем как опубликовать код, я его обычно проверяю (хотя пара ляпов все же проскачила, согласен). Но в этой статье 17. Принцип работы советника все написано правильно, специально сейчас посмотрел.
 
Rosh:
Я был уверен, что эта функция у меня была написана праивльно, иначе давно уже кто-нибудь обратил на это внимание. К тому же перед тем как опубликовать код, я его обычно проверяю (хотя пара ляпов все же проскачила, согласен). Но в этой статье 17. Принцип работы советника все написано правильно, специально сейчас посмотрел.

Изучаю только язык, поэтому распечатываю Ваши статьи. Функцию брал из распечатки, сейчас посмотрел и действительно все нормально, УЖ ИЗВИНИТЕ меня. Видно сунул сам переменную не туда, а потом голову ломал, что не так. Еще раз прошу прощения и спасибо за статьи.
 
А кстати - теперь может кто мне растолкует: как работает иКустом? какое значение из него получаем (хоть в данном примере, хоть в ином). В ретурне старта стоит 0. Буферов 3. Как я понял - этот длинный Вульф ищет в DT_ZZ вершины зигзагов? как передаются значения именно буфера секций, а не других? И чтоб для тупого, если не трудно.
 
 SetIndexBuffer(0,BufferM1);
 SetIndexBuffer(1,BufferM2);
индикаторный буфер имеет номер например для вызова буфера 1 -

 IndDATA       = iCustom(NULL, 0,"NameInd",1,0);
 
Спасибо. Теперь понял.
Причина обращения: