[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 315

 
chief2000 >> :

Die Frage ist, wie es funktioniert (Optimierung der Indikatoren):

Verstehe ich das richtig, dass bei jedem neuen Tick das gleiche Rechteck

(gleiche Größe mit gleicher Anzahl von Balken) gelöscht und neu gezeichnet werden?

Lohnt es sich, eine Prüfung der Anzahl der Balken hinzuzufügen (wenn es mehr Balken gibt, nur dann neu zeichnen)?

Um die Computer-CPU zu entlasten, oder wird der Gewinn minimal sein und sich nicht lohnen, damit herumzuspielen?

Ja, und anstelle des Löschens kann ObjectCreate durch Überprüfung gesetzt werden if(ObjectFind(RectangleSell)==-1){ ObjectCreate()}

und der Rest ohne Prüfung, damit Sie nicht bei jedem Ticken ein Objekt löschen und neu setzen müssen.

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 >> :

Wir müssen die Zeitsynchronisation hinzufügen.

Sicherlich gibt es Entwicklungen, können Sie zeigen, wie man es auf MA zu implementieren!

 
Vladimir11 >> :

Können Sie mich beraten, ich arbeite an einem Tagesplan.

Und ich möchte auf die Protokolldaten zugreifen. Handelt es sich um aktualisierte oder um alte Daten?

Wenn in Echtzeit, werden sie aktualisiert, wenn im Prüfgerät auf D1, die Daten M.. auf die letzten Takte (in Echtzeit und nicht in der getesteten Version).

 

Dies ist mein erster Beitrag in diesem Forum. Ich lerne gerade MQL4. Ich weiß nicht, ob es eine solche Frage schon einmal gab, ich habe sie nicht gefunden. Ich glaube, ich muss die Funktion IndicatorCounted verwenden, aber ich weiß nicht, wie ich das anstellen soll. Ich habe Anführungszeichen für 300 000 hinzugefügt und jetzt, wenn ich versuche, Indikatoren zu starten, hängt ich denke, ich sollte nicht alle Anführungszeichen angeben, sondern nur eine bestimmte, z.B. 3000. Aber ich möchte nicht alle 3000 auch neu berechnen, ich brauche IndicatorCounted. Ich weiß nicht, wie man die Bedingung angeben, die nur die letzten 3000 zeigen würde und nicht die bereits übergebenen neu berechnen.

Wir danken Ihnen für Ihr Feedback.

 
depth_finde >> :

Dies ist mein erster Beitrag in diesem Forum. Ich lerne gerade MQL4. Ich weiß nicht, ob es eine solche Frage schon einmal gab, ich habe sie nicht gefunden. Ich glaube, ich muss die Funktion IndicatorCounted verwenden, aber ich weiß nicht, wie ich das anstellen soll. Ich habe Anführungszeichen für 300 000 hinzugefügt und jetzt, wenn ich versuche, Indikatoren zu starten, hängt ich denke, ich sollte nicht alle Anführungszeichen angeben, sondern nur eine bestimmte, z.B. 3000. Aber ich möchte nicht alle 3000 auch neu berechnen, ich brauche IndicatorCounted. Ich weiß nicht, wie man die Bedingung angeben, die nur die letzten 3000 zeigen würde und nicht die bereits übergebenen neu berechnen.

Wir danken Ihnen für Ihr Feedback.

Ja, genau so.

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_ писал(а) >>

Wenn in Echtzeit, werden sie aktualisiert, wenn in der D1-Tester, die Daten M.. bei den letzten Takten (in Echtzeit und nicht in der getesteten Version).

Privat geantwortet

 
costy_ писал(а) >>

Es ist mehr oder weniger wie folgt.

Wahrscheinlich nicht, denn wie Sie im ersten Durchgang gezeigt haben, werden nicht 3000, sondern 300000 Anführungszeichen berechnet, alles was es gibt.

 
depth_finde >> :

Wahrscheinlich nicht, denn so wie Sie den ersten Durchlauf gezeigt haben, werden nicht 3000, sondern 300000 Anführungszeichen gelesen, so viele wie es gibt.

>> ja, nur einmal, dann die, die sich ändern!!!

Damit der Indikator im gesamten Diagramm und nicht nur in einem Teil davon angezeigt wird.

 
Vinin >> :

Persönlich geantwortet.

>>Vielen Dank!

 
costy_ писал(а) >>

Nun ja, nur einmal, dann aber anders!!!

Um den Indikator auf dem gesamten Chart und nicht nur auf einem Teil davon anzuzeigen.

Das ist die Idee, nicht alle 300 Tausend Indikatoren herunterzuladen und 5 Minuten zu warten, bis sie geladen sind, sondern 3000 beim ersten Durchlauf herunterzuladen und dann nur die, die sich geändert haben.

Wenn wir fünf solcher Indikatoren in einem Diagramm haben, dauert der Ladevorgang 25 Minuten.

Grund der Beschwerde: