Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1019

 
FiVik:

Non capisco. Cosa vuol dire che non vuoi?

Vuoi tutto il codice? Ok.

Il nome è in cirillico, ecco perché è in geroglifico.

Era più facile rifare tutto.

File:
 
Vinin:

Era più facile rifare il tutto

Grazie mille per aver sistemato l'indicatore, ma vorrei sapere per quale motivo il mio codice era lento?

Non credo che sarò sempre corretto in questo modo. Inoltre, devo studiare in qualche modo, e se non conosco gli errori, non posso essere sicuro che non si ripetano.

 
FiVik:

Grazie mille per aver sistemato l'indicatore, ma vorrei sapere per quale motivo il mio codice era lento?

Non credo che sarò sempre corretto in questo modo. Inoltre, devo imparare in qualche modo, e se non si conoscono gli errori, non si può essere sicuri che non si ripeteranno.

L'errore principale è lavorare con la grafica (oggetto) nel ciclo. Anche se era necessario solo l'ultimo valore calcolato.

Il primo sviluppatore ovviamente non conosceva le funzioni standard e ha implementato le sue. Non c'è niente di male in questo, ma neanche niente di buono.

 
Vinin:

Era più facile rifare il tutto

Perché più semplice, solo due riarrangiamenti.

Solo

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:

Perché più semplice. solo due permutazioni.

Solo

+

La mia coscienza non mi permette di dare via del cattivo codice.

 
Vinin:

La mia coscienza non mi permette di dare via del cattivo codice.

Cosa c'è di male?
 

Buon pomeriggio. Di fronte a un problema. Serve una denominazione dinamica che non sia stata ripetuta. Qui sotto c'è un esempio di come ho fatto, ma il problema è che in una spunta possono servire diversi nomi. Qual è il tuo consiglio?

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

Buon pomeriggio. Di fronte a un problema. Serve una denominazione dinamica che non sia stata ripetuta. Qui sotto c'è un esempio di come ho fatto, ma il problema è che in una spunta possono servire diversi nomi. Cosa consigliate?

TimeCurrent()+GetMicrosecondCount()

o

int counter=1;

TimeCurrent()+=counter;

 
eevviill:

TimeCurrent()+GetMicrosecondCount()

o

int counter=1;

TimeCurrent()+=counter;

E l'altra soluzione? Lavoro con i frattali e lì M1, M5, M15 possono essere abbinati nel 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 un'altra soluzione? Lavoro con i frattali e lì M1, M5, M15 possono sovrapporsi nel tempo.

Tempo[0]+Volume[0]
Motivazione: