Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1019

 
FiVik:

Eu não entendo. O que você quer dizer com "não quer"?

Você quer o código completo? Certo. (risos)

O nome está em cirílico, por isso está em hieróglifos.

Foi mais fácil refazer tudo de novo.

Arquivos anexados:
 
Vinin:

Foi mais fácil refazer a coisa toda

Muito obrigado por corrigir o indicador, mas eu gostaria de saber qual foi a razão para o meu código ser lento?

Acho que não serei sempre corrigido desta maneira. Além disso, tenho que estudar de alguma forma, e se eu não souber de erros, não posso ter certeza de que eles não voltarão a ocorrer.

 
FiVik:

Muito obrigado por corrigir o indicador, mas eu gostaria de saber qual foi a razão para o meu código ser lento?

Acho que não serei sempre corrigido desta maneira. Além disso, tenho que aprender de alguma forma, e se você não sabe dos erros, não pode ter certeza de que eles não voltarão a ocorrer.

O erro principal é trabalhar com os gráficos (objeto) no laço. Embora apenas o último valor calculado fosse necessário.

O primeiro desenvolvedor obviamente não conhecia as funções padrão e implementou as suas próprias. Não há nada de ruim nisto, mas também nada de bom.

 
Vinin:

Foi mais fácil refazer a coisa toda

Por que mais simples, apenas dois rearranjos.

Apenas

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 que mais simples. Apenas duas permutações.

Apenas

+

Minha consciência não permite que eu dê código ruim.

 
Vinin:

Minha consciência não permite que eu dê código ruim.

O que há de tão ruim nisso?
 

Boa tarde. Confrontados com um problema. Precisa de um nome dinâmico que não se repita. Abaixo está um exemplo de como, eu fiz, mas o problema é que em um só tique pode precisar de vários nomes. Qual é o seu conselho?

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

Boa tarde. Confrontados com um problema. Precisa de um nome dinâmico que não se repita. Abaixo está um exemplo de como, eu fiz, mas o problema é que em um só tique pode precisar de vários nomes. O que você aconselha?

TimeCurrent()+GetMicrosecondCount()

ou

int counter=1;

TimeCurrent()+=counter;

 
eevviill:

TimeCurrent()+GetMicrosecondCount()

ou

int counter=1;

TimeCurrent()+=counter;

E a outra solução? Eu trabalho com fractais e lá os M1, M5, M15 podem ser combinados a tempo.

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:

E que tal outra solução? Eu trabalho com fractais e lá os M1, M5, M15 podem se sobrepor no tempo.

Tempo[0]+Volume[0]