Ошибки, баги, вопросы - страница 2193

 
Aleksey Vyazmikin:

Как же я нарисую, что б он его перекрывал? Значок то поверх всего...

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

Можно попробовать запускать скрипт на одном графике и подставлять id графика где снимаем.

 
Dmytro Zelenskyy:

Можно попробовать запускать скрипт на одном графике и подставлять id графика где снимаем.

Это хорошая идея! Однако, как найди id другого графика, нужного нам? Где-то видел ещё вариант с созданием нового окна и разворачиванием там шаблона, который предварительно был сохранен с графика, с которого запущен скрипт... вот только где найти теперь такую конструкцию?

 
   long Tmp_ChartIDF = ChartFirst();
   
   Print(">>> ", __FUNCTION__, "  ChartFirst(). Tmp_ChartIDF= ", Tmp_ChartIDF);
   
   int nChartCount= 0;
   
   do
   {
      if(Tmp_ChartIDF != ChartID() )
      {
         nChartCount++;
         
         
        ChartSymbol(Tmp_ChartIDF), ";", 
        ChartPeriod(Tmp_ChartIDF) ), ";",
        
        
         
         Sleep(20);
      }
      
      
      
      Tmp_ChartIDF = ChartNext(Tmp_ChartIDF);
      
      Print(">>> ChartNext(Tmp_ChartIDF)= ", Tmp_ChartIDF);
   }
   while(Tmp_ChartIDF != -1 && !IsStopped() );
 

Перебор всех графиков, поиск символа, ТФ.

Код выдрал из своей совы, надо рихтовать.

 
Dmytro Zelenskyy:

Перебор всех графиков, поиск символа, ТФ.

Код выдрал из своей совы, надо рихтовать.

Спасибо - это удачный вариант, если закрыть все остальные графики, и оставить только два. Ну, по факту я использую десяток графиков с одним символом и по 2-3 с каждым TF :)

 
Aleksey Vyazmikin:

Спасибо - это удачный вариант, если закрыть все остальные графики, и оставить только два. Ну, по факту я использую десяток графиков с одним символом и по 2-3 с каждым TF :)

Серьезный подход))

Ну тогда прям на том какой хотите скринить, на нем запускаете маленький скриптик один раз, который в глобальную переменную дает id (лучше временную глобальную перемен). 

А ваш скрипт по id скринит.

 
Dmytro Zelenskyy:

Серьезный подход))

Ну тогда прям на том какой хотите скринить, на нем запускаете маленький скриптик один раз, который в глобальную переменную дает id (лучше временную глобальную перемен). 

А ваш скрипт по id скринит.

Хитрый ход!

Спасибо!
 
Dmytro Zelenskyy:

Даже если точно вычислить ширину скрина в пикселях, то скрин будет частично закрывать колонка цены.

Причем на разных разрешениях экрана она разная, у меня (1280х1024) от 50 до 60 зависит от кол-ва цифр валюты. На другом экране будет по другому.

Вот как выяснить какая ширина колонки, чтоб добавить эти пиксели к ширине скрина? (открыть в скрине то что закрыла колонка)


Привет от fxsaber:

//+------------------------------------------------------------------+
#define TOSTRING(A) #A + " = " + (string)(A) + "\n"
// Ширина вертикальной шкалы графика
int GetWidthScale(const long chartID=0)
  {
   const string Name=__FUNCTION__+(string)MathRand();

   ObjectCreate(chartID,Name,OBJ_CHART,0,0,0);
   ObjectSetInteger(chartID,Name,OBJPROP_XDISTANCE,-1e3);

   const long chart=ObjectGetInteger(chartID,Name,OBJPROP_CHART_ID);

   const int Res=(int)(ChartGetInteger(chart,CHART_WIDTH_IN_PIXELS) -
                  (ChartSetInteger(chart,CHART_SHOW,false) ? ChartGetInteger(chart,CHART_WIDTH_IN_PIXELS) : 0));

   ObjectDelete(chartID,Name);

   return(-Res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(TOSTRING(GetWidthScale()));
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Привет от fxsaber:

Дело мастера боится!!! 

Круто!

 
Artyom Trishkin:

Привет от fxsaber:

Код конечно очень интересный, но оказалось, что проблему не решает...