Скачать MetaTrader 5

Допустим ли такой синтаксис?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью. Миллионы трейдеров ждут хороших идей!
Дмитрий
1460
Дмитрий 2011.01.14 22:54 
  string s[5] = {"EUR","USD","GBP","CHF","JPY"};
  string t[8] = {"M1","M5","M15","M30","H1","H4","D1","W1"};
  int tf[8] = {1,5,15,30,60,240,1440,10080};


  for(symb=1;symb>=5;symb++)
     {
     for(time=1;time>=8;time++)
       {
       ObjectCreate (s[symb]+t[time]+"C", OBJ_LABEL, 0, 0, 0);
       ObjectSet    (s[symb]+t[time]+"C", OBJPROP_XDISTANCE, time*100);      
       ObjectSet    (s[symb]+t[time]+"C", OBJPROP_YDISTANCE, 50+symb*40);
       ObjectSet    (s[symb]+t[time]+"C", OBJPROP_CORNER, 0);
       ObjectCreate (s[symb]+t[time]+"D", OBJ_LABEL, 0, 0, 0);
       ObjectSet    (s[symb]+t[time]+"D", OBJPROP_XDISTANCE, 50+time*100);      
       ObjectSet    (s[symb]+t[time]+"D", OBJPROP_YDISTANCE, 50+symb*40); //????_??????_???????
       }
     }
   
   for(symb=1;symb>=5;symb++)
     {
     for(time=1;time>=8;time++)
       {
       double cur=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,0);
       double prev=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,1);
       double delta=cur-prev;
       if(cur>=0)color colorc=Green;
       if(delta>=0)color colord=Green;
       if(cur<0)colorc=Red;
       if(delta<0)colord=Red;
       ObjectSetText(s[symb]+t[time]+"C",DoubleToStr(cur*100,2),20,"Arial",colorc); 
       ObjectSetText(s[symb]+t[time]+"D",DoubleToStr(delta*100,2),20,"Arial",colord); 
       }
     }
o_o
Модератор
23724
o_o 2011.01.14 22:56  

это вопрос компилятору

Дмитрий
1460
Дмитрий 2011.01.14 22:58  
Он сказал что все должно работать:) На деле же ноль на выходе.
o_o
Модератор
23724
o_o 2011.01.14 22:59  

что то не вижу выхода.

Vladyslav Goshkov
2074
Vladyslav Goshkov 2011.01.14 23:01  
grell:

Выход за пределы массивов: элементы 5 и 8 не существуют и Вы пропустили первые элементы массивов - массивы индексируются от нуля.
o_o
Модератор
23724
o_o 2011.01.14 23:01  

и кстати - у вас тут неправильно

   for(symb=1;symb>=5;symb++)
     {
     for(time=1;time>=8;time++)
       {
       double cur=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,0);
Дмитрий
1460
Дмитрий 2011.01.14 23:03  

Таблица не заполнена.

Дмитрий
1460
Дмитрий 2011.01.14 23:07  
Исправил, но в списке объектов нет этих объектов, тех что в двух циклах.
Aleksey Lebedev
6058
Aleksey Lebedev 2011.01.14 23:11  
grell:
Он сказал что все должно работать:) На деле же ноль на выходе.

так и должно быть)

for(symb=0;symb<5;symb++)

и т.д.

Дмитрий
1460
Дмитрий 2011.01.14 23:17  
#property indicator_chart_window
extern int       period=16;
int init()
  {
  return(0);
  }
int deinit()
  {
  ObjectDelete("EUR");
  ObjectDelete("GBP");
  ObjectDelete("USD");
  ObjectDelete("CHF");
  ObjectDelete("JPY");
  ObjectDelete("M1");
  ObjectDelete("M5");
  ObjectDelete("M15");
  ObjectDelete("M30");
  ObjectDelete("H1");
  ObjectDelete("H4");
  ObjectDelete("D1");
  ObjectDelete("W1");
  return(0);
  }
int start()
  {
  string s[5] = {"EUR","USD","GBP","CHF","JPY"};
  string t[8] = {"M1","M5","M15","M30","H1","H4","D1","W1"};
  int tf[8] = {1,5,15,30,60,240,1440,10080};
     for(int symb=0;symb>5;symb++)
     {
     for(int time=0;time>8;time++)
       {
       ObjectDelete(s[symb]+t[time]+"C"); 
       ObjectDelete(s[symb]+t[time]+"D"); 
       }
     }
   ObjectCreate ("EUR", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("EUR", OBJPROP_XDISTANCE, 10);      
   ObjectSet    ("EUR", OBJPROP_YDISTANCE, 40);
   ObjectSet    ("EUR", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("USD", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("USD", OBJPROP_XDISTANCE, 10);      
   ObjectSet    ("USD", OBJPROP_YDISTANCE, 80);
   ObjectSet    ("USD", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("GBP", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("GBP", OBJPROP_XDISTANCE, 10);      
   ObjectSet    ("GBP", OBJPROP_YDISTANCE, 120);
   ObjectSet    ("GBP", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("CHF", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("CHF", OBJPROP_XDISTANCE, 10);      
   ObjectSet    ("CHF", OBJPROP_YDISTANCE, 160);
   ObjectSet    ("CHF", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("JPY", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("JPY", OBJPROP_XDISTANCE, 10);      
   ObjectSet    ("JPY", OBJPROP_YDISTANCE, 200);
   ObjectSet    ("JPY", OBJPROP_CORNER, 0); //????_??????_???????
   
   ObjectCreate ("M1", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("M1", OBJPROP_XDISTANCE, 100);      
   ObjectSet    ("M1", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("M1", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("M5", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("M5", OBJPROP_XDISTANCE, 200);      
   ObjectSet    ("M5", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("M5", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("M15", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("M15", OBJPROP_XDISTANCE, 300);      
   ObjectSet    ("M15", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("M15", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("M30", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("M30", OBJPROP_XDISTANCE, 400);      
   ObjectSet    ("M30", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("M30", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("H1", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("H1", OBJPROP_XDISTANCE, 500);      
   ObjectSet    ("H1", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("H1", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("H4", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("H4", OBJPROP_XDISTANCE, 600);      
   ObjectSet    ("H4", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("H4", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("D1", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("D1", OBJPROP_XDISTANCE, 700);      
   ObjectSet    ("D1", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("D1", OBJPROP_CORNER, 0); //????_??????_???????
   ObjectCreate ("W1", OBJ_LABEL, 0, 0, 0);// ???????? ???.
   ObjectSet    ("W1", OBJPROP_XDISTANCE, 800);      
   ObjectSet    ("W1", OBJPROP_YDISTANCE, 10);
   ObjectSet    ("W1", OBJPROP_CORNER, 0); //????_??????_???????

   for(symb=0;symb>5;symb++)
     {
     for(time=0;time>8;time++)
       {
       ObjectCreate (s[symb]+t[time]+"C", OBJ_LABEL, 0, 0, 0);// ???????? ???.
       ObjectSet    (s[symb]+t[time]+"C", OBJPROP_XDISTANCE, time*100);      
       ObjectSet    (s[symb]+t[time]+"C", OBJPROP_YDISTANCE, 50+symb*40);
       ObjectSet    (s[symb]+t[time]+"C", OBJPROP_CORNER, 0); //????_??????_???????
       ObjectCreate (s[symb]+t[time]+"D", OBJ_LABEL, 0, 0, 0);// ???????? ???.
       ObjectSet    (s[symb]+t[time]+"D", OBJPROP_XDISTANCE, 50+time*100);      
       ObjectSet    (s[symb]+t[time]+"D", OBJPROP_YDISTANCE, 50+symb*40);
       ObjectSet    (s[symb]+t[time]+"D", OBJPROP_CORNER, 0); //????_??????_???????
       }
     }
   for(symb=0;symb>5;symb++)
     {
     for(time=0;time>8;time++)
       {
       double cur=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,0);
       double prev=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,1);
       double delta=cur-prev;
       if(cur>=0)color colorc=Green;
       if(delta>=0)color colord=Green;
       if(cur<0)colorc=Red;
       if(delta<0)colord=Red;
       ObjectSetText(s[symb]+t[time]+"C",DoubleToStr(cur*100,2),20,"Arial",colorc); 
       ObjectSetText(s[symb]+t[time]+"D",DoubleToStr(delta*100,2),20,"Arial",colord); 
       }
     }


  ObjectSetText("EUR","EUR",20,"Arial",Yellow); 
  ObjectSetText("USD","USD",20,"Arial",Green); 
  ObjectSetText("GBP","GBP",20,"Arial",Blue); 
  ObjectSetText("CHF","CHF",20,"Arial",Magenta); 
  ObjectSetText("JPY","JPY",20,"Arial",Red); 
  ObjectSetText("M1","M1",20,"Arial",White); 
  ObjectSetText("M5","M5",20,"Arial",White); 
  ObjectSetText("M15","M15",20,"Arial",White); 
  ObjectSetText("M30","M30",20,"Arial",White); 
  ObjectSetText("H1","H1",20,"Arial",White); 
  ObjectSetText("H4","H4",20,"Arial",White); 
  ObjectSetText("D1","D1",20,"Arial",White); 
  ObjectSetText("W1","W1",20,"Arial",White); 
   return(0);
  }
//+------------------------------------------------------------------+

Короче, чтобы не водить никого за нос, вот код, вместо моих мульти_1 можно просто машки сунуть. Просто парадокс, по логике ведь все должно работать, где же подвох.

Пы. Сы На счет пятницы даже не заикайтесь:)))

Aleksey Lebedev
6058
Aleksey Lebedev 2011.01.14 23:28  

и здесь:

       double cur=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,0);
       double prev=iCustom(s[symb],tf[time],"Multi_1",period,symb-1,1);

-1 не надо.


пятница? :)

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий