Скачать MetaTrader 5

Как зафиксировать объекты на текущем графике?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Все программы в Code Base доступны из MetaTrader 5. Опубликуй и ты свою!
Roman
30
Roman 2011.08.13 17:07 

На mql4 есть такой замечательный скрипт-советник, который закрепляет все объекты за таймфреймом. Допустим начертили трендовую на часовом периоде, так она только на часовом и видна. Кто нибудь знает как на mql5 его перевести?

//+------------------------------------------------------------------+
//| script program start function                                          |
//+------------------------------------------------------------------+

int start()

 

{
   string name;
   int t_f, obj_number;
   switch(Period()){
      case 1:     t_f = OBJ_PERIOD_M1;       break;
      case 5:     t_f = OBJ_PERIOD_M5;       break;
      case 15:    t_f = OBJ_PERIOD_M15;      break;
      case 30:    t_f = OBJ_PERIOD_M30;      break;
      case 60:    t_f = OBJ_PERIOD_H1;       break;
      case 240:   t_f = OBJ_PERIOD_H4;       break;
      case 1440:  t_f = OBJ_PERIOD_D1;       break;
      case 10080: t_f = OBJ_PERIOD_W1;       break;
      case 43200: t_f = OBJ_PERIOD_MN1;      break;
   }   
   while(obj_number != ObjectsTotal())
      {name = ObjectName(obj_number);            
      if(ObjectGet(name,OBJPROP_TIMEFRAMES) == 0){ObjectSet(name, OBJPROP_TIMEFRAMES, t_f);}
      obj_number++;
      }
   Comment("\n[Объекты зафиксированы на текущем графике]");
   WindowRedraw();
}
//+------------------------------------------------------------------+

Roman
30
Roman 2011.08.13 17:12  

Что-то в этом роде, только obj_number он не понимает, есть идеи?

void OnStart()
   {
   string name;
   int t_f, obj_number;

   switch(Period())

{

                    case 1:      t_f = 0x00000001;  break;

                    case 2:      t_f = 0x00000002;  break;
                    case 3:      t_f = 0x00000004;  break;
                    case 4:      t_f = 0x00000008;  break;
                    case 5:      t_f = 0x00000010;  break;
                    case 6:      t_f = 0x00000020;  break;
                    case 10:     t_f = 0x00000040;  break;
                    case 12:     t_f = 0x00000080;  break;
                    case 15:     t_f = 0x00000100;  break;
                    case 20:     t_f = 0x00000200;  break;
                    case 30:     t_f = 0x00000400;  break;
                    case 16385:  t_f = 0x00000800;  break;
                    case 16386:  t_f = 0x00001000;  break;
                    case 16387:  t_f = 0x00002000;  break;
                    case 16388:  t_f = 0x00004000;  break;
                    case 16390:  t_f = 0x00008000;  break;
                    case 16392:  t_f = 0x00010000;  break;
                    case 16396:  t_f = 0x00020000;  break;
                    case 16408:  t_f = 0x00040000;  break;
                    case 32769:  t_f = 0x00080000;  break;
                    case 49153:  t_f = 0x00100000;  break;}    
   
   while(obj_number != ObjectsTotal(0,-1,-1))
   {
      name = ObjectName(0,-1,-1,-1);//
      if(ObjectGetInteger(0,name,OBJPROP_TIMEFRAMES)==0x001fffff)
        {ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,t_f);}
      obj_number++;
   }
   Comment("\n[Объекты зафиксированы на текущем графике]");
   ChartRedraw();
}
Sergey Pavlov
8945
Sergey Pavlov 2011.08.13 17:24  
         name=Period();
         ObjectCreate(0,name,OBJ_ARROW,0,0,0);

или

         name=Period()+"какая нибудь фигня";
         ObjectCreate(0,name,OBJ_ARROW,0,0,0);

 

 

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