HIGH и LOW недели

 

Доброй ночи!

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

По форуму нашел ссылку 'Помгоите с рисованием', но там уровни прописываются на текущую неделю, голова ПРОСТО уже не работает сегодня никак не могу разобраться.

Спасибо за помощь!

 
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);
Это?
 
kombat:
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);
Это?

То что нужно!

Спасибо!!!

 
kombat:
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);
Это?

Нет, вот это:

  double WoldHigh=High[1];
  double WoldLow =Low[1];

:)

PS это варинт когда ищется хай/лоу на W1 графике по текущему инструменту.

 
goldtrader:
kombat:
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);
Это?

Нет, вот это:

  double WoldHigh=High[1];
  double WoldLow =Low[1];

:)

PS это варинт когда ищется хай/лоу на W1 графике по текущему инструменту.


goldtrader


не вводите в заблуждение!


встанет парень на ТФ M1 и получит хай лов прошлой минутки


Это ХАЙ ЛОВ предыдущей свечи конкретного ТФ
double WoldHigh=High[1];
  double WoldLow =Low[1];


---------


а это на каком бы вы ТФ не стояли, всегда будет хай лов прошлой недели!

  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);

 
YuraZ:
а это на каком бы вы ТФ не стояли, всегда будет хай лов прошлой недели!
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);


А если недельный бар за прошлую неделю отстутствует? :) Ну допустим таймфрэйм W1 давно уже не открывался.

Тогда придётся делать универсальный алгоритм поиска по барам на всех таймфрэймах

 

Привет.

Понравилась мне тема вычисления уровней. И задался я целью написать индикатор, который бы уровни эти рисовал. Однако столкнулся со следующей проблемой. Линия уровня не должна начинаться в начале истории и заканчиваться текущим моментом, хочется, чтобы месячные экстремумы были толстыми и длинными, а дневные и недельные короткими на чарте (по 50 пикселов или по 20 баров). Плюс хочется, чтобы эти уровни можно было видеть на всей истории, или хотя бы на очень большом промежутке (2-3 года). Хочется также, чтобы эти линии подписывались, дневной, недельный или месячный это экстремум. Плюсы этого индикатора ИМХО неоспоримы - мы увидим на экране все критичные и переломные уровни. Спасибо всем, кто заинтересуется и поможет.

Вот то, что на данный момент получилось.

//+------------------------------------------------------------------+
//|                                                Уровни 
//+------------------------------------------------------------------+
#property copyright "Николай Ставинов"
#property link      "mail to: kontrik@mail.ru"
 
 
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 DarkOrange
#property indicator_color2 Orange
#property indicator_color3 Gold
#property indicator_color5 Yellow
#property indicator_color6 Chartreuse
#property indicator_color7 Lime
#property indicator_color8 SpringGreen
#property indicator_width1 1
#property indicator_width2 2
#property indicator_width3 1
#property indicator_width4 2
#property indicator_width5 1
#property indicator_width6 2
#property indicator_width7 1
#property indicator_width8 2
#property indicator_style1 DRAW_HISTOGRAM
#property indicator_style2 DRAW_HISTOGRAM
#property indicator_style3 DRAW_LINE
#property indicator_style4 DRAW_LINE
#property indicator_style5 DRAW_LINE
#property indicator_style6 DRAW_LINE
#property indicator_style7 DRAW_LINE
#property indicator_style8 DRAW_LINE
 
 
 
double HighBuffer1[];
double HighBuffer2[];
double HighBuffer3[];
double HighBuffer4[];
double LowBuffer1[];
double LowBuffer2[];
double LowBuffer3[];
double LowBuffer4[];
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorShortName("Layers");        
   SetIndexBuffer(0,HighBuffer1);
   SetIndexBuffer(1,HighBuffer2);
   SetIndexBuffer(2,HighBuffer3);
   SetIndexBuffer(3,HighBuffer4);
   SetIndexBuffer(4,LowBuffer1);
   SetIndexBuffer(5,LowBuffer2);
   SetIndexBuffer(6,LowBuffer3);
   SetIndexBuffer(7,LowBuffer4);
      
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  
   int    counted_bars=IndicatorCounted();
   int    limit;
   int    i,r,y;
//----
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
 
  
  
  //уровни за предыдущую неделю
  double LastWeek_Low1   =iLow(NULL,PERIOD_W1,1);
  double LastWeek_High1 =iHigh(NULL,PERIOD_W1,1);
  
  
  // уровни за предыдущие 5 дней
  double LastDay_Low1   =iLow(NULL,PERIOD_D1,1);
  double LastDay_High1  =iHigh(NULL,PERIOD_D1,1);
  double LastDay_Low2   =iLow(NULL,PERIOD_D1,2);
  double LastDay_High2  =iHigh(NULL,PERIOD_D1,2);
  double LastDay_Low3   =iLow(NULL,PERIOD_D1,3);
  double LastDay_High3  =iHigh(NULL,PERIOD_D1,3);
  double LastDay_Low4   =iLow(NULL,PERIOD_D1,4);
  double LastDay_High4  =iHigh(NULL,PERIOD_D1,4);
  double LastDay_Low5   =iLow(NULL,PERIOD_D1,5);
  double LastDay_High5  =iHigh(NULL,PERIOD_D1,5);
 
  //уровни за предыдущий и текущий месяц
  double LastMonth_Low0   =iLow(NULL,PERIOD_MN1,0);
  double LastMonth_High0  =iHigh(NULL,PERIOD_MN1,0);
  double LastMonth_Low1   =iLow(NULL,PERIOD_MN1,1);
  double LastMonth_High1  =iHigh(NULL,PERIOD_MN1,1);
 
  
  for(i=0;i<limit;i++)
     {
      HighBuffer1[i]=LastWeek_High1;
      LowBuffer1[i]=LastWeek_Low1;
      HighBuffer2[i]=LastMonth_High0;
      LowBuffer2[i]=LastMonth_Low0;
      HighBuffer3[i]=LastMonth_High1;
      LowBuffer3[i]=LastMonth_Low1;
      }
  
  
  Comment(
  "Экстремумы ", " D1,     "," D2,     "," D3,     "," D4,     "," D5,     "," W1,     "," M0,     "," M1    ","\n",
  "Максимумы: ", DoubleToStr(LastDay_High1, Digits) + ", " + DoubleToStr(LastDay_High2, Digits) + ", " +
  DoubleToStr(LastDay_High3, Digits) + ", " + DoubleToStr(LastDay_High4, Digits) + ", " +
  DoubleToStr(LastDay_High5, Digits) + ", " + DoubleToStr(LastWeek_High1, Digits) + ", " +
  DoubleToStr(LastMonth_High0, Digits) + ", " + DoubleToStr(LastMonth_High1, Digits)
  + "\n" +
  "Минимумы:  " + DoubleToStr(LastDay_Low1, Digits) + ", " + DoubleToStr(LastDay_Low2, Digits) + ", " +
  DoubleToStr(LastDay_Low3, Digits) + ", " + DoubleToStr(LastDay_Low4, Digits) + ", " +
  DoubleToStr(LastDay_Low5, Digits) + ", " + DoubleToStr(LastWeek_Low1, Digits) + ", " +
  DoubleToStr(LastMonth_Low0, Digits) + ", " + DoubleToStr(LastMonth_Low1, Digits));
  
  
  
 
  }
 
Meat:
YuraZ:
а это на каком бы вы ТФ не стояли, всегда будет хай лов прошлой недели!
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);


А если недельный бар за прошлую неделю отстутствует? :) Ну допустим таймфрэйм W1 давно уже не открывался.

Тогда придётся делать универсальный алгоритм поиска по барам на всех таймфрэймах

а если пропало электричество или упала атомная бомба?

а если на харде места мало

а если отказала видеокарта

в клавиатуре и мышке сели батарейки

---

ответ

если нет недельного бара его надо загрузить

есть масса способов как это сделать

1-ручками

2-переключиться на ТФ W1



кроме того первое же обращение -

  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);

прогрузит недельный бар

 
Meat:
YuraZ:
а это на каком бы вы ТФ не стояли, всегда будет хай лов прошлой недели!
  double WoldHigh=iHigh(Symbol(),PERIOD_W1,1);
  double WoldLow =iLow (Symbol(),PERIOD_W1,1);


А если недельный бар за прошлую неделю отстутствует? :) Ну допустим таймфрэйм W1 давно уже не открывался.

Тогда придётся делать универсальный алгоритм поиска по барам на всех таймфрэймах

Он сам подгрузится при вызове функции, только проверку надо делать на процесс подгрузки, чтобы не работать по старым данным.

 
Up
 
YuraZ:
goldtrader:

Нет, вот это:

  double WoldHigh=High[1];
  double WoldLow =Low[1];

:)

PS это варинт когда ищется хай/лоу на W1 графике по текущему инструменту.


goldtrader


не вводите в заблуждение!


встанет парень на ТФ M1 и получит хай лов прошлой минутки


Это ХАЙ ЛОВ предыдущей свечи конкретного ТФ
double WoldHigh=High[1];
  double WoldLow =Low[1];

дабы не вводить в заблуждение сделал ремарку (выделена), а High[i] работает надёжнее чем iHigh(), об этом разработчики писали.

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