MetaTrader 4 Build 529 beta liberado con nuevo compilador - página 98

 
evillive:
Qué horrores se escriben aquí, me abstendré de actualizar por encima del 553 por el momento...

He empezado a tener problemas con la salida de objetos gráficos. En un punto del código, una función

//+----------------------------------------------------------------------------+
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);
}
//+----------------------------------------------------------------------------+

llamado así:

//==============================================================================
// --------------------------------- Данные -----------------------------------+
//==============================================================================
   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);
         }
      }
//-----------------------------------------------------------------------------+   

emite una línea de tendencia vertical en la ventana del indicador sin ningún problema (marco la barra cero para facilitar la percepción visual de los puntos del indicador durante la depuración):


Cuando llamo a la misma función desde otro lugar del código como este:

   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);
            }
         }
      }

marca en el gráfico la barra a partir de la cual se calcula el nivel de la orden pendiente, entonces, por extraño que parezca, los parámetros que se le pasan muestran valores verdaderos y correctos; la hora de la barra se escribe en el nombre de la línea de tendencia, pero la línea en sí tiene todos los valores cero y además se muestra como un "Rayo", aunque yo le paso "false" al parámetro de la función, responsable de esta opción - no un rayo:


No veo ningún error en el código. ¿Podría ser un fallo?
 
Los gráficos parecen haber sido completamente eliminados... No aparecen botones en la pantalla. No he hecho nada, sólo he recargado el terminal, y los EAs que rondaban los gráficos y dibujaban todos los objetos gráficos con normalidad han muerto. Esperando unos días para arreglar los objetos gráficos.... hmmm.... A la espera de .... Así que supongo que tendré que sufrir el mismo destino. :) Habrá que esperar a la nueva construcción.
 
¿Has recompilado los programas con la nueva compilación?
 
artmedia70:

He empezado a tener problemas con la salida de los objetos gráficos. En un punto del código, una función

llamado así:

emite una línea de tendencia vertical en la ventana del indicador sin ningún problema (marco la barra cero para facilitar la percepción visual de los puntos del indicador durante la depuración):


Cuando llamo a la misma función desde otro lugar del código como este:

Puedo utilizarla para marcar la barra en el gráfico, a partir de la cual se calcula el nivel de la orden pendiente, sin embargo es extraño, los parámetros que se le pasan muestran valores verdaderos y correctos, la hora de la barra se escribe en el nombre de la línea de tendencia, pero la línea en sí tiene todos los valores cero y se muestra como un "Rayo", aunque paso falso - no un rayo - al parámetro de la función responsable de esta opción:


No veo ningún error en el código. ¿Podría ser un fallo?
Añade una impresión de todos los parámetros dentro de la función SetTLine.
 

Y de nuevo, una pregunta sobre el tiempo... ¿Cuándo se lanzará por completo el Mercado? ¿Cuándo habrá una actualización global?

Se habló de un mes de pruebas a finales de noviembre, pero diciembre ya está en pleno apogeo ....

 

Renat,

¿Hay algún plan en un futuro próximo para que el nuevo ME4 soporte

ENUM_ANCHOR_POINT y ENUM_LINE_STYLE ?

Gracias.

 
Wahoo:

Renat,

¿hay algún plan de apoyo en un futuro próximo en el nuevo ME4

ENUM_ANCHOR_POINT y ENUM_LINE_STYLE ?

Sí, lo son. El modelo gráfico será el mismo que en MQL5.

Añadimos y mejoramos las funciones gráficas con cada construcción.

 

Uno de los brokers (al menos uno) cuando se lanzan nuevas builds de MT4, especialmente con innovaciones significativas, primero las prueba en una demo, y luego las implementa en una cuenta real.

Debido al hecho de que algunos probadores de la versión beta realizan una actualización semiautomática involuntaria de los terminales vecinos, ¿podemos estar seguros de que la demo y los terminales reales, estando en un solo ordenador (o VPS), podrán observar estas tácticas durante la introducción de estos cambios? O una carpeta, desde la que se gestionan todos los terminales del sistema y que se recomienda eliminar "para evitar", deja sólo dos opciones: ¿todo o nada?

 

No ejecute pruebas o actualizaciones en ordenadores con copias de trabajo de los terminales.

Todos ellos se actualizarán automáticamente en cuanto al menos una copia en el ordenador reciba una actualización.