Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 98

 
evillive:
Ужасы какие тут пишутся, воздержусь пока от обновления выше 553...

У меня начались проблемы с выводом графических объектов. В одном месте кода функция

//+----------------------------------------------------------------------------+
void SetTLine(color cl, int wnd, string nm="",
              datetime t1=0, double p1=0, datetime t2=0, double p2=0,
              bool ry=False, int st=0, int wd=1) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, wnd, 0,0, 0,0);
   ObjectSet(nm, OBJPROP_TIME1 , t1);
   ObjectSet(nm, OBJPROP_PRICE1, p1);
   ObjectSet(nm, OBJPROP_TIME2 , t2);
   ObjectSet(nm, OBJPROP_PRICE2, p2);
   ObjectSet(nm, OBJPROP_COLOR , cl);
   ObjectSet(nm, OBJPROP_RAY   , ry);
   ObjectSet(nm, OBJPROP_STYLE , st);
   ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+----------------------------------------------------------------------------+

вызываемая таким образом:

//==============================================================================
// --------------------------------- Данные -----------------------------------+
//==============================================================================
   if(DrawGraphics) {                           // если рисуем графические объекты
      wnd=WindowFind("i_StdDev("+sdperiod+")"); // номер окна индикатора
      if(wnd>0) {                               // если индикатор на графике, нарисуем метку
         nm=Prefix+"_Текущий бар";
         p1=WindowPriceMax(wnd); p2=WindowPriceMin(wnd);
         SetTLine(Blue,wnd,nm,Time[0],p1,Time[0],p2,false,2);
         }
      }
//-----------------------------------------------------------------------------+   

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


Когда же вызываю эту же функцию из другого места кода таким вот образом:

   if(op==OP_SELLSTOP) {
      pp=MathMin(Low[x],Low[x-1])-distanceSetOrders*PointX;
      b=iLowest(sy,tf,MODE_LOW,2,(x-1));
      if(pb-level*Point>pp) {
         ll=LotsS;
         if(StopLoss==0) sl=0;
         else sl=NormalizeDouble(MathMax(pp+StopLoss*PointX, pp+(level+1)*Point),dg);
         if(TakeProfit==0) tp=0;
         else tp=NormalizeDouble(MathMin(pp-TakeProfit*PointX, pp-(level+1)*Point),dg);
         co="Отложенный";
         Message("Кто звал? Чё..., ставить? Ставлю SellStop относительно бара "+b+
                 ", от "+DoubleToStr(pp,dg)+" до "+DoubleToStr(Low[b],dg)+" рисую линию");
         SetOrder(sy, OP_SELLSTOP, ll, pp, sl, tp, mn1, co);
         if(DrawGraphics) {
            nm=Prefix+"_Наименьшая цена_"+TimeToStr(Time[b]);
            SetTLine(FireBrick,0,nm,Time[b],Low[b],Time[b],pp,false,3);
            }
         }
      }

, чтобы она мне отметила на графике бар, от которого рассчитывается уровень установки отложки, то, как ни странно, передаваемые параметры в неё показывают истинные верные значения, в имени трендовой линии вписано время бара, но сама линия имеет все значения по нулям, да ещё и отображение как "Луч", хотя в параметр функции, отвечающий за эту опцию передаю false - не луч:


Ошибку в коде не вижу. Может-таки глюк?
 
Кажется графику совсем убили... никакие кнопки не ввыводятся на экран. Ничего не делал, просто перезагрузил терминал, и советники висевшие на графиках и нормально отрисовывавшие все графические объекты умерли. Несколько дней жду исправление графических объектов.... хммм.... дождался.... Называется, за что боролись, на то и напоролись. :) Придется ждать нового билда.
 
А вы перекомпилировали программы новым билдом?
 
artmedia70:

У меня начались проблемы с выводом графических объектов. В одном месте кода функция

вызываемая таким образом:

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


Когда же вызываю эту же функцию из другого места кода таким вот образом:

, чтобы она мне отметила на графике бар, от которого рассчитывается уровень установки отложки, то, как ни странно, передаваемые параметры в неё показывают истинные верные значения, в имени трендовой линии вписано время бара, но сама линия имеет все значения по нулям, да ещё и отображение как "Луч", хотя в параметр функции, отвечающий за эту опцию передаю false - не луч:


Ошибку в коде не вижу. Может-таки глюк?
Добавьте распечатку всех параметров внутри функции SetTLine.
 

И в новь вопрос по срокам ... Когда будет полностью запущен Маркет ??? Когда будет глобальное обновление ???

В конце ноября говорили о месяце тестов, но уже декабрь в разгаре ....

 

Ренат,

а планируется ли в ближайшем будущем в новом МЕ4 поддержка

ENUM_ANCHOR_POINT и ENUM_LINE_STYLE ?

Спасибо.

 
Wahoo:

Ренат,

а планируется ли в ближайшем будущем в новом МЕ4 поддержка

ENUM_ANCHOR_POINT и ENUM_LINE_STYLE ?

Да, будут. Графическая модель будет такая же как в MQL5.

Мы с каждым билдом добавляем и улучшаем графические функции.

 

Один из брокеров (как минимум один) при выпуске новых, особенно с значительными новшествами, билдов МТ4 сначала обкатывает их на демо, а потом уже внедряет на реале.

В связи с наблюдающимся у некоторых бета-тестеров непроизвольным семяизверж обновлением соседних терминалов можно ли быть уверенным, что при нахождении на одном компьютре (или VPS) терминалов с демо и с реалом эту тактику удастся соблюсти во время внедрения этих изменений? Или одна папка, из которой осуществляется управление обновлением всех терминалов в системе и которую выше рекомендуют удалять "во избежание", оставляет только два выбора: всё или ничего?

 

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

Они все обновятся автоматически. как только хотя бы одна копия на компе получит обновления.