Графика

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
183484
Vladimir Karputov  
Влад. Влад.:

Пытаюсь считать построенные линии на графике скриптом для записи файлов бин потом пытаюсь вывести через скрипт этот бин файл на график не получается

что не правильно где ошибка

Справка: "Как правильно вставить код".

Vladimir Andreev
157
Vladimir Andreev  
Vladimir Karputov:

Справка: "Как правильно вставить код".

Благодарен за ответ но вы то написали как код вставить в форум, а мне надо коды скриптов которые считывают эти линии с графика а потом выводят на график , ну с выводом  я разберусь а вот считывание пользуюсь этим  похоже что то не так им делают пользовательские панели https://www.mql5.com/ru/articles/62

//+------------------------------------------------------------------+
//|                                  Component properties writer.mq5 |
//|              Copyright Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs

input int interfaceID=0; //входной параметр - идентификатор сохраняемого интерфейса
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   //откроем файл для записи   
   int handle=FileOpen("Active_Panel_scheme_"+IntegerToString(interfaceID)+".bin", FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //переберём все объекты на экране
      for(int i=0;i<ObjectsTotal(0);i++)
        {
         string name=ObjectName(0,i);
         //и запишем их свойства в файл
         FileWriteString(handle,name,100);
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_TYPE));

         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_XDISTANCE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_YDISTANCE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_XSIZE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_YSIZE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_COLOR));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_STYLE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_WIDTH));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_BACK));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_SELECTED));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_SELECTABLE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_READONLY));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_FONTSIZE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_STATE));
         FileWriteInteger(handle,ObjectGetInteger(0,name,OBJPROP_BGCOLOR));

         FileWriteString(handle,ObjectGetString(0,name,OBJPROP_TEXT),100);
         FileWriteString(handle,ObjectGetString(0,name,OBJPROP_FONT),100);
         FileWriteString(handle,ObjectGetString(0,name,OBJPROP_BMPFILE,0),100);
         FileWriteString(handle,ObjectGetString(0,name,OBJPROP_BMPFILE,1),100);

         FileWriteDouble(handle,ObjectGetDouble(0,name,OBJPROP_PRICE));
        }
      //закроем файл
      FileClose(handle);
      Alert("Done!");
     }
  }
//+------------------------------------------------------------------+
Создание активных панелей управления на MQL5 для торговли
Создание активных панелей управления на MQL5 для торговли
  • www.mql5.com
Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
Vladimir Andreev
157
Vladimir Andreev  
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   int h=FileOpen("Active_Panel_scheme_23.bin",FILE_WRITE|FILE_BIN);
   if(h==INVALID_HANDLE)
      Alert("Ошибка открытия файла");
      return;
   }   

Мой скрипт вывода BIN файла на график

Алексей Тарабанов
9798
Алексей Тарабанов  
Влад. Влад.:

Мой скрипт вывода BIN файла на график

Почему Open, отчего Bin, зачем Wright? 

Учиться, учиться и еще раз учиться. Недолго, лет 5-7. 

Vladimir Andreev
157
Vladimir Andreev  
Алексей Тарабанов:

Почему Open, отчего Bin, зачем Wright? 

Учиться, учиться и еще раз учиться. Недолго, лет 5-7. 

Вот ищу учителей )))  5-7 это ты загнул

"Учиться ,Учиться и Учиться (подразумевают всю жизнь) как завещал великий Ленин" 

Vladimir Andreev
157
Vladimir Andreev  
Алексей Тарабанов:

Почему Open, отчего Bin, зачем Wright? 

Учиться, учиться и еще раз учиться. Недолго, лет 5-7. 

Скрипт вывода правильный? ( там просто вывел бин файл и все)считать с графика  не могу

pavlick_
773
pavlick_  
void act(bool save // true если сохраняем
        )
{
   int hnd = FileOpen("file_name", save ? FILE_WRITE|FILE_BIN : FILE_READ|FILE_BIN);
   if(hnd == INVALID_HANDLE)
      return;

   long lp[33];
   double dp[23];
   ArrayInitialize(lp, 0);
   ArrayInitialize(dp, 0);
#define MYSETGETFN(PROP, MODIF, VAR, SW, SUF)  Object##SW##SUF(0,name,PROP,MODIF,VAR)
#define MYSETGET(SW)                                                             \
{                                                                                \
   MYSETGETFN(OBJPROP_TIME,       0, lp[1],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_TIME,       1, lp[2],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_TIME,       2, lp[3],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_COLOR,      0, lp[4],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_STYLE,      0, lp[5],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_WIDTH,      0, lp[6],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_BACK,       0, lp[7],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_FILL,       0, lp[8],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_SELECTABLE, 0, lp[9],  SW, Integer);                       \
   MYSETGETFN(OBJPROP_RAY_RIGHT,  0, lp[10], SW, Integer);                       \
   MYSETGETFN(OBJPROP_RAY_LEFT,   0, lp[11], SW, Integer);                       \
   MYSETGETFN(OBJPROP_LEVELS,     0, lp[12], SW, Integer);                       \
   MYSETGETFN(OBJPROP_PRICE,      0, dp[0],  SW, Double);                        \
   MYSETGETFN(OBJPROP_PRICE,      1, dp[1],  SW, Double);                        \
   MYSETGETFN(OBJPROP_PRICE,      2, dp[2],  SW, Double);                        \
   string tmp_str;                                                               \
   for(int pos = 0;  pos < (int)lp[12];  ++ pos)                                 \
   {                                                                             \
      MYSETGETFN(OBJPROP_LEVELVALUE, pos, dp[ArraySize(dp)-1-pos], SW, Double);  \
      MYSETGETFN(OBJPROP_LEVELCOLOR, pos, lp[ArraySize(lp)-1-pos], SW, Integer); \
      tmp_str = DoubleToString(dp[ArraySize(dp)-1-pos]*100, 1);                  \
      MYSETGETFN(OBJPROP_LEVELTEXT, pos, tmp_str, SW, String);                   \
   }                                                                             \
}

   if(save)
   {
      string name;
      for(int i = ObjectsTotal(0, 0) - 1;  i >= 0;  -- i)
      {
         name = ObjectName(0, i, 0);

         lp[0] = ObjectGetInteger(0, name, OBJPROP_TYPE);
         MYSETGET(Get);
         FileWriteInteger(hnd, StringLen(name));
         FileWriteString(hnd, name);
         FileWriteArray(hnd, lp);
         FileWriteArray(hnd, dp);
      }
   }
   else
   {
      string name;
      long min_time = LONG_MAX, max_time = LONG_MAX;
      while( ! FileIsEnding(hnd) )
      {
         int namesz = (int)FileReadInteger(hnd);
         name = FileReadString(hnd, namesz);
         FileReadArray(hnd, lp);
         FileReadArray(hnd, dp);
       //  lp[4] = (color)lp[4];   // Because ObjectGetInteger works incorrectly.

         ObjectCreate(0, name, (ENUM_OBJECT)lp[0], 0, 0, 0, 0, 0, 0, 0);
         MYSETGET(Set);
      }
   }

   FileClose(hnd);

#undef MYSETGETFN
#undef MYSETGET
}
Vladimir Andreev
157
Vladimir Andreev  
pavlick_:

Благодарен ,что проявили интерес к моей теме, но поясните пожалуйста ваш код считывает с графика или помогает вывести  файл бин в окно графика

pavlick_
773
pavlick_  
и то и другое. Если save == true, то сохраняем объекты в файл, иначе - объекты из файла на график.
Vladimir Andreev
157
Vladimir Andreev  
pavlick_:
и то и другое. Если save == true, то сохраняем объекты в файл, иначе - объекты из файла на график.

Ох уж этот метод научного тыка при компиляции ошибки у меня

void act(bool save // true если сохраняем
'act' - function can be declared only in the global scope       LmnmxAUD_USD.mq5        13      8

мне надо глобальную область ему(скрипту) написать прежде

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