Как сделать перерасчет при новом тике? - страница 2

 
Alexey Viktorov:
Это не намёк. Это сказано открытым текстом. Вот решение вашего вопроса.

спасибо) но.... вы не правы, я изучил ветку, в которой вы мне активно помогали(за что спасибо отдельное)
но.... после этого я спросил а как быть если нужно эту информацию запихать в кнопку, вы сказали что бы я тогда оставил только по нажатию на кнопку(тобишь как я понял изменение действует только при перемещении графика), в итоге! я делал по всякому, как вы советовали и пытался сам, но так и не разобрался как же правильно сделать, ибо нужно чтобы работало так:

Код в OnCalculate() только для того, чтобы при изменении цены происходило смещение lable, а в OnChartEvent() для того-же действия при перемещении графика. 

так вот:

чтобы при изменении цены происходило смещение lable

так вот на это, я так и не нашёл ответ.

P.S я пытаюсь изучить язык, попал в трудную ситуацию, пытаюсь сам разобраться, когда не получается - задаю вопрос тут и когда помогают у меня "не мимо ушей всё проносится"

Пожалуйста ответьте: как можно сделать обновление информации при смещении цены не используя OnCalculate()

 
Правильно, я имею ввиду чтобы всё было через кнопку(показ через кнопку), а отображалось и при изменении цены и при перемещении графика
 
vebster005:

спасибо) но.... вы не правы, я изучил ветку, в которой вы мне активно помогали(за что спасибо отдельное)
но.... после этого я спросил а как быть если нужно эту информацию запихать в кнопку, вы сказали что бы я тогда оставил только по нажатию на кнопку(тобишь как я понял изменение действует только при перемещении графика), в итоге! я делал по всякому, как вы советовали и пытался сам, но так и не разобрался как же правильно сделать, ибо нужно чтобы работало так:

так вот:

так вот на это, я так и не нашёл ответ.

P.S я пытаюсь изучить язык, попал в трудную ситуацию, пытаюсь сам разобраться, когда не получается - задаю вопрос тут и когда помогают у меня "не мимо ушей всё проносится"

Пожалуйста ответьте: как можно сделать обновление информации при смещении цены не используя OnCalculate()

Когда не получается публикуйте тот код где не получается, чтобы было видно что сделано и задавайте вопросы так, чтобы было понятно чего хотели добиться.

Чтобы не использовать OnCalculate определитесь с другим обработчиком событий. Выберите какой больше вам понятен.

Попросите барабашку, ему всё-равно делать нечего, чтобы он объединил все ваши темы в одну чтобы легче было ориентироваться в ваших попытках разобраться в языке.

 
Alexey Viktorov:

Когда не получается публикуйте тот код где не получается, чтобы было видно что сделано и задавайте вопросы так, чтобы было понятно чего хотели добиться.

Чтобы не использовать OnCalculate определитесь с другим обработчиком событий. Выберите какой больше вам понятен.

Попросите барабашку, ему всё-равно делать нечего, чтобы он объединил все ваши темы в одну чтобы легче было ориентироваться в ваших попытках разобраться в языке.

дело в том что эти темы связаны, а создаю новые потому что на старых нету нужного ответа, вот и всё, ах да и барашка тут ни при чем

 
vebster005:

дело в том что эти темы связаны, а создаю новые потому что на старых нету нужного ответа, вот и всё, ах да и барашка тут ни при чем

Не нужно создавать кучку однотипных новых тем. Вам отвечают, но вы уже в другой теме. В другой ответили, а вы уже в третьей... Зачем?

Есть темы для новичков, и в них активно помогают новичкам. Но вы мечетесь в разные стороны и не видите ответов.

Вот вам темы. Выберите одну вам подходящую и пробуйте там общаться с теми, кто вам отвечает:

  1. https://www.mql5.com/ru/forum/160683
  2. https://www.mql5.com/ru/forum/6343
  3. https://www.mql5.com/ru/forum/160587

Либо оставайтесь в этой и задавайте свои вопросы. Но зачем создавать одинаковые темы для всего одного вопроса?

 
Artyom Trishkin:

Либо оставайтесь в этой и задавайте свои вопросы. Но зачем создавать одинаковые темы для всего одного вопроса?

Это самое разумное. В тех темах ссылки на которые ты дал, вопрос потеряется гораздо быстрей. Даже быстрей чем он создаёт новые темы. А в теме №3 я из вредности отвечать не буду. Хотя, пока мне кажется что это бесперспективный случай. Хоть одна тема, хоть семь, хоть в трёх перечисленных....

 
vebster005:

дело в том что эти темы связаны, а создаю новые потому что на старых нету нужного ответа, вот и всё, ах да и барашка тут ни при чем

Я не говорил барашка.

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

 

Пожалуйста посмотрите что я не так сделал? Всё работает как я и хотел но как всегда есть, НО, бывает секунды замрут и потом резко догоняют время терминала
Что не так я сделал? Или это максимум что можно получить?

по сути сделал так как сказал "Alexey Viktorov" но... в общем посмотрите пожалуйста

вот код:

#property copyright "Copyright 2014, ForexDE"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window

string s1="";

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{

   PutButton("B",50,50,"KNOPKA");
   
   if(DayOfWeek()==1)
      s1="Понедельник  /  ";
   if(DayOfWeek()==2)
      s1="Вторник  /  ";
   if(DayOfWeek()==3)
      s1="Среда  /  ";
   if(DayOfWeek()==4)
      s1="Четверг  /  ";
   if(DayOfWeek()==5)
      s1="Пятница  /  ";
   if(DayOfWeek()==6)
      s1="Суббота  /  ";
   if(DayOfWeek()==0)
      s1="Воскресенье  /  ";

   ObjectCreate("WeekDay1",OBJ_LABEL,0,0,0);          
   ObjectSet("WeekDay1",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSet("WeekDay1",OBJPROP_XDISTANCE,5);
   ObjectSet("WeekDay1",OBJPROP_YDISTANCE,2);
   ObjectSet("WeekDay1",OBJPROP_SELECTABLE,false);
   ObjectSet("WeekDay1",OBJPROP_HIDDEN,true);
   ObjectSet("WeekDay1",OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSet("WeekDay1",OBJPROP_COLOR,Black);
   ObjectSet("WeekDay1",OBJPROP_SELECTABLE,false);
   ObjectSet("WeekDay1",OBJPROP_SELECTED,false);
   ObjectSetText("WeekDay1",s1+TimeToString(CurTime(),TIME_DATE)+"  -  " +TimeToString(CurTime(),TIME_SECONDS),13,"Arial",Red);
   
   return(INIT_SUCCEEDED);
}
/****************Custom indicator iteration function*****************/
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
 {
 
   if(DayOfWeek()==1)
      s1="Понедельник  /  ";
   if(DayOfWeek()==2)
      s1="Вторник  /  ";
   if(DayOfWeek()==3)
      s1="Среда  /  ";
   if(DayOfWeek()==4)
      s1="Четверг  /  ";
   if(DayOfWeek()==5)
      s1="Пятница  /  ";
   if(DayOfWeek()==6)
      s1="Суббота  /  ";
   if(DayOfWeek()==0)
      s1="Воскресенье  /  ";
 
   ObjectSetText("WeekDay1",s1+TimeToString(CurTime(),TIME_DATE)+"  -  " +TimeToString(CurTime(),TIME_SECONDS),13,"Arial",Red);

  return(rates_total);
 }/*******************************************************************/

/********************************************************************/
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
 {

  if(id == CHARTEVENT_CLICK)
   {
   
         if(!ObjectGetInteger(0,"B",OBJPROP_STATE,false))
           {
   ObjectSet("WeekDay1",OBJPROP_XDISTANCE,7000); // скрываю 
           }
         else
           {
   ObjectSet("WeekDay1",OBJPROP_XDISTANCE,5);    // показываю обратно
           }
   


   }
   
 }
/*******************************************************************/
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
Alexey Viktorov
Alexey Viktorov
  • www.mql5.com
Выставил продукт Советник локирует убыточную позицию или сетку с указанным Magic number и в дальнейшем пытается свести убыток к нулю, или минимуму. Продолжительность операции зависит от параметров советника и может продолжаться от нескольких дней до нескольких месяцев. Параметры советника и их назначение: What position is locked            ...
 
vebster005:

Пожалуйста посмотрите что я не так сделал? Всё работает как я и хотел но как всегда есть, НО, бывает секунды замрут и потом резко догоняют время терминала
Что не так я сделал? Или это максимум что можно получить?

по сути сделал так как сказал "Alexey Viktorov" но... в общем посмотрите пожалуйста

вот код:

CurTime()

Это что?

 
vebster005:

Спасибо, а подскажите пожалуйста как сделать обновление при тики если код находится в OnChartEvent

Вызвать ChartSetSymbolPeriod(), но работает ли это в МТ4 не знаю, пока не пробовал, в МТ5 работает.