Индикаторы: TREND_alexcud - страница 8

 
PbI6A-KuJIbKA писал(а):
Заметил я, что индикатор частенько запаздывает с сигналом, т.
е. подает сигнал на открытие тогда, когда движение уже прошло,
из-за чего зачастую позиция открывается на самом пике перед
началом обратного движения :(

Ну где вы видели чтобы индикаторы не запаздывали, если не будет запаздывать, то будет давать 90% ложных сигналов.
Этот индикатор нужен на графике только для подтверждения входа по другой какой нибудь тактике, а вы прям хотите чтоб и не запаздывал и песни пел и танцевал.
Нет такого индикатора и небудет.
Он вам показывает в % соотношении куда сейчас смотрят МАшки, но это не значит что цена туда сейчас пойдёт, цена не превязана к индикатору она живёт другой жизнью.
Если его и применять то на более трендовых парах и настраивать его не менее чем на H1,Н4,D1
P.S Автору спасибо.
 
alex-com писал(а):
PbI6A-KuJIbKA писал(а):
Заметил я, что индикатор частенько запаздывает с сигналом, т.
е. подает сигнал на открытие тогда, когда движение уже прошло,
из-за чего зачастую позиция открывается на самом пике перед
началом обратного движения :(

Ну где вы видели чтобы индикаторы не запаздывали, если не будет запаздывать, то будет давать 90% ложных сигналов.
Этот индикатор нужен на графике только для подтверждения входа по другой какой нибудь тактике, а вы прям хотите чтоб и не запаздывал и песни пел и танцевал.
Нет такого индикатора и небудет.
Он вам показывает в % соотношении куда сейчас смотрят МАшки, но это не значит что цена туда сейчас пойдёт, цена не превязана к индикатору она живёт другой жизнью.
Если его и применять то на более трендовых парах и настраивать его не менее чем на H1,Н4,D1
P.S Автору спасибо.


Все верно. Весь вопрос в том, насколько он запаздывает. Ведь, согласитесь, чрезмерно консервативный индикатор будет давать подтвержение на вход тогда, когда в этом уже нет необходимости, момент упущен. А насчет "песни пел и танцевал" - это ваши слова,  и непонятно, вообще к чему это было сказано.
 
А насчет "песни пел и танцевал" - это ваши слова, и непонятно, вообще к чему это было сказано.
Сказано не вам конкретно, почитал посты здесь, и понял что многие хотят от индикатора чегото такого....., долбят автора чтоб звуковой сигнал сделал, чтоб индикатор сообщал о прекрытии позы, жалуются что мол индикатор показал что сигнал хороший а рынок повернулся. Может нужно ещё чтобы индикатор советывал каким % от депозита входить в рынок.
С таким подходом слив депозита обезпечен, на индикаторах нельзя зацыкливатся, на форумах часто встречаю людей которые уже и тренда невидят без индикатора.
Я поначалу тоже индикаторами страдал, ипонял что толку от них очень мало.
Удачи и профитов....
 
GreyCardinal:

Небольшие точки над Ё -чтобы разделить вопросы и не лепить их в одну кучку ;)

есть авторский индикатор - вопросы к автору

есть мои добавления -об них поподробнее что сделано и к чему. Сделаны по просьбе коментаторов с добавлением.

1-алерт звуковой на все сигналы

2 - сообщение на закрытие сделки -выскакивает когда есть ОТКРЫТАЯ сделка, и идет ЛЮБОЙ сигнал в ПРОТИВОПОЛОЖНУЮ сторону. Принцип простой -не пропустить уход рынка против сделки и закрыть позицию пусть с минимальным, но полюсом. Конечное решение конечно принимает человек ;)

3 - добавлены стрелки на окно с ценами -чтобы видеть когда именно он подавал сигналы -стрелка вкось -"неплохо", стрелка вертикально -"идеально". не пишу текстом- так как будет много всего -не увидишь за деревьями леса...

... Можно еще писать в лог -тогда будет еще нагляднее с точки зрения цифер...

будет напримиер

время... "неплохой сигнал на покупку -цена ...

время...."идеальный вариант на продажу ....цена...

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

Потестил неделю..., требует доработки однако... стрелки не наблюдаю. .. сигнал задолбал, особенно в вылетающем окне надо его ограничить- однако одого раза достаточно, да и воспроизводить разные сигналы. .., а на продажу один, на покупку другой... супер ежели в свойствах индюка предусмотреть функцию отключения сигнала ... Все Вам спасибо скажут однако!

 
Не верю!!!!!...... Используемые внутри индикаторы практически всегда запаздывают и дают сигнал в противофазе относительно начала движения. Можно срезать бабло, только если очень затяжной тренд.
 
У меня тоже нет ни звука ни стрелок

А я вот никаких стрелок не вижу, сигнал идёт. Может кто-нибудь подскажет?

 

Не за что ))

Сделал, что бы индикатор передавал сигналы в эксперт.

выложу в двух частях, так как в одной не влезло.

Обновленный Индикатор:

//+------------------------------------------------------------------+
//|                                            TREND_alexcud v_2.mq4 |
//|                             Copyright © 2007, Aleksander Kudimov |
//|                                               alexcud@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Aleksander Kudimov"
#property link      "alexcud@rambler.ru"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 1
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- buffers
double UP_1Buffer[];
double UP_2Buffer[];
double UP_3Buffer[];
double DOWN_1Buffer[];
double DOWN_2Buffer[];
double DOWN_3Buffer[];
extern int TF1 = 60;
extern int TF2 = 240;
extern int TF3 = 1440;
extern int maTrendPeriodv_1 = 5;
extern int maTrendPeriodv_2 = 8;
extern int maTrendPeriodv_3 = 13;
extern int maTrendPeriodv_4 = 21;
extern int maTrendPeriodv_5 = 34;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
double MaH11v,  MaH41v, MaD11v, MaH1pr1v, MaH4pr1v, MaD1pr1v;
double MaH12v,  MaH42v, MaD12v, MaH1pr2v, MaH4pr2v, MaD1pr2v;
double MaH13v,  MaH43v, MaD13v, MaH1pr3v, MaH4pr3v, MaD1pr3v;
double MaH14v,  MaH44v, MaD14v, MaH1pr4v, MaH4pr4v, MaD1pr4v;
double MaH15v,  MaH45v, MaD15v, MaH1pr5v, MaH4pr5v, MaD1pr5v;
 string H11v, H41v, D11v;
 string H12v, H42v, D12v;
 string H13v, H43v, D13v;
 string H14v, H44v, D14v;
 string H15v, H45v, D15v;
 color co11v , co41v , co61v;
 color co12v , co42v , co62v;
 color co13v , co43v , co63v;
 color co14v , co44v , co64v;
 color co15v , co45v , co65v;
 
double u1x5v, u1x8v, u1x13v, u1x21v, u1x34v;
double u2x5v, u2x8v, u2x13v, u2x21v, u2x34v;
double u3x5v, u3x8v, u3x13v, u3x21v, u3x34v;
double u1acv, u2acv, u3acv;
double d1x5v, d1x8v, d1x13v, d1x21v, d1x34v;
double d2x5v, d2x8v, d2x13v, d2x21v, d2x34v;
double d3x5v, d3x8v, d3x13v, d3x21v, d3x34v;
double d1acv, d2acv, d3acv;
 string short_name="TREND_alexcud v_2";   
int init()
  {
//---- name for indicator window
   string short_name="TREND_alexcud v_2";
   IndicatorShortName(short_name);
   SetIndexBuffer(0,UP_1Buffer);
   SetIndexBuffer(2,UP_2Buffer);
   SetIndexBuffer(4,UP_3Buffer);
   SetIndexBuffer(1,DOWN_1Buffer);
   SetIndexBuffer(3,DOWN_2Buffer);
   SetIndexBuffer(5,DOWN_3Buffer);
   
//----
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   ObjectCreate("MAv", OBJ_LABEL, WindowFind(short_name), 0, 0);
   ObjectSetText("MAv", "Moving Average",9, "Verdana", Lime );
   ObjectSet("MAv", OBJPROP_XDISTANCE, 75);  
   ObjectSet("MAv", OBJPROP_YDISTANCE, 0);
    
   ObjectCreate("label_object1v", OBJ_LABEL, WindowFind(short_name), 0, 0);
   ObjectSet("label_object1v", OBJPROP_XDISTANCE, 5);  
   ObjectSet("label_object1v", OBJPROP_YDISTANCE, 15);
   
   ObjectCreate("label_object2v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("label_object2v", OBJPROP_XDISTANCE, 5);  
   ObjectSet("label_object2v", OBJPROP_YDISTANCE, 35);
   
   ObjectCreate("label_object3v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("label_object3v", OBJPROP_XDISTANCE, 5);  
   ObjectSet("label_object3v", OBJPROP_YDISTANCE, 55);
 // ----------------------------------------------------------------------------
   ObjectCreate("H11v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H11v", OBJPROP_XDISTANCE, 40);  
   ObjectSet("H11v", OBJPROP_YDISTANCE, 15);
   
   ObjectCreate("H12v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H12v", OBJPROP_XDISTANCE, 70);  
   ObjectSet("H12v", OBJPROP_YDISTANCE, 15);
   
   ObjectCreate("H13v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H13v", OBJPROP_XDISTANCE, 100);  
   ObjectSet("H13v", OBJPROP_YDISTANCE, 15); 
   
   ObjectCreate("H14v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H14v", OBJPROP_XDISTANCE, 130);  
   ObjectSet("H14v", OBJPROP_YDISTANCE, 15); 
   
   ObjectCreate("H15v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H15v", OBJPROP_XDISTANCE, 160);  
   ObjectSet("H15v", OBJPROP_YDISTANCE, 15);    
  //--------------------------------------------------------------------------- 
   ObjectCreate("H41v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H41v", OBJPROP_XDISTANCE, 40);  
   ObjectSet("H41v", OBJPROP_YDISTANCE, 35);
   
   ObjectCreate("H42v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H42v", OBJPROP_XDISTANCE, 70);  
   ObjectSet("H42v", OBJPROP_YDISTANCE, 35);
   
   ObjectCreate("H43v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H43v", OBJPROP_XDISTANCE, 100);  
   ObjectSet("H43v", OBJPROP_YDISTANCE, 35); 
  
   ObjectCreate("H44v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H44v", OBJPROP_XDISTANCE, 130);  
   ObjectSet("H44v", OBJPROP_YDISTANCE, 35);
   
   ObjectCreate("H45v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("H45v", OBJPROP_XDISTANCE, 160);  
   ObjectSet("H45v", OBJPROP_YDISTANCE, 35);
  //--------------------------------------------------------------------------- 
   ObjectCreate("D11v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("D11v", OBJPROP_XDISTANCE, 40);  
   ObjectSet("D11v", OBJPROP_YDISTANCE, 55);
   
   ObjectCreate("D12v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("D12v", OBJPROP_XDISTANCE, 70);  
   ObjectSet("D12v", OBJPROP_YDISTANCE, 55);
   
   ObjectCreate("D13v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("D13v", OBJPROP_XDISTANCE, 100);  
   ObjectSet("D13v", OBJPROP_YDISTANCE, 55);  
   
   ObjectCreate("D14v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("D14v", OBJPROP_XDISTANCE, 130);  
   ObjectSet("D14v", OBJPROP_YDISTANCE, 55);
   
   ObjectCreate("D15v", OBJ_LABEL, WindowFind(short_name), 0, 0); 
   ObjectSet("D15v", OBJPROP_XDISTANCE, 160);  
   ObjectSet("D15v", OBJPROP_YDISTANCE, 55); 
     
     MaH11v=iMA(NULL,TF1,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,0);    MaH1pr1v=iMA(NULL,TF1,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,1);
     MaH12v=iMA(NULL,TF1,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,0);    MaH1pr2v=iMA(NULL,TF1,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,1);
     MaH13v=iMA(NULL,TF1,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,0);   MaH1pr3v=iMA(NULL,TF1,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,1);
     MaH14v=iMA(NULL,TF1,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,0);   MaH1pr4v=iMA(NULL,TF1,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,1);
     MaH15v=iMA(NULL,TF1,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,0);   MaH1pr5v=iMA(NULL,TF1,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,1);
    
     MaH41v=iMA(NULL,TF2,maTrendPeriodv_1 ,0,MODE_SMA,PRICE_CLOSE,0);   MaH4pr1v=iMA(NULL,TF2,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,1);
     MaH42v=iMA(NULL,TF2,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,0);    MaH4pr2v=iMA(NULL,TF2,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,1);
     MaH43v=iMA(NULL,TF2,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,0);   MaH4pr3v=iMA(NULL,TF2,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,1);
     MaH44v=iMA(NULL,TF2,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,0);   MaH4pr4v=iMA(NULL,TF2,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,1);
     MaH45v=iMA(NULL,TF2,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,0);   MaH4pr5v=iMA(NULL,TF2,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,1);
     
     MaD11v=iMA(NULL,TF3,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,0);    MaD1pr1v=iMA(NULL,TF3,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,1);
     MaD12v=iMA(NULL,TF3,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,0);    MaD1pr2v=iMA(NULL,TF3,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,1);
     MaD13v=iMA(NULL,TF3,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,0);   MaD1pr3v=iMA(NULL,TF3,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,1);
     MaD14v=iMA(NULL,TF3,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,0);   MaD1pr4v=iMA(NULL,TF3,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,1);
     MaD15v=iMA(NULL,TF3,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,0);   MaD1pr5v=iMA(NULL,TF3,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,1);
     
   //  MaH4=iMA(NULL,PERIOD_M30,34,0,MODE_SMA,PRICE_CLOSE,0);
     if (MaH11v < MaH1pr1v){H11v = " V ";   co11v = Red;   u1x5v = 0; d1x5v = 1;}
     if (MaH11v > MaH1pr1v){H11v = " /\\ "; co11v = Blue;  u1x5v = 1; d1x5v = 0;} 
     if (MaH11v == MaH1pr1v){H11v = " 0 "; co11v = Green;  u1x5v = 0; d1x5v = 0;}           
     if (MaH41v < MaH4pr1v){H41v = " V "; co41v = Red;     u2x5v = 0; d2x5v = 1;}            
     if (MaH41v > MaH4pr1v){H41v = " /\\ "; co41v = Blue;  u2x5v = 1; d2x5v = 0;}
     if (MaH41v == MaH4pr1v){H41v = " 0 "; co41v = Green;  u2x5v = 0; d2x5v = 0;}            
     if (MaD11v < MaD1pr1v){D11v = " V "; co61v = Red;     u3x5v = 0; d3x5v = 1;}            
     if (MaD11v > MaD1pr1v){D11v = " /\\ "; co61v = Blue;  u3x5v = 1; d3x5v = 0;}
     if (MaD11v == MaD1pr1v){D11v = " 0 "; co61v = Green;  u3x5v = 0; d3x5v = 0;}  
     
     if (MaH12v < MaH1pr2v){H12v = " V "; co12v = Red;     u1x8v = 0; d1x8v = 1;}
     if (MaH12v > MaH1pr2v){H12v = " /\\ "; co12v = Blue;  u1x8v = 1; d1x8v = 0;}
     if (MaH12v == MaH1pr2v){H12v = " 0 "; co12v = Green;  u1x8v = 0; d1x8v = 0;}            
     if (MaH42v < MaH4pr2v){H42v = " V "; co42v = Red;     u2x8v = 0; d2x8v = 1;}            
     if (MaH42v > MaH4pr2v){H42v = " /\\ "; co42v = Blue;   u2x8v = 1; d2x8v = 0;} 
     if (MaH42v == MaH4pr2v){H42v = " 0 "; co42v = Green;   u2x8v = 0; d2x8v = 0;}           
     if (MaD12v < MaD1pr2v){D12v = " V "; co62v = Red;      u3x8v = 0; d3x8v = 1;}             
     if (MaD12v > MaD1pr2v){D12v = " /\\ "; co62v = Blue;   u3x8v = 1; d3x8v = 0;}
     if (MaD12v == MaD1pr2v){D12v = " 0 "; co62v = Green;   u3x8v = 0; d3x8v = 0;} 
     
     if (MaH13v < MaH1pr3v){H13v = " V "; co13v = Red;    u1x13v = 0; d1x13v = 1;}
     if (MaH13v > MaH1pr3v){H13v = " /\\ "; co13v = Blue; u1x13v = 1; d1x13v = 0;}
     if (MaH13v ==MaH1pr3v){H13v = " 0 "; co13v = Green;  u1x13v = 0; d1x13v = 0;}              
     if (MaH43v < MaH4pr3v){H43v = " V "; co43v = Red; u2x13v = 0; d2x13v = 1;}            
     if (MaH43v > MaH4pr3v){H43v = " /\\ "; co43v = Blue; u2x13v = 1; d2x13v = 0;}
     if (MaH43v ==MaH4pr3v){H43v = " 0 "; co43v = Green;  u2x13v = 0; d2x13v = 0;}            
     if (MaD13v < MaD1pr3v){D13v = " V "; co63v = Red; u3x13v = 0; d3x13v = 1;}            
     if (MaD13v > MaD1pr3v){D13v = " /\\ "; co63v = Blue; u3x13v = 1; d3x13v = 0;}
     if (MaD13v ==MaD1pr3v){D13v = " 0 "; co63v = Green;  u3x13v = 0; d3x13v = 0;}
     
     if (MaH14v < MaH1pr4v){H14v = " V "; co14v = Red;    u1x21v = 0; d1x21v = 1;}
     if (MaH14v > MaH1pr4v){H14v = " /\\ "; co14v = Blue; u1x21v = 1; d1x21v = 0;}
     if (MaH14v == MaH1pr4v){H14v = " 0 "; co14v = Green; u1x21v = 0; d1x21v = 0;}              
     if (MaH44v < MaH4pr4v){H44v = " V "; co44v = Red; u2x21v = 0; d2x21v = 1;}            
     if (MaH44v > MaH4pr4v){H44v = " /\\ "; co44v = Blue; u2x21v = 1; d2x21v = 0;}
     if (MaH44v == MaH4pr4v){H44v = " 0 "; co44v = Green; u2x21v = 0; d2x21v = 0;}            
     if (MaD14v < MaD1pr4v){D14v = " V "; co64v = Red; u3x21v = 0; d3x21v = 1;}            
     if (MaD14v > MaD1pr4v){D14v = " /\\ "; co64v = Blue; u3x21v = 1; d3x21v = 0;} 
     if (MaD14v == MaD1pr4v){D14v = " 0 "; co64v = Green; u3x21v = 0; d3x21v = 0;}  
     
     if (MaH15v < MaH1pr5v){H15v = " V "; co15v = Red;    u1x34v = 0; d1x34v = 1;}
     if (MaH15v > MaH1pr5v){H15v = " /\\ "; co15v = Blue; u1x34v = 1; d1x34v = 0;} 
     if (MaH15v == MaH1pr5v){H15v = " 0 "; co15v = Green; u1x34v = 0; d1x34v = 0;}             
     if (MaH45v < MaH4pr5v){H45v = " V "; co45v = Red;    u2x34v = 0; d2x34v = 1;}            
     if (MaH45v > MaH4pr5v){H45v = " /\\ "; co45v = Blue; u2x34v = 1; d2x34v = 0;}
     if (MaH45v == MaH4pr5v){H45v = " 0 "; co45v = Green; u2x34v = 0; d2x34v = 0;}            
     if (MaD15v < MaD1pr5v){D15v = " V "; co65v = Red;    u3x34v = 0; d3x34v = 1;}            
     if (MaD15v > MaD1pr5v){D15v = " /\\ "; co65v = Blue; u3x34v = 1; d3x34v = 0;}
     if (MaD15v == MaD1pr5v){D15v = " 0 "; co65v = Green; u3x34v = 0; d3x34v = 0;}                      
             
    // Comment(";JGF:");
     //        "\n", "H4 - ", H41 , 
     //        "\n", "D1 - ", D11   );   
            
             ObjectSetText("label_object1v", "TF1 - ",11, "Verdana", Lime );
             ObjectSetText("label_object2v", "TF2 - ",11, "Verdana", Lime );
             ObjectSetText("label_object3v", "TF3 - ",11, "Verdana", Lime );
             
             ObjectSetText("H11v", H11v ,11, "Verdana", co11v );
             ObjectSetText("H12v", H12v ,11, "Verdana", co12v );
             ObjectSetText("H13v", H13v ,11, "Verdana", co13v );
             ObjectSetText("H14v", H14v ,11, "Verdana", co14v );
             ObjectSetText("H15v", H15v ,11, "Verdana", co15v );
             
             ObjectSetText("H41v", H41v ,11, "Verdana", co41v );
             ObjectSetText("H42v", H42v ,11, "Verdana", co42v );
             ObjectSetText("H43v", H43v ,11, "Verdana", co43v );
             ObjectSetText("H44v", H44v ,11, "Verdana", co44v );
             ObjectSetText("H45v", H45v ,11, "Verdana", co45v );
             
             ObjectSetText("D11v", D11v ,11, "Verdana", co61v );
             ObjectSetText("D12v", D12v ,11, "Verdana", co62v );
             ObjectSetText("D13v", D13v ,11, "Verdana", co63v );
             ObjectSetText("D14v", D14v ,11, "Verdana", co64v );
             ObjectSetText("D15v", D15v ,11, "Verdana", co65v ); 
             
//----------------------------------------------------------------------------
// AC Bil Vil
ObjectCreate("ACv", OBJ_LABEL, WindowFind(short_name), 0, 0);
ObjectSetText("ACv", "AC",9, "Verdana", Lime );
ObjectSet("ACv", OBJPROP_XDISTANCE, 200);  
ObjectSet("ACv", OBJPROP_YDISTANCE, 0);
double  acv  = iAC(NULL, TF1, 0);
double  ac1v = iAC(NULL, TF1, 1);
double  ac2v = iAC(NULL, TF1, 2);
double  ac3v = iAC(NULL, TF1, 3);
//double  ac4 = iAO(NULL, 0, 4);             
string ach11v;
color acco11v;
if ((ac1v>ac2v && ac2v>ac3v && acv<0 && acv>ac1v) || (acv>ac1v && ac1v>ac2v && acv>0)) 
{ach11v = "/\\ " ; acco11v = Blue; u1acv = 3; d1acv = 0;} 
if ((ac1v<ac2v && ac2v<ac3v && acv>0 && acv<ac1v) || (acv<ac1v && ac1v<ac2v && acv<0)) 
{ach11v = "V " ; acco11v = Red; u1acv = 0; d1acv = 3;}
if ((((ac1v<ac2v || ac2v<ac3v) && acv<0 && acv>ac1v) || (acv>ac1v && ac1v<ac2v && acv>0))||
(((ac1v>ac2v || ac2v>ac3v) && acv>0 && acv<ac1v) || (acv<ac1v && ac1v>ac2v && acv<0)))
{ach11v = "0 " ; acco11v = Green; u1acv = 0; d1acv = 0;}    
ObjectCreate("AC11v", OBJ_LABEL, WindowFind(short_name), 0, 0);
ObjectSetText("AC11v", ach11v,11, "Verdana", acco11v );
ObjectSet("AC11v", OBJPROP_XDISTANCE, 200);  
ObjectSet("AC11v", OBJPROP_YDISTANCE, 15);  
  
double  ac03v  = iAC(NULL, TF3, 0);
double  ac13v = iAC(NULL, TF3, 1);
double  ac23v = iAC(NULL, TF3, 2);
double  ac33v = iAC(NULL, TF3, 3);
//double  ac4 = iAO(NULL, 0, 4);             
string ach13v;
color acco13v;
if ((ac13v>ac23v && ac23v>ac33v && ac03v<0 && ac03v>ac13v) || (ac03v>ac13v && ac13v>ac23v && ac03v>0)) 
{ach13v = "/\\ " ; acco13v = Blue; u3acv = 3; d3acv = 0;}     
if ((ac13v<ac23v && ac23v<ac33v && ac03v>0 && ac03v<ac13v) || (ac03v<ac13v && ac13v<ac23v && ac03v<0)) 
{ach13v = "V " ; acco13v = Red; u3acv = 0; d3acv = 3;}     
if ((((ac13v<ac23v || ac23v<ac33v) && ac03v<0 && ac03v>ac13v) || (ac03v>ac13v && ac13v<ac23v && ac03v>0))||
(((ac13v>ac23v || ac23v>ac33v) && ac03v>0 && ac03v<ac13v) || (ac03v<ac13v && ac13v>ac23v && ac03v<0)))
{ach13v = "0 " ; acco13v = Green; u3acv = 0; d3acv = 0;}
ObjectCreate("AC13v", OBJ_LABEL, WindowFind(short_name), 0, 0);
ObjectSetText("AC13v", ach13v,11, "Verdana", acco13v );
ObjectSet("AC13v", OBJPROP_XDISTANCE, 200);  
ObjectSet("AC13v", OBJPROP_YDISTANCE, 55);  
double  ac02v  = iAC(NULL, TF2, 0);
double  ac12v = iAC(NULL, TF2, 1);
double  ac22v = iAC(NULL, TF2, 2);
double  ac32v = iAC(NULL, TF2, 3);
//double  ac4 = iAO(NULL, 0, 4);             
string ach12v;
color acco12v;
if ((ac12v>ac22v && ac22v>ac32v && ac02v<0 && ac02v>ac12v) || (ac02v>ac12v && ac12v>ac22v && ac02v>0)) 
{ach12v = "/\\ " ; acco12v = Blue; u2acv = 3; d2acv = 0;}     
if ((ac12v<ac22v && ac22v<ac32v && ac02v>0 && ac02v<ac12v) || (ac02v<ac12v && ac12v<ac22v && ac02v<0)) 
{ach12v = "V " ; acco12v = Red; u2acv = 0; d2acv = 3;}     
if ((((ac12v<ac22v || ac22v<ac32v) && ac02v<0 && ac02v>ac12v) || (ac02v>ac12v && ac12v<ac22v && ac02v>0))||
(((ac12v>ac22v || ac22v>ac32v) && ac02v>0 && ac02v<ac12v) || (ac02v<ac12v && ac12v>ac22v && ac02v<0)))
{ach12v = "0 " ; acco12v = Green; u2acv = 0; d2acv = 0;}
ObjectCreate("AC12v", OBJ_LABEL, WindowFind(short_name), 0, 0);
ObjectSetText("AC12v", ach12v,11, "Verdana", acco12v );
ObjectSet("AC12v", OBJPROP_XDISTANCE, 200);  
ObjectSet("AC12v", OBJPROP_YDISTANCE, 35);     
  
 
 
ObjectCreate("rezv", OBJ_LABEL, WindowFind(short_name), 0, 0);
ObjectSetText("rezv", "РЕЗУЛЬТАТЫ",9, "Verdana", Lime );
ObjectSet("rezv", OBJPROP_XDISTANCE, 240);  
ObjectSet("rezv", OBJPROP_YDISTANCE, 0);
 
  
  double uitog1v = (u1x5v + u1x8v + u1x13v + u1x21v + u1x34v + u1acv) * 12.5;
  double uitog2v = (u2x5v + u2x8v + u2x13v + u2x21v + u2x34v + u2acv) * 12.5;
  double uitog3v = (u3x5v + u3x8v + u3x13v + u3x21v + u3x34v + u3acv) * 12.5;
  
  double ditog1v = (d1x5v + d1x8v + d1x13v + d1x21v + d1x34v + d1acv) * 12.5;
  double ditog2v = (d2x5v + d2x8v + d2x13v + d2x21v + d2x34v + d2acv) * 12.5;
  double ditog3v = (d3x5v + d3x8v + d3x13v + d3x21v + d3x34v + d3acv) * 12.5;
  
     UP_1Buffer[0] = StrToDouble(uitog1v);
     UP_2Buffer[0] = StrToDouble(uitog2v);
     UP_3Buffer[0] = StrToDouble(uitog3v);
     DOWN_1Buffer[0] = StrToDouble(ditog1v);
     DOWN_2Buffer[0] = StrToDouble(ditog2v);
     DOWN_3Buffer[0] = StrToDouble(ditog3v);
  
  string hr1v, hr2v, hr3v, hr4v, hr5v,hr6v;
  string dhr1v, dhr2v, dhr3v, dhr4v, dhr5v, dhr6v;
  if (uitog1v> ditog1v) {hr1v = "Arial Black"; dhr1v = "Arial";}
  if (uitog1v< ditog1v) {hr1v = "Arial"; dhr1v = "Arial Black";}
  if (uitog1v == ditog1v) {hr1v = "Arial"; dhr1v = "Arial";}
  
  if (uitog2v> ditog2v) {hr2v = "Arial Black"; dhr2v = "Arial";}
  if (uitog2v< ditog2v) {hr2v = "Arial"; dhr2v = "Arial Black";}
  if (uitog2v == ditog2v) {hr2v = "Arial"; dhr2v = "Arial";}
  
  if (uitog3v> ditog3v) {hr3v = "Arial Black"; dhr3v = "Arial";}
  if (uitog3v< ditog3v) {hr3v = "Arial"; dhr3v = "Arial Black";}
  if (uitog3v == ditog3v) {hr3v = "Arial"; dhr3v = "Arial";}
  
  ObjectCreate("uitog1v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("uitog1v", StringConcatenate("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue );
  ObjectSet("uitog1v", OBJPROP_XDISTANCE, 235);  
  ObjectSet("uitog1v", OBJPROP_YDISTANCE, 15);
  
  ObjectCreate("uitog2v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("uitog2v", StringConcatenate("/\\ ",uitog2v, "%"),12, hr2v, DodgerBlue );
  ObjectSet("uitog2v", OBJPROP_XDISTANCE, 235);  
  ObjectSet("uitog2v", OBJPROP_YDISTANCE, 35);
  
  ObjectCreate("uitog3v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("uitog3v", StringConcatenate("/\\ ",uitog3v, "%"),12, hr3v, DodgerBlue );
  ObjectSet("uitog3v", OBJPROP_XDISTANCE, 235);  
  ObjectSet("uitog3v", OBJPROP_YDISTANCE, 55);
  
  ObjectCreate("ditog1v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("ditog1v", StringConcatenate("\\/ ", ditog1v, "%"),12, dhr1v, Red );
  ObjectSet("ditog1v", OBJPROP_XDISTANCE, 310);  
  ObjectSet("ditog1v", OBJPROP_YDISTANCE, 15);
  
  ObjectCreate("ditog2v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("ditog2v", StringConcatenate("\\/ ",ditog2v, "%"),12, dhr2v, Red );
  ObjectSet("ditog2v", OBJPROP_XDISTANCE, 310);  
  ObjectSet("ditog2v", OBJPROP_YDISTANCE, 35);
  
  ObjectCreate("ditog3v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("ditog3v", StringConcatenate("\\/ ",ditog3v, "%"),12, dhr3v, Red );
  ObjectSet("ditog3v", OBJPROP_XDISTANCE, 310);  
  ObjectSet("ditog3v", OBJPROP_YDISTANCE, 55);
  
  
  
 

Продолжение индикатора:

string txtv;
  if (uitog1v > 50 && uitog2v > 50 && uitog3v > 50)
  
  {txtv = "Неплохой момент для открытия позиции BUY";}
  else
  {txtv = "Не рекомендуется открывать позизии. ЖДИТЕ.";} 
  
  if (ditog1v > 50 && ditog2v > 50 && ditog3v > 50)
  {txtv = "Неплохой момент для открытия позиции SELL";}
  
  if (uitog1v >= 75 && uitog2v >= 75 && uitog3v >= 75)
  {txtv = "УДАЧНЫЙ момент для открытия позиции BUY";}
  if (ditog1v >= 75 && ditog2v >= 75 && ditog3v >= 75)
  {txtv = "УДАЧНЫЙ момент для открытия позиции SELL";}
  
  
  ObjectCreate("txtv", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("txtv", txtv,14, "Verdana", Lime );
  ObjectSet("txtv", OBJPROP_XDISTANCE, 410);  
  ObjectSet("txtv", OBJPROP_YDISTANCE, 35);
  
  ObjectCreate("txt2v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("txt2v","Мультитаймфреймный индикатор \"TREND_ALEXCUD\"",9, "Verdana", Silver );
  ObjectSet("txt2v", OBJPROP_XDISTANCE, 11);  
  ObjectSet("txt2v", OBJPROP_YDISTANCE, 80);
  ObjectCreate("txt3v", OBJ_LABEL, WindowFind(short_name), 0, 0);
  ObjectSetText("txt3v","Copyright © 2007 ALEXCUD v_2",9, "Verdana", Silver );
  ObjectSet("txt3v", OBJPROP_XDISTANCE, 410);  
  ObjectSet("txt3v", OBJPROP_YDISTANCE, 80);
  
   return(0);
  }
//+------------------------------------------------------------------+

а теперь то, что указывается в эксперте:

bool          SignalIndikcheckBuy = FALSE,
              SignalIndikcheckSell = FALSE;
int start {
double goodup_1 = iCustom (NULL, 0, "TREND_alexcud v_2",0,0);
double goodup_2 = iCustom (NULL, 0, "TREND_alexcud v_2",2,0);
double goodup_3 = iCustom (NULL, 0, "TREND_alexcud v_2",4,0);
double gooddown_1 = iCustom (NULL, 0, "TREND_alexcud v_2",1,0);
double gooddown_2 = iCustom (NULL, 0, "TREND_alexcud v_2",1,0);
double gooddown_3 = iCustom (NULL, 0, "TREND_alexcud v_2",1,0);
if (goodup_1 >= 75 && goodup_2 >= 75 && goodup_3 >= 75) SignalIndikcheckBuy = TRUE; 
if (gooddown_1 >= 75 && gooddown_2 >= 75 && gooddown_3 >= 75) SignalIndikcheckSell = TRUE;
}

удачи. и не забывайте писать о полезных замеченных ситуациях.

 

Измененный блок с алертом и выводом даты и цены сигнала, а также с отправкой письма на E-mail (или СМС), переменную OnceRun нужно инициализировать до старта (int OnceRun=0;):

  string txtv;
  if (uitog1v > 50 && uitog2v > 50 && uitog3v > 50)
    {
     txtv = "Неплохой момент для открытия позиции BUY";
     if(OnceRun!=1)
       {
        Alert("Неплохой момент для BUY. Цена=",Ask,". Дата=",TimeToStr(TimeCurrent()));
        SendMail("Indicator TREND","BUY>50%. Ask="+Ask+". Date="+TimeToStr(TimeCurrent()));
        OnceRun=1;
       } 
    }
  else
    {
     txtv = "Не рекомендуется открывать позиции. ЖДИТЕ.";
     if(OnceRun!=0)
       {
        Alert("Не рекомендуется открывать позиции. ЖДИТЕ. Bid="+Bid+". Date="+TimeToStr(TimeCurrent()));
        SendMail("Indicator TREND","Not recommended to trading. WAIT. Bid="+Bid+". Date="+TimeToStr(TimeCurrent()));
        OnceRun=0;
       } 
    } 
  if (ditog1v > 50 && ditog2v > 50 && ditog3v > 50)
    {
     txtv = "Неплохой момент для открытия позиции SELL";
     if(OnceRun!=2)
       {
        Alert("Неплохой момент для SELL. Цена=",Bid,". Дата=",TimeToStr(TimeCurrent()));
        SendMail("Indicator TREND","SELL>50%. Bid="+Bid+". Date="+TimeToStr(TimeCurrent()));
        OnceRun=2;
       } 
    }
  if (uitog1v >= 75 && uitog2v >= 75 && uitog3v >= 75)
    {
     txtv = "УДАЧНЫЙ момент для открытия позиции BUY";
     if(OnceRun!=3)
       {
        Alert("УДАЧНЫЙ момент для BUY. Цена=",Ask,". Дата=",TimeToStr(TimeCurrent()));
        SendMail("Indicator TREND","BUY>=75%. Ask="+Ask+". Date="+TimeToStr(TimeCurrent()));
        OnceRun=3;
       } 
    }
  if (ditog1v >= 75 && ditog2v >= 75 && ditog3v >= 75)
    {
     txtv = "УДАЧНЫЙ момент для открытия позиции SELL";
     if(OnceRun!=4)
       {
        Alert("УДАЧНЫЙ момент для SELL. Цена=",Bid,". Дата=",TimeToStr(TimeCurrent()));
        SendMail("Indicator TREND","SELL>=75%. Bid="+Bid+". Date="+TimeToStr(TimeCurrent()));
        OnceRun=4;
       } 
    }
У операторов сотовых сетей есть бесплатные услуги, типа "E-mail через SMS", например у Мегафона +7**********@sms.megafon.ru Просто в настройках почты терминала нужно ввести мобильный E-mail. Очень удобно.
 
Когда-то был интерес к этому индюку у народа, приходят новые поколения трейдеров, а... "грабли те же"... :)

Решил (от наличия немножко свободного времени) слегка "причесать" код этого индюка (логику не трогал).
Вот, что получилось:

//|                  *****        Параметры индикатора         *****                  |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
extern string   MA_TrendPeriod = "5,8,13,21,34";
extern string   List_TF        = "15,60,240";
extern bool     SoundAlert     = True;
extern bool     VisualAlert    = True;
//IIIIIIIIIIIIIIIIIII=============Буферы индикатора=============IIIIIIIIIIIIIIIIIIIIII+
double UPBuffer[], DOWNBuffer[];
//IIIIIIIIIIIIIIIIIII======Глобальные переменные индикатора=====IIIIIIIIIIIIIIIIIIIIII+
double   gd_Itog_U[3], gd_Itog_D[3];
string   short_name = "TREND_alexcud",
         gs_Lable[7] = {"MA","AC","rez","TF","TF1_","TF2_","TF3_"},
         gs_Font_0[3] = {"Arial Black","Arial","Arial"}, gs_Font_1[3] = {"Arial","Arial Black","Arial"};
color    gc_color[3][5], gc_col_st[3] = {Red,Blue,Green};
int      gi_AC_U[3], gi_AC_D[3], gi_MA_TrendPeriod[5], gi_TF[3], gi_Window, cnt_TF, cnt_Arrow, Time_lastArrow,
         gi_Vol_U[3] = {0,1,0}, gi_Vol_D[] = {1,0,0}, gi_Arrow[3] = {218,217,91};
datetime gi_newBar;
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom indicator initialization function                         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int init()
{
    StringToArrayINT (MA_TrendPeriod, gi_MA_TrendPeriod, ",");
    cnt_TF = MathMin (3, fCreatArray_TF (List_TF, gi_TF));
//---- name for indicator window
    gi_Window = WindowFind (short_name);
    IndicatorShortName (short_name);
    SetIndexBuffer (0, UPBuffer);
    SetIndexBuffer (1, DOWNBuffer);
    fCreatTable();
    cnt_Arrow = GlobalVariableGet (Symbol() + "#cnt_Arrow");
    Time_lastArrow = GlobalVariableGet (Symbol() + "#Time_lastArrow");
//----
    return(0);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custor indicator deinitialization function                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int deinit()
{
//----
    ObjectsDeleteAll (gi_Window);
//----
    return (0);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom indicator iteration function                              |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int start()
{
    int li_MA, li_PRD, li_result, li_Bar, li_signal, li_Total, li_int;
    string ls_txt, ls_Name;
    double ld_MA_0, ld_MA_1, ld_AC[4], ld_Price;
    color lc_ColorArrow;
    bool s_Alert, v_Alert, HaveSell = false, HaveBuy = false;
    //----
    if (gi_newBar == iTime (NULL, PERIOD_M1, 0))
    {return (0);}
    gi_newBar = iTime (NULL, PERIOD_M1, 0);
    ArrayInitialize (gd_Itog_U, 0);
    ArrayInitialize (gd_Itog_D, 0);
    for (li_PRD = 0; li_PRD < 3; li_PRD++)
    {
        for (li_MA = 0; li_MA < 5; li_MA++)
        {
            ld_MA_0 = iMA (NULL, gi_TF[li_PRD], gi_MA_TrendPeriod[li_MA], 0, MODE_SMA, PRICE_CLOSE, 0);
            ld_MA_1 = iMA (NULL, gi_TF[li_PRD], gi_MA_TrendPeriod[li_MA], 0, MODE_SMA, PRICE_CLOSE, 1);
            li_result = IIFi ((ld_MA_0 < ld_MA_1), 0, IIFi ((ld_MA_0 > ld_MA_1), 1, 0));
            ObjectSetText (gs_Lable[li_PRD+4] + (li_MA + 1), CharToStr (gi_Arrow[li_result]) , 13, "Wingdings", gc_col_st[li_result]);
            gd_Itog_U[li_PRD] += gi_Vol_U[li_result];
            gd_Itog_D[li_PRD] += gi_Vol_D[li_result];
        }
    }
    //----
    for (li_PRD = 0; li_PRD < 3; li_PRD++)
    {
        for (li_Bar = 0; li_Bar < 4; li_Bar++)
        {ld_AC[li_Bar] = iAC (NULL, gi_TF[li_PRD], li_Bar);}
        if ((ld_AC[1] < ld_AC[2] && ld_AC[2] < ld_AC[3] && ld_AC[0] > 0 && ld_AC[0] < ld_AC[1])
        || (ld_AC[0] < ld_AC[1] && ld_AC[1] < ld_AC[2] && ld_AC[0] < 0))
        {li_result = 0;}
        if ((ld_AC[1] > ld_AC[2] && ld_AC[2] > ld_AC[3] && ld_AC[0] < 0 && ld_AC[0] > ld_AC[1])
        || (ld_AC[0] > ld_AC[1] && ld_AC[1] > ld_AC[2] && ld_AC[0] > 0))
        {li_result = 1;}
        if ((((ld_AC[1] < ld_AC[2] || ld_AC[2] < ld_AC[3]) && ld_AC[0] < 0 && ld_AC[0] > ld_AC[1])
        || (ld_AC[0] > ld_AC[1] && ld_AC[1] < ld_AC[2] && ld_AC[0] > 0))
        || (((ld_AC[1] > ld_AC[2] || ld_AC[2] > ld_AC[3]) && ld_AC[0] > 0 && ld_AC[0] < ld_AC[1])
        || (ld_AC[0] < ld_AC[1] && ld_AC[1] > ld_AC[2] && ld_AC[0] < 0)))
        {li_result = 2;}
        gi_AC_U[li_PRD] = IIFi ((gi_Vol_U[li_result] == 1), 3, 0);
        gi_AC_D[li_PRD] = IIFi ((gi_Vol_D[li_result] == 1), 3, 0);
        ls_Name = "AC1" + (li_PRD + 1);
        SetLabel (ls_Name, CharToStr (gi_Arrow[li_result]), 210, 17 + (20 * li_PRD), 13, "Wingdings", gc_col_st[li_result], gc_col_st[li_result], 0, gi_Window);
        gd_Itog_U[li_PRD] += gi_AC_U[li_PRD];
        gd_Itog_D[li_PRD] += gi_AC_D[li_PRD];
        gd_Itog_U[li_PRD] *= 12.5;
        gd_Itog_D[li_PRD] *= 12.5;
    }
    //----
    for (li_PRD = 0; li_PRD < 3; li_PRD++)
    {
        li_result = IIFi ((gd_Itog_U[li_PRD] > gd_Itog_D[li_PRD]), 0, IIFi ((gd_Itog_U[li_PRD] < gd_Itog_D[li_PRD]), 1, 2));
        ls_Name = "uitog" + (li_PRD + 1);
        SetLabel (ls_Name + "_A", CharToStr (225), 245, 15 + (20 * li_PRD), 13, "Wingdings", Blue, Blue, 0, gi_Window);
        SetLabel (ls_Name, StringConcatenate ("    ", gd_Itog_U[li_PRD], "%"), 245, 15 + (20 * li_PRD), 11, gs_Font_0[li_result], Blue, Blue, 0, gi_Window);
        ls_Name = "ditog" + (li_PRD + 1);
        SetLabel (ls_Name + "_A", CharToStr (226), 320, 15 + (20 * li_PRD), 13, "Wingdings", Red, Red, 0, gi_Window);
        SetLabel (ls_Name, StringConcatenate ("     ", gd_Itog_D[li_PRD], "%"), 320, 15 + (20 * li_PRD), 11, gs_Font_1[li_result], Red, Red, 0, gi_Window);
    }
    //----
    li_Total = OrdersTotal();
    //---- Обрабатываем открытые ордера
    for (li_int = li_Total - 1; li_int >= 0; li_int--)
    {
        if (!OrderSelect (li_int, SELECT_BY_POS, MODE_TRADES))
        {continue;} //---- только "активные"
        if (Symbol() != OrderSymbol())
        {continue;} //---- только "активные"
        if (OrderType() == OP_BUY) {HaveBuy = True;}
        if (OrderType() == OP_SELL) {HaveSell = True;}
    }
    li_signal = 0;
    lc_ColorArrow = Black;
    // Логика сообщений звук и видео такая - открываем по Удачному, закрываем по первому подходящему сигналу, а далее решайте сами ;)
    //----
    if (gd_Itog_U[0] > 50 && gd_Itog_U[1] > 50 && gd_Itog_U[2] > 50)
    {
        ls_txt = "Не плохой момент для открытия позиции BUY";
        lc_ColorArrow = Blue; li_signal = 228;
        if (HaveSell) {s_Alert = true; v_Alert = true; li_signal = 236;}
    }
    else
    {ls_txt = "Не рекомендуется открывать позизии. ЖДИТЕ.";} 
    if (gd_Itog_D[0] > 50 && gd_Itog_D[1] > 50 && gd_Itog_D[2] > 50)
    {
        ls_txt = "Не плохой момент для открытия позиции SELL";
        lc_ColorArrow = Red; li_signal = 230;
        if (HaveBuy) {s_Alert = true; v_Alert = true; li_signal = 238;}
    }
    if (gd_Itog_U[0] >= 75 && gd_Itog_U[1] >= 75 && gd_Itog_U[2] >= 75)
    {
        ls_txt = "УДАЧНЫЙ момент для открытия позиции BUY";
        lc_ColorArrow = Blue; li_signal = 225;
        s_Alert = true;
        if (HaveSell) {v_Alert = true; li_signal = 233;}
    }
    if (gd_Itog_D[0] >= 75 && gd_Itog_D[1] >= 75 && gd_Itog_D[2] >= 75)
    {
        ls_txt = "УДАЧНЫЙ момент для открытия позиции SELL";
        lc_ColorArrow = Red; li_signal = 226;
        s_Alert = true;
        if (HaveBuy) {v_Alert = true; li_signal = 234;}
    }
    if (SoundAlert && s_Alert) {PlaySound ("alert.wav");}
    if (VisualAlert && v_Alert) {Alert (Symbol(), ": Не пора бы зафиксировать прибыль по открытым позициям?");}
    if (li_signal > 0 && Time_lastArrow < TimeCurrent() - Period() * 3 * 60)
    {
        ls_Name = "Arrow" + cnt_Arrow;
        ld_Price = IIFd ((lc_ColorArrow == Blue), MarketInfo (Symbol(), MODE_ASK), MarketInfo (Symbol(), MODE_BID));
        ObjectCreate (ls_Name, OBJ_ARROW, 0, Time[0], ld_Price);
        ObjectSet (ls_Name, OBJPROP_COLOR, lc_ColorArrow);
        ObjectSet (ls_Name, OBJPROP_ARROWCODE, li_signal);
        ObjectSetText (ls_Name, TS_DS (TimeCurrent()));
        cnt_Arrow++;
        GlobalVariableSet (Symbol() + "#cnt_Arrow", cnt_Arrow);
        Time_lastArrow = TimeCurrent();
        GlobalVariableSet (Symbol() + "#Time_lastArrow", Time_lastArrow);
    }
    //----
    SetLabel ("txt", ls_txt, 420, 35, 14, "Verdana", Lime, Lime, 0, gi_Window);
//----
    return (0);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор    : TarasBY, taras_bulba@tut.by                                           |
//+-----------------------------------------------------------------------------------+
//|  Версия   : 23.07.2010                                                            |
//|  Описание : Установка объекта OBJ_LABEL                                           |
//+-----------------------------------------------------------------------------------+
//|  Параметры:                                                                       |
//|    name - наименование объекта                                                    |
//|    text - сам объект                                                              |
//|    X - координата X                                                               |
//|    Y - координата Y                                                               |
//|    size - размер объекта                                                          |
//|    Font - шрифт объекта                                                           |
//|    CL1 - цвет                                                                     |
//|    CL2 - цвет                                                                     |
//|    Angle - угол                                       (0  - по умолчанию)         |
//|    iWindow - окно в котором расположен объект         (0  - по умолчанию)         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void SetLabel (string name, string text, int X, int Y, int size, string Font,
               color CL1, color CL2, int Angle = 0, int iWindow = 0)
{
    if (ObjectFind (name) == -1)
    {ObjectCreate (name, OBJ_LABEL, iWindow, 0, 0);}
    ObjectSet (name, OBJPROP_COLOR, CL1);
    ObjectSet (name, OBJPROP_XDISTANCE, X);
    ObjectSet (name, OBJPROP_YDISTANCE, Y);
    if (Angle > 0)
    {ObjectSet (name, OBJPROP_ANGLE, Angle);}
    if (text != "")
    {ObjectSetText (name, text, size, Font, CL2);}
//----
    return;   
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Рисуем на графике таблицу                                                  |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fCreatTable()
{
    int li_OBJ, li_LBL, li_int, li_result, X_Dist = 0, Y_Dist = 0,
    li_Lable[7] = {1,1,1,4,6,6,6};
    string ls_txt, ls_Name, ls_font = "Verdana", ls_TXT[3];
    //----
    for (li_int = 0; li_int < 3; li_int++)
    {ls_TXT[li_int] = GetNameTF (gi_TF[li_int]);}
    for (li_LBL = 0; li_LBL < 7; li_LBL++)
    {
        for (li_OBJ = IIFi ((li_LBL <= 2), 0, 1); li_OBJ < li_Lable[li_LBL]; li_OBJ++)
        {
            if (li_LBL <= 2)
            {
                X_Dist = IIFi ((li_LBL == 0), 75, IIFi ((li_LBL == 1), 210, 260));
                ls_txt = IIFs ((li_LBL == 0), "Moving Average", IIFs ((li_LBL == 1), "AC", "РЕЗУЛЬТАТЫ"));
                ls_Name = gs_Lable[li_LBL];
            }
            else
            {
                if (li_LBL == 3)
                {
                    X_Dist = 11;
                    Y_Dist = 15 + (20 * (li_OBJ - 1));
                    ls_txt = ls_TXT[li_OBJ-1];
                }
                else
                {
                    X_Dist = 50 + (30 * (li_OBJ - 1));
                    Y_Dist = 17 + (20 * (li_LBL - 4));
                }
                ls_Name = gs_Lable[li_LBL] + li_OBJ;
            }
            ObjectCreate (ls_Name, OBJ_LABEL, gi_Window, 0, 0); 
            if (li_LBL <= 3)
            {ObjectSetText (ls_Name, ls_txt, IIFi ((li_LBL <= 2), 9, 11), ls_font, Lime);}
            ObjectSet (ls_Name, OBJPROP_XDISTANCE, X_Dist);  
            ObjectSet (ls_Name, OBJPROP_YDISTANCE, Y_Dist);
        }
    }
    SetLabel ("txt2", "Мультитаймфреймный индикатор \"TREND_ALEXCUD\"", 11, 80, 9, "Verdana", Silver, Silver, 0, gi_Window);
    SetLabel ("txt3", "Copyright © 2007 ALEXCUD", 420, 80, 9, "Verdana", Silver, Silver, 0, gi_Window);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Создаём массив INT из строки, разделённой sDelimiter                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int StringToArrayINT (string List, int& iArray[], string sDelimiter = ",")
{
    int i = 0, num;
    string ls_tmp;
//----
    ArrayResize (iArray, 0);
    while (StringLen (List) > 0)
    {
        num = StringFind (List, sDelimiter);
        if (num < 0)
        {
            ls_tmp = List;
            List = "";
        }
        else
        {
            ls_tmp = StringSubstr (List, 0, num);
            List = StringSubstr (List, num + 1);
        }
        i++;
        ArrayResize (iArray, i);
        iArray[i-1] = StrToDouble (ls_tmp);
    }
//----
    return (ArraySize (iArray));
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Функция, перевода времени в сек. в строку формата "yyyy.mm.dd hh:mi:ss"    |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string TS_DS (datetime v)
{return (TimeToStr (v, TIME_DATE|TIME_SECONDS));}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Возвращает наименование таймфрейма                                         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string GetNameTF (int TimeFrame)
{
    switch (TimeFrame)
    {
        case PERIOD_M1:  return ("M1");
                  case PERIOD_M5:  return ("M5");
                  case PERIOD_M15: return ("M15");
                  case PERIOD_M30: return ("M30");
                  case PERIOD_H1:  return ("H1");
                  case PERIOD_H4:  return ("H4");
                  case PERIOD_D1:  return ("D1");
                  case PERIOD_W1:  return ("W1");
                  case PERIOD_MN1: return ("MN1");
                  default: return ("");
         }
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор    : TarasBY, taras_bulba@tut.by                                           |
//+-----------------------------------------------------------------------------------+
//|  Версия   : 15.06.2010                                                            |
//|  Описание : Возвращает значение таймрейма в соответствие со стандартными периода- |
//|             ми графиков.                                                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fTFNormalize (int Timeframe)
{
    int li_TF = 0, li_UP = 50000, li_DOWN, cnt_TM = 9;
    int ar_TM[] = {1,5,15,30,60,240,1440,10080,43200};
//----
    if (Timeframe == 0)
    {return (Period());}    
    for (int li_int = 0; li_int < cnt_TM; li_int++)
    {
        if (Timeframe <= ar_TM[li_int])
        {li_UP = MathMin (li_UP, ar_TM[li_int]);}
        if (Timeframe > ar_TM[li_int])
        {li_DOWN = MathMax (li_DOWN, ar_TM[li_int]);}
    }
    li_TF = IIFi ((MathAbs (Timeframe - li_UP) <= MathAbs (Timeframe - li_DOWN)), li_UP, li_DOWN);
//----
    return (li_TF);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор    : TarasBY, taras_bulba@tut.by                                           |
//+-----------------------------------------------------------------------------------+
//|  Версия   : 12.01.2011                                                            |
//|  Описание : Возвращает массив TF из строки, контролируя правильность задания TF.  |
//+-----------------------------------------------------------------------------------+
//|  Параметры:                                                                       |
//|    s_List - строка                                                                |
//|    iAr_TF - массив элементов типа int (TF)                                        |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fCreatArray_TF (string s_List, int& iAr_TF[])
{
    int li_cnt_TF, li_cnt = 0;
//----
    li_cnt_TF = StringToArrayINT (s_List, iAr_TF);
    for (int li_TF = 0; li_TF < li_cnt_TF; li_TF++)
    {
        iAr_TF[li_TF] = fTFNormalize (iAr_TF[li_TF]);
        if (li_TF > 0)
        {
            if (iAr_TF[li_TF] != iAr_TF[li_cnt])
            {
                li_cnt++;
                iAr_TF[li_cnt] = iAr_TF[li_TF];
            }
            else
            {Print ("Не верно задан TF. При нормализации получили дубликат: TF[", li_cnt, "/", iAr_TF[li_cnt], "] = TF[", li_TF, "/", iAr_TF[li_TF], "]- удаляем дубликат!!!");}
        }
    }
    li_cnt++;
    if (li_cnt_TF != li_cnt)
    {ArrayResize (iAr_TF, li_cnt);}
//----
    return (li_cnt);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                          |
//+-----------------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                            |
//|  Описание : Возвращает одно из двух значений взависимости от условия.             |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int IIFi (bool condition, int ifTrue, int ifFalse)
{
    if (condition)
    {return (ifTrue);}
    else {return (ifFalse);}
}
//+-----------------------------------------------------------------------------------+
string IIFs (bool condition, string ifTrue, string ifFalse)
{
    if (condition)
    {return (ifTrue);}
    else {return (ifFalse);}
}
//+-----------------------------------------------------------------------------------+
double IIFd (bool condition, double ifTrue, double ifFalse)
{
    if (condition)
    {return (ifTrue);}
    else {return (ifFalse);}
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Причина обращения: