Текущий тренд

 

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

Есть такой индикатор как Alligator. В нем есть три линии: синяя, красная и зеленая.

Есть переменная string TREND.

Мне надо, чтоб если все линии идут, например, вверх, то переменная TREND = "UP", а если вниз, то TREND = "DOWN".

Можно ли так как-то сделать? Что надо дописать?

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

//+------------------------------------------------------------------+
//|                                                    Alligator.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Lime
//---- input parameters
extern int JawsPeriod=13;
extern int JawsShift=8;
extern int TeethPeriod=8;
extern int TeethShift=5;
extern int LipsPeriod=5;
extern int LipsShift=3;
//---- indicator buffers
double ExtBlueBuffer[];
double ExtRedBuffer[];
double ExtLimeBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- line shifts when drawing
   SetIndexShift(0,JawsShift);
   SetIndexShift(1,TeethShift);
   SetIndexShift(2,LipsShift);
//---- first positions skipped when drawing
   SetIndexDrawBegin(0,JawsShift+JawsPeriod);
   SetIndexDrawBegin(1,TeethShift+TeethPeriod);
   SetIndexDrawBegin(2,LipsShift+LipsPeriod);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,ExtBlueBuffer);
   SetIndexBuffer(1,ExtRedBuffer);
   SetIndexBuffer(2,ExtLimeBuffer);
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
//---- index labels
   SetIndexLabel(0,"Gator Jaws");
   SetIndexLabel(1,"Gator Teeth");
   SetIndexLabel(2,"Gator Lips");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Bill Williams' Alligator                                         |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- main loop
   for(int i=0; i<limit; i++)
     {
      //---- ma_shift set to 0 because SetIndexShift called abowe
      ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
      ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
      ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
     }
//---- done
   return(0);
  }
//+------------------------------------------------------------------+
 
Для себя я тоже когда-то тренд пытался определить..но время ппрошло и настала пора целей..если знаешь к какой цели движется цена то проблема определения тренда уже отпадает..
 
forte928 >>:
Для себя я тоже когда-то тренд пытался определить..но время ппрошло и настала пора целей..если знаешь к какой цели движется цена то проблема определения тренда уже отпадает..

Дело в том, что мне не нало знать к какой цене будет двигаться курс, мне просто надо знать, какой "сейчас" тренд: вверх или вниз.

 

А что такое тренд? Я не стебаюсь - у вас есть определение (формулировка) того, что вы собираетесь определять?

 
Svinozavr >>:

А что такое тренд? Я не стебаюсь - у вас есть определение (формулировка) того, что вы собираетесь определять?

Ну может я не правильно понимаю его значение. Я понимаю это как направление цены в данный момент. Т.е по алигатору: если линии идут вверх, то тренд вверх, если линии вниз, то вниз. Может это не правильно, но мне больше пока ничего не надо знать.

 
Еще заметил, что если зеленая линия ниже всех, то график идет вниз, т.е. при этом TREND = "UP".
 

функция возвращает длинну тренда в барах и выставляет глобальную переменную с направлением тренда :

int  Trand(){
  int a,i,c,x,y;
  for(a=0;a<100;a++){if(iCustom(Symbol(),TimeFrame,"Zigzag",0,a)!=0){a++;break;}}
  zzstart=a;
  for(i=a;i<1000;i++){
    double zz =iCustom(Symbol(),TimeFrame,"Zigzag",0,i);
    if(zz!=0){ZZ[c][0]=zz;ZZ[c][1]=i;c++;}
    if(c>=20)break;
  }
  ArrayResize(ZZ,c);

  if(ZZ[0][0]>ZZ[2][0]){//trand up
    for(i=0;i<c;i=i+2){if(ZZ[i][0]<ZZ[i+2][0]){y=ZZ[i][1];break;}}
    for(i=1;i<c;i=i+2){if(ZZ[i][0]<ZZ[i+2][0]){if(ZZ[i][1]>y){y=ZZ[i][1];break;}}}
    GlobalVariableSet(Symbol()+"trand",1);
  } 
  if(ZZ[0][0]<ZZ[2][0]){//trand dn
    for(i=0;i<c;i=i+2){if(ZZ[i][0]>ZZ[i+2][0]){y=ZZ[i][1];break;}}
    for(i=1;i<c;i=i+2){if(ZZ[i][0]>ZZ[i+2][0]){if(ZZ[i][1]>y){y=ZZ[i][1];break;}}}   
    GlobalVariableSet(Symbol()+"trand",-1);
  }
  int per=(TimeFrame/Period());
  if(per<1){per=1;}
  y=y*per;
  
return(y);
}
 
peter888 >>:

Ну может я не правильно понимаю его значение. Я понимаю это как направление цены в данный момент. Т.е по алигатору: если линии идут вверх, то тренд вверх, если линии вниз, то вниз. Может это не правильно, но мне больше пока ничего не надо знать.

Ладно. Вы ведь когда смотрите на график, легко можете сказать: Такие дела - тренд. А здесь - флэт.

Как вы это определяете? По аллигатору???)))

Попробуйте сформулировать определение тренда. А то у вас получается, что тренд, это такое состояние рынка, когда пасть туда, зубы сюда и пр.))) Короче, телега впереди паровоза.

 

Может я вас не понимаю, а вы меня.

Мне надо чтоб на этих свечах TREND был равен:


направление тренда

 
xrust >>:

функция возвращает длинну тренда в барах и выставляет глобальную переменную с направлением тренда :

Т.е если я на EURUSD и на любом ТФ, то глобальная переменная EURUSDtrand (в даном случаи) примет значение 1 при услови если направтение тренда идет вверх, и -1 если вниз, да?

 

да . кроме того ТФ задается внешней переменной "TimeFrame", то есть можете просмотреть направление текущего тренда с любого старшего ТФ

Причина обращения: