[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 315

 
chief2000 >> :

La questione è come funziona (ottimizzazione degli indicatori):

Ho capito bene che ad ogni nuovo tick lo stesso rettangolo

(la stessa dimensione con lo stesso numero di barre) saranno cancellati e ridisegnati?

Vale la pena aggiungere un controllo per il numero di barre (se ci sono più barre, solo allora ridisegna)?

Per scaricare la CPU del computer o il guadagno sarà minimo e non vale la pena scherzarci sopra?

Sì, e invece di cancellare, ObjectCreate può essere impostato attraverso il controllo if(ObjectFind(RectangleSell)==-1){ ObjectCreate()}

e il resto senza controllo, in modo da non dover cancellare e reimpostare un oggetto ad ogni spunta.

if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);   
   if(ObjectFind( RectangleSell)==-1){
      ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
     }
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}
 
Vinin >> :

Dobbiamo aggiungere la sincronizzazione del tempo.

Sicuramente ci sono sviluppi, si può mostrare come implementarlo su MA!

 
Vladimir11 >> :

Può dirmi se sto lavorando su un programma giornaliero?

E voglio accedere ai dati dei minuti. È aggiornato o sono dati vecchi?

Se in tempo reale, sono aggiornati, se nel tester su D1, i dati M.. sulle ultime barre (tempo reale e non quello che si sta testando).

 

Questo è il mio primo post sul forum. Sto studiando MQL4. Non so se c'era una domanda simile prima, non l'ho trovata. Credo di dover usare la funzione IndicatorCounted, ma non so come fare. Ho aggiunto quotazioni per 300 000 e ora quando cerco di avviare gli indicatori si blocca penso che dovrei specificare non tutte le quotazioni, ma solo una certa, per esempio 3000. Ma non voglio ricalcolare anche tutte le 3000, ho bisogno di IndicatorCounted. Non so come specificare la condizione che mostrerebbe solo le ultime 3000 e non ricalcolerebbe quelle già passate.

Grazie per il vostro feedback.

 
depth_finde >> :

Questo è il mio primo post sul forum. Sto studiando MQL4. Non so se c'era una domanda simile prima, non l'ho trovata. Credo di dover usare la funzione IndicatorCounted, ma non so come fare. Ho aggiunto quotazioni per 300 000 e ora quando cerco di avviare gli indicatori si blocca penso che dovrei specificare non tutte le quotazioni, ma solo una certa, per esempio 3000. Ma non voglio ricalcolare anche tutte le 3000, ho bisogno di IndicatorCounted. Non so come specificare la condizione che mostrerebbe solo le ultime 3000 e non ricalcolerebbe quelle già passate.

Grazie per il vostro feedback.

Sì, così.

int start()
  {
   int counted_bars = IndicatorCounted();
//----
   if( counted_bars < 0) 
       return(-1);
//----
   if( counted_bars > 0) 
       counted_bars --;
   int pos = Bars - counted_bars;  
//----
   while( pos >= 0) 
     {
       ma1_buffer[ pos] = iMA(NULL, 0 , Period1* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma2_buffer[ pos] = iMA(NULL, 0 , Period1* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma3_buffer[ pos] = iMA(NULL, 0 , Period2* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma4_buffer[ pos] = iMA(NULL, 0 , Period2* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma5_buffer[ pos] = iMA(NULL, 0 , Period3* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma6_buffer[ pos] = iMA(NULL, 0 , Period3* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       pos--;
       
     }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
costy_ писал(а) >>

Se in tempo reale, sono aggiornati, se nel tester D1, i dati M.. sulle ultime barre (tempo reale e non quello testato).

Risposto in privato

 
costy_ писал(а) >>

È più o meno così.

Probabilmente no, perché come avete dimostrato nella prima corsa sarà calcolato non 3000 ma 300000 citazioni, tutto quello che c'è.

 
depth_finde >> :

Probabilmente no, perché nel modo in cui hai mostrato la prima esecuzione non leggerà 3000 ma 300000 citazioni, tante quante sono.

Sì, solo una volta, poi cambiano!!!

Per far apparire l'indicatore su tutto il grafico e non su una parte di esso.

 
Vinin >> :

Risposto di persona.

>>Grazie mille!

 
costy_ писал(а) >>

Beh sì, solo una volta, poi cambiato!!!

Per visualizzare l'indicatore su tutto il grafico e non su una parte di esso.

Questa è l'idea di non scaricare tutti i 300 mila indicatori e aspettare 5 minuti per caricarli, ma di scaricarne 3000 al primo avvio e poi solo quelli che sono cambiati.

Se abbiamo cinque di questi indicatori su un grafico, il processo di caricamento richiederà 25 minuti.