Индикаторы: Indicator WSO + WRO + Trend Line

 

Indicator WSO + WRO + Trend Line:

Индикатору уже более 2х лет, не выкладывал его только по тому, что сам не знал как им пользоваться.

Author: Sergey

 
Очень интересный индикатор. Я только скачал, глянул и заинтересовался. Требует изучения. Через неделю может быть более конкретизированное мнение. Пока же я разочаровался в стандартных индикаторах, все они следуют за ценой, а необходима связь с линиями поддержки, трендовыми, линиями каналов для создания МТС (или хотя бы анализа и выдачи сигналов). Кажется, этот индикатор прослеживает эту тенденцию. Приветствую!

Valmars
 
Что то не понятно. Это индикатор еще в МТ3 существовал?
 
Rosh wrote:
Что то не понятно. Это индикатор еще в МТ3 существовал?
да. и если помните, то в мт3 трендовые линии имели длину в 161.8 (в мт3 было наглядней и удобней)
я попытался сделать в мт4 длину 161.8 для трендовых, но столкнулся с проблемой выходных дней, которые на графике убираются... и линии из-за этого строятся неправильно.
Закачанные изображения:

 
Вот версия этого же индикатора только реализована как в MT3
Но тут наткнулся на странность МТ4. Индикатор на всех тайм фреймах работает нормально, а вот на Дневках и 4 часовках, линии тренда иногда зависают в воздухе...(проходят не прикосаясь к хай или лоу) на вопрос метаквотовцам по этой теме пока молчат. Но думаю связано с выходными днями.
//+------------------------------------------------------------------+
//|                                            Ind-TrendLine-MT3.mq4 |
//|                    Copyright © 2006, http://www.expert-mt4.nm.ru |
//+------------------------------------------------------------------+
//|   len=sqrt(periods*periods + points*points)                      |
//|   periods=(time1-time2)/(Period()*60);                           |
//|   points=(price1-price2)/Point;                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, http://www.expert-mt4.nm.ru"
#property link      "http://www.expert-mt4.nm.ru"
 
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
//extern int Line=5;
extern int nPeriod=9;
extern int Limit=350;
extern bool Alerts=true;
///---- int Widners Oscilator
int cnt,nCurBar=0;
double p1, p2, t1, t2;
double periods, points, len, sqrt;
double height, length;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- Output in Char
   for(cnt=0; cnt<=5; cnt++)
    {
      ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);
      ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);
      ObjectSetText("WSO-"+cnt,"WSO-"+cnt,10, "Tahoma", Green);
   if(cnt<5)
      {
      ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);
      ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Red);
      ObjectSet("Trend DN-"+cnt,OBJPROP_RAY,False);
      ObjectSetText("Trend DN-"+cnt,"DN-"+cnt,10, "Tahoma", Green);
      }
//----
      ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);
      ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);
      ObjectSetText("WRO-"+cnt,"WRO-"+cnt,10, "Tahoma", Green);
   if(cnt<5)
      {
      ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);
      ObjectSet("Trend UP-"+cnt,OBJPROP_COLOR,Blue);
      ObjectSet("Trend UP-"+cnt,OBJPROP_RAY,False);
      ObjectSetText("Trend UP-"+cnt,"UP-"+cnt,10, "Tahoma", Green);
      }
    ObjectSet("Trend DN-0",OBJPROP_COLOR,Maroon);
    ObjectSet("Trend Up-0",OBJPROP_COLOR,Green);
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   for(cnt=0; cnt<=5; cnt++)
      {
      ObjectDelete("Trend UP-"+cnt);
      ObjectDelete("Trend DN-"+cnt);
      ObjectDelete("WSO-"+cnt);
      ObjectDelete("WRO-"+cnt);
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//---- TODO: This Part for WRO-WSO...
   double r1,r2,r3,r4,r5,r6;
   int rt1,rt2,rt3,rt4,rt5,rt6;
   double s1,s2,s3,s4,s5,s6;
   int st1,st2,st3,st4,st5,st6;
//---- Линии сопротивления и поддержки
if(Bars<Limit) Limit=Bars-nPeriod;
for(nCurBar=Limit; nCurBar>0; nCurBar--)
   {
   if(Low[nCurBar+(nPeriod-1)/2] == Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])
      {
      s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];
      st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;
      }
   if(High[nCurBar+(nPeriod-1)/2] == High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])
      {
      r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];
      rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;
      }
   }
//---- Move Object in Chart
   ObjectMove("WSO-0",0,Time[st1],s1);
   ObjectMove("WSO-1",0,Time[st2],s2);
   ObjectMove("WSO-2",0,Time[st3],s3);
   ObjectMove("WSO-3",0,Time[st4],s4);
   ObjectMove("WSO-4",0,Time[st5],s5);
   ObjectMove("WSO-5",0,Time[st6],s6);
   ObjectMove("WRO-0",0,Time[rt1],r1);
   ObjectMove("WRO-1",0,Time[rt2],r2);
   ObjectMove("WRO-2",0,Time[rt3],r3);
   ObjectMove("WRO-3",0,Time[rt4],r4);
   ObjectMove("WRO-4",0,Time[rt5],r5);
   ObjectMove("WRO-5",0,Time[rt6],r6);
//----------------------------------------------------------
   lens(s1,s2,Time[st1],Time[st2]);   
   ObjectMove("Trend DN-0",1,height,length);
   ObjectMove("Trend DN-0",0,Time[st2],s2);
 
   lens(s2,s3,Time[st2],Time[st3]);
   ObjectMove("Trend DN-1",1,height,length);
   ObjectMove("Trend DN-1",0,Time[st3],s3);
 
   lens(s3,s4,Time[st3],Time[st4]);
   ObjectMove("Trend DN-2",1,height,length);
   ObjectMove("Trend DN-2",0,Time[st4],s4);
 
   lens(s4,s5,Time[st4],Time[st5]);
   ObjectMove("Trend DN-3",1,height,length);
   ObjectMove("Trend DN-3",0,Time[st5],s5);
 
   lens(s5,s6,Time[st5],Time[st6]);
   ObjectMove("Trend DN-4",1,height,length);
   ObjectMove("Trend DN-4",0,Time[st6],s6);
 
//----
   lens(r1,r2,Time[rt1],Time[rt2]); 
   ObjectMove("Trend UP-0",1,height,length);
   ObjectMove("Trend UP-0",0,Time[rt2],r2);
   
   lens(r2,r3,Time[rt2],Time[rt3]);
   ObjectMove("Trend UP-1",1,height,length);
   ObjectMove("Trend UP-1",0,Time[rt3],r3);
 
   lens(r3,r4,Time[rt3],Time[rt4]);
   ObjectMove("Trend UP-2",1,height,length);
   ObjectMove("Trend UP-2",0,Time[rt4],r4);
 
   lens(r4,r5,Time[rt4],Time[rt5]);
   ObjectMove("Trend UP-3",1,height,length);
   ObjectMove("Trend UP-3",0,Time[rt5],r5);
 
   lens(r5,r6,Time[rt5],Time[rt6]);
   ObjectMove("Trend UP-4",1,height,length);
   ObjectMove("Trend UP-4",0,Time[rt6],r6);
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
 
//********************************************************************
void lens(double price1,double price2,double time1, double time2)
   {
      if(time1>time2) height=time1+(((time1-time2)/10)*61.8);
      else height=time1+(((time1-time2)/10)*61.8);
      if(price1>price2) length=price1+(((price1-price2)/10)*61.8);
      else length=price1+(((price1-price2)/10)*61.8);   
   }

 
Очень не плохо. Надо + ИИ сюда :)
Причина обращения: