MetaTrader 4 build 184 - страница 3

 
Slawa
Чтобы Вам не тратить время на написание...
int init()   { return; }
int deinit() { return; }

int start()
{
  if(ObjectFind("Angle")==-1)
  { ObjectCreate("Angle",OBJ_TRENDBYANGLE,0,Time[12],Close[12]); }

  ObjectMove("Angle",0,Time[12],Close[12]);
  ObjectSet ("Angle",OBJPROP_RAY,false);
  ObjectSet ("Angle",OBJPROP_TIME2,Time[0]);
  ObjectSet ("Angle",OBJPROP_PRICE2,Close[0]);
  ObjectSet ("Angle",OBJPROP_COLOR,Aqua);

  double angle=ObjectGet("Angle",OBJPROP_ANGLE);

  ObjectSetText("Angle",DoubleToStr(angle,1));

  Print("Угол: ",angle);
  Comment("Угол: ",angle);

  return(0);
}
 
Slawa
Чтобы Вам не тратить время на написание...

спасибо
 
Возник вопрос - что такое LocalTime() ? Компьютерные часы показывают 00:54, а LocalTime() - 01:54
 
Возник вопрос - что такое LocalTime() ? Компьютерные часы показывают 00:54, а LocalTime() - 01:54

это из-за того, что на зимнее время перевели.. а МТ - не перевёл
 
Возник вопрос - что такое LocalTime() ? Компьютерные часы показывают 00:54, а LocalTime() - 01:54

это из-за того, что на зимнее время перевели.. а МТ - не перевёл

Похоже на правду, особенно с учётом того, что разница на 1 час. Но однако я никогда раньше не проверял LocalTime(), т.к. был уверен, что берётся системное время. Чо-т тут не совсем понятно...
 
Похоже на правду, особенно с учётом того, что разница на 1 час. Но однако я никогда раньше не проверял LocalTime(), т.к. был уверен, что берётся системное время. Чо-т тут не совсем понятно...

зато я проверял =)
время сбилось именно в день переведения часов
 
Похоже на правду, особенно с учётом того, что разница на 1 час. Но однако я никогда раньше не проверял LocalTime(), т.к. был уверен, что берётся системное время. Чо-т тут не совсем понятно...

зато я проверял =)
время сбилось именно в день переведения часов

Тогда какой же это LocalTime?
А разработчики что-то скажут?
 
Тогда какой же это LocalTime?
А разработчики что-то скажут?

уже исправили. в следующем билде будет
 
Слава, пожалуйста, поправьте TrendByAngle. Вот этот скрипт позволяет наипростейшим образом увидеть картину. Когда линия перемещается, 10 сек. вполне достаточно, чтобы сходить в свойства и увидеть там другое значение угла, отличное от того, которое выводится на самой линии. И увидеть, что это значение будет выведено при следующем перемещении, а в свойствах снова будет другое.
//+------------------------------------------------------------------+
void deinit()
{
  ObjectDelete("Angle");
  ObjectsRedraw();
}
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
  int    index=120;
  double angle;

  if(ObjectFind("Angle")==-1)
  { ObjectCreate("Angle",OBJ_TRENDBYANGLE,0,Time[12],Close[12]); }

  ObjectSet ("Angle",OBJPROP_RAY,false);
  ObjectSet ("Angle",OBJPROP_COLOR,Aqua);
  ObjectSet ("Angle",OBJPROP_WIDTH,3);

  while(IsStopped()==false)
  {
    RefreshRates();

    Comment(Close[0]);

    ObjectMove("Angle",0,Time[index], Close[index]);
    ObjectSet ("Angle",OBJPROP_TIME2,  Time[index-12]);
    ObjectSet ("Angle",OBJPROP_PRICE2,Close[index-12]);

    angle=ObjectGet("Angle",OBJPROP_ANGLE);
    ObjectSetText("Angle",DoubleToStr(angle,1));
    index--;
    
    if(index==12) index=120;

    Sleep(10000);
  }

  return(0);
}
//+------------------------------------------------------------------+


На текущий момент я выкрутился. Сделал скрипт, который постоянно считывает значение из TrendByAngle. Первое значение не верное, второе (через 1-2 сек.) верное. Но это же не выход. =(

 
avm, проблема с линией по углу оказалась сложнее, чем предполагалось. вкратце. сейчас управление этой линией идёт двояко - через задание угла и через задание одной из двух точек. то есть, фактически 3 способа управления. из-за этого получается путаница, в общем, перемудрили. на самом деле, у линии по углу должна быть одна точка, длина линии и угол наклона. такой набор управляемых свойств обеспечивает однозначность. для того, чтобы решить проблему, необходимо переделать объект именно так, другие решения будут заплаточными. в ближайшее будущее исправлений не будет - есть пока более важные задачи.