Скачать MetaTrader 5

Просьба к программистам

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как социальный трейдинг увеличит твой доход
Сергей Губарь
95
Сергей Губарь 2010.11.11 14:28 

Добрый день!

Уважаемые программисты кто из вас мог бы за умеренную плату объяснить один момент в программировании. Поскольку я только начинаю программировать у меня возникла большая сложность которую я своими силами не могу преодолеть. Если есть человек который готов помочь прошу писать мне по email fxteam2010@gmail.com

Aleksandr Chugunov
4816
Aleksandr Chugunov 2010.11.11 14:28  
да пиши сюда, поможем чем сможем
Aleksander
1673
Aleksander 2010.11.11 14:36  
AlexSTAL:
да пиши сюда, поможем чем сможем

Даа.. и деньги сразу сюда пиши.... типа сделал электронный перевод по емейлу...


Умеренная плата

Murad Ismayilov
1812
Murad Ismayilov 2010.11.11 14:50  
Спроси тут
Сергей Губарь
95
Сергей Губарь 2010.11.11 15:42  
Добрый день!

Сделал я первую часть индикатора. По историческим данным работает отлично, но как только начинают строиться новые свечи показывает все, что угодно, но только не то, что нужно. Перепробовал разные способы до которых мог додуматься, но за неделю так и не продвинулся вперед.
//+------------------------------------------------------------------+
//|                                                            2.mq4 |
//|                                                    Stellar Space |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Stellar Space"
#property link      "http"

#property indicator_chart_window                                               // Индикатор рисуется в основном окне
#property indicator_buffers 2                                                  // Количество индикаторных буферов
#property indicator_color1 DarkGreen                                           // Цвет первой линии
#property indicator_width1 1                                                   // Ширина первой линии
#property indicator_color2 Crimson                                             // Цвет второй линии
#property indicator_width2 1                                                   // Ширина второй линии

extern int Code_1=159;                                                         // Код значка
extern int Code_2=159;                                                         // Код значка

extern int History=1000;                                                       // Количество баров истории

double Buf_0[],Buf_1[];                                                        // Объявление массива под буфер индикатора

//+------------------------------------------------------------------+
int init()
 {
 
 SetIndexBuffer(0,Buf_0);                                                      // Назначение массива буферу
 SetIndexStyle(0, DRAW_ARROW);                                                 // Стиль линии
 SetIndexArrow(0, Code_1);                                                     // Стиль Arrow
 SetIndexLabel(0,"Максимум (1 уровень)");                                      // Установка имени линии индикатора 
 SetIndexBuffer(1,Buf_1);                                                      // Назначение массива буферу
 SetIndexStyle(1, DRAW_ARROW);                                                 // Стиль линии
 SetIndexArrow(1, Code_2);                                                     // Стиль Arrow
 SetIndexLabel(1,"Минимум (1 уровень)");                                       // Установка имени линии индикатора 
  
 return(0);
 }

//+------------------------------------------------------------------+
int start()
 {
 
 int i;                                                                        // Индекс бара
 int a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q;                                          // Объявление переменых
 int Counted_bars=IndicatorCounted();                                          // Количество просчитанных баров
 
 
//+------------------------------------------------------------------+         // START
                                           
 i=Bars-Counted_bars;                                                          // Индекс первого непосчитанного бара
 if (i>History)                                                                // Если много баров то ..
     i=History;                                                                // ..рассчитывать заданное количество

  while(i>1)                                                                    // Цикл по непосчитанным барам
 {

 
//+------------------------------------------------------------------+         // A

 for(a=i; a>=1; a--)    
 {//Aa
 if (High[a+1]<High[a]&&Low[a+1]<Low[a])
    {b=a;}    
 else {break;}
 }//Aa
//--
 for(a=i; a>=1; a--)    
 {//Ab
 if (High[a+1]>High[a]&&Low[a+1]>Low[a])
    {c=a;}
 else {break;}
 }//Ab
//--

 for(a=i; a>=1; a--)    
 {//Ac
 if (b>c){d=b;}    
 else {break;}
 }//Ac 
//--
 for(a=i; a>=1; a--)    
 {//Ad
 if (c>b){e=c;}    
 else {break;}
 }//Ad
//--

 for(a=i; a>=1; a--)    
 {//Ae
 if (e>d&&d>c)
  {
   f=iHighest(NULL,0,MODE_HIGH,e-c,c);
   Buf_0[f]=High[f]+2*Point;
  }    
 else {break;}
 }//Ae 
 for(a=i; a>=1; a--)    
 {//Af
 if (d>e&&e>b)
  {
   g=iLowest(NULL,0,MODE_LOW,d-b,b);
   Buf_1[g]=Low[g]-2*Point;
  }    
 else {break;}
 }//Af 
 

//+------------------------------------------------------------------+
 i--;
 }

//+------------------------------------------------------------------+         // FINISH

 //!

 return(0);
 }

//+------------------------------------------------------------------+
int deinit()
 {
 return(0);
 }
  
//+------------------------------------------------------------------+
Mislaid
622
Mislaid 2010.11.11 16:06  

Индикатор не тяжелый. Можно пересчитывать последние History баров. Этот индикатор перерисовывается.

Нужно заменить операторы

i=Bars-Counted_bars;                                                          // Индекс первого непосчитанного бара
if (i>History)                                                                // Если много баров то ..
     i=History; 

на

i=MathMin(Bars-1, History);

Также хорошо бы добавить операторы, чтобы индикатор пересчитывался только при приходе нового бара.

Сергей Губарь
95
Сергей Губарь 2010.11.11 16:32  
Mislaid:

Индикатор не тяжелый. Можно пересчитывать последние History баров. Этот индикатор перерисовывается.

Нужно заменить операторы

на

Также хорошо бы добавить операторы, чтобы индикатор пересчитывался только при приходе нового бара.

Да, здорово! все заработало, я не знал об этой функции.

Ф как добавить операторы о которых вы говорите?

Mislaid
622
Mislaid 2010.11.11 16:37  
Stellarspace:

Да, здорово! все заработало, я не знал об этой функции.

Ф как добавить операторы о которых вы говорите?



Сейчас надо уходить. Нет времени. Это решалось много раз. Попробуйте поиск.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий