Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1019

 
FiVik:

No lo entiendo. ¿Cómo que no quieres?

¿Quieres el código completo? De acuerdo.

El nombre está en cirílico, por eso está en jeroglífico.

Era más fácil volver a hacerlo todo.

Archivos adjuntos:
 
Vinin:

Era más fácil rehacerlo todo

Muchas gracias por arreglar el indicador, pero me gustaría saber a qué se debe la lentitud de mi código.

No creo que se me corrija siempre de esta manera. Además, tengo que estudiar de alguna manera, y no puedes estar seguro de que no se producirá ningún error si no lo conoces.

 
FiVik:

Muchas gracias por arreglar el indicador, pero me gustaría saber a qué se debe la lentitud de mi código.

No creo que se me corrija siempre de esta manera. Además, tengo que aprender de alguna manera, y si no se conocen los errores, no se puede estar seguro de que no vuelvan a producirse.

El principal error es trabajar con los gráficos (objeto) en el bucle. Aunque sólo se necesitaba el último valor calculado.

El primer desarrollador obviamente no conocía las funciones estándar e implementó las suyas propias. No hay nada malo en esto, pero tampoco nada bueno.

 
Vinin:

Era más fácil rehacerlo todo

Por qué más simple, sólo dos reordenamientos.

Sólo

if(i==0)
{
   string Text =DoubleToStr(deviation,4);                   // Текст для отображения с указанием количества знаков ппосле запятой
      if(deviation<=(Averagedeviation*1.1)&&deviation>=(Averagedeviation*0.9))// Выбор цвета зависит от динамики
      Color_Day_Percent = Color_0;                             // Цвет для 0
      if(deviation>Averagedeviation*1.1)                       // Выбор цвета зависит от динамики
      Color_Day_Percent = Color_Up;                            // Цвет для +
      if(deviation<Averagedeviation*0.9)                       // Выбор цвета зависит от динамики
      Color_Day_Percent = Color_Dn; 
}

+

    
      i--;   
     }
   if(ObjectFind(Obj_Name)==-1)                             // Если объекта нет..
      {
      ObjectCreate(Obj_Name,OBJ_LABEL,0,0,0);                  // Создаём новый объект 
      ObjectSet    (Obj_Name,OBJPROP_CORNER,    1);            // Угол привязки            
      ObjectSet    (Obj_Name,OBJPROP_XDISTANCE,15);            // Координата Х
      ObjectSet    (Obj_Name,OBJPROP_YDISTANCE,15);            // Координата Y
      }
      ObjectSetText(Obj_Name,Text,10,"MS Sans Serif",Color_Day_Percent);// Текстовое описание объекта  
 
eevviill:

Por qué más simple. Sólo dos permutaciones.

Sólo

+

Mi conciencia no me permite regalar código malo.

 
Vinin:

Mi conciencia no me permite regalar código malo.

¿Qué tiene de malo?
 

Buenas tardes. Enfrentarse a un problema. Necesita una denominación dinámica que no se repita. A continuación se muestra un ejemplo de cómo, he hecho, pero el problema es que en una garrapata puede necesitar varios nombres. ¿Cuál es su consejo?

string name=DoubleToStr(TimeCurrent(), 0);
 
abeiks:

Buenas tardes. Enfrentarse a un problema. Necesita una denominación dinámica que no se repita. A continuación se muestra un ejemplo de cómo, he hecho, pero el problema es que en una garrapata puede necesitar varios nombres. ¿Qué me aconseja?

TimeCurrent()+GetMicrosecondCount()

o

int contador=1;

TimeCurrent()+=contador;

 
eevviill:

TimeCurrent()+GetMicrosecondCount()

o

int contador=1;

TimeCurrent()+=contador;

¿Y la otra solución? Yo trabajo con fractales y ahí los M1, M5, M15 pueden coincidir en el tiempo.

void OnTick(){
string name=DoubleToStr(TimeCurrent(), 0);
SetArrow(6, Red, name, FrakTime_M1, FrakPrice_M1, 3);
SetArrow(6, Yellow, name, FrakTime_M5, FrakPrice_M5, 3);
...
}
 
abeiks:

¿Y otra solución? Yo trabajo con fractales y ahí los M1, M5, M15 pueden superponerse en el tiempo.

Tiempo[0]+Volumen[0]