[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 381

 

Auch die Synchronisation ist ein relativer Begriff. Synchronisierung von was mit was? Synchronisierung bei atomarem Zugriff? Und wer wird die Warteschlange aufbauen? Junko, vielleicht baut Ihre Bibliothek die Warteschlange normal auf, wenn der Code von MSDN stammt, denn dort wird alles richtig gemacht. Und Sie haben es einfach kopiert, ohne zu verstehen, was es bewirkt - wie die Brille eines Affen. Oder vielleicht denkst du dir das nur aus, wie du es immer tust. Weil du es nicht verstehst. Sie verwechseln Synchronisierung für atomaren Zugriff mit Warteschlangen.

 
Sepulca:
Hat eine Menge Prozessorkerne gekauft. Und nun: Für welchen steht man an? )))))))))

Nein, das gilt auch für Single-Core-Prozessoren, Multitasking ist eine Funktion des Betriebssystems.
 
Chiripaha:

Ich überprüfte mit zunehmendem PauseBar und bekam nur diese Sticks auf der 1 und 5 Minuten Bars. Aber ich verstehe nicht, wie man sie richtig umgeht. Ich verstehe, was geschrieben werden muss, wahrscheinlich (aber nicht offensichtlich), wenn der Wert

в

den Wert der vorherigen Balken - etwa so:

Aber wenn ich es versuche, "bewegt" sich mein ganzer Indikator - weil ich die Logik nicht verstehe und nicht weiß, wo und unter welchen Bedingungen ich ihn einsetzen soll.


Diese Variante funktioniert im Testgerät ausreichend.
Ich habe das Problem folgendermaßen gelöst:

        if(FirstChanel) 
        { 
          if(Up[i-2]==0 && Down[i-2]==0)
          {
            Up[i-1]   = high;   
            Down[i-1] = low; 
          } 
          else
          {
            Up[i-1]   = Up[i-2];   
            Down[i-1] = Down[i-2]; 
          }  
        }

Und überall dort, wo [i] um 1 Takt nach hinten verschoben war

Und hier:

   Comment("DrawChannel =",DrawChannel,"\n",
           "limit =",limit); // изначально значение было равно 1
  
   limit = Bars-IndicatorCounted()-1; 
   if(limit >= 1)                    limit = Bars-1; // и это условие не выполнялось, поставил >= и начало считать
Dateien:
 
Guten Tag. Ich habe mich im Forum umgesehen, aber keine eindeutige Antwort gefunden. Ist es für meinen Expert Advisor möglich, mit mehreren Währungspaaren gleichzeitig zu arbeiten? Ich glaube, einige Websites, die EAs verkaufen, haben diese Möglichkeit in ihren Beschreibungen, aber ich möchte sichergehen. Ich habe bereits mit einigen Devisenpaaren gearbeitet und weiß nicht, wie ich mit dem Handel beginnen soll.
 
Trendy:

Ich bin im Forum herumgewandert, habe aber keine eindeutige Antwort gefunden. Ist es möglich, dass ein EA mit mehreren Währungspaaren gleichzeitig arbeitet?

Ich glaube, einige Websites, die EAs verkaufen, haben diese Möglichkeit in ihren Beschreibungen, aber ich möchte sicher sein.

Es ist möglich. Der Berater ist nur durch die Anzahl der Symbole Ihres Maklerunternehmens begrenzt.

Wenn Sie die Antwort nicht gefunden haben, weil Ihre Frage im Grunde dumm ist.

Wenn Sie können, senden Sie uns bitte einen Link, wie man das macht

https://www.mql5.com/ru/code
 
Integer:


1. Sie haben wohl Schwierigkeiten, es zu verstehen. Ich weiß, wovon du sprichst.

2. Danke, aber ich habe nicht um einen Rat gebeten. Vor allem, wenn es um die Synchronisierung von Dingen geht, die sich nicht mehr im selben Thread befinden.

Und was ist die Wissenschaft der Synchronisation? Welche Wissenschaft? Ihre eigene Wissenschaft? Eines Tages werden Sie es verstehen, aber es ist nichts Kompliziertes daran. Programmiersprachen und Algorithmen wurden nicht von Dummköpfen erfunden und geschaffen. Aber aus irgendeinem Grund sind sie mit Mitteln zur Synchronisierung und Warteschlangenbildung ausgestattet.

4. sehr falsch. Wenn richtig....Wenn es eine Synchronizität gab. Aber in dem Code, den Sie hier vorhin zitiert haben, gibt es keine Synchronität, sondern nur atomaren Zugriff.

3. Nach der Wissenschaft der Systemprogrammierung. Lesen Sie Richter. Er wird Sie über Warteschlangen aufklären.

4. Was ist Synchronisierung? Es handelt sich um einen atomaren Zugang zu einer Ressource. Mein Code bietet sie. Die Warteschlange wird vom System aufgebaut. Die Module werden im Verhältnis zur Zeit ihrer Ausführung ausgeführt. Die Reihenfolge der Ausführung ist nicht wichtig. Alles wird vom System erledigt. Dies ist keine Erfindung von Dummköpfen. Versuchen Sie, das Gegenteil anhand eines konkreten Beispiels zu beweisen. Analysieren Sie das Protokoll. Sie werden sehen, dass alles korrekt ausgeführt wird, ohne Ihre speziellen Warteschlangen.

Übrigens hat MQL4 als Sprache eine Funktion mit atomarem Zugriff. In C++ gibt es keine davon. Sie müssen sie selbst schreiben, als Wrapper von WinAPI-Funktionen. Es ist besser, sie in einer Klasse zu implementieren.

Integer:

Noch einmal, nur für den Fall, dass Sie in einem U-Boot in einem Panzer sitzen und trotzdem einen Helm tragen. Hier wird nur der atomare Zugang gezeigt. Die Reihenfolge der Funktionen richtet sich dabei nach der Windrichtung. Dieser Code sieht keine einheitliche Ausführung von Funktionen vor. Deshalb gibt es keine Garantie dafür, dass eine Funktion nicht sehr lange auf dem Regal bleibt. Es ist lächerlich, sich bei der Programmierung auf die Gebrauchstauglichkeit zu verlassen, nur weil die Frequenz des Prozessors hoch ist, selbst wenn die Frequenz des Prozessors sehr hoch ist.

Noch einmal für diejenigen, die nicht im Tank sind. Die Reihenfolge der Ausführung wird vom System vorgegeben. Was ist eine einheitliche Ausführung? Wie kann man eine einheitliche Ausführung von Threads gewährleisten, deren Ausführungszeit und Anzahl unbekannt sind? Warum sich damit befassen? Sie haben bereits daran gedacht und es für Sie getan. Sie können Synchronisationsobjekte verwenden.
Natürlich schließe ich Fälle nicht aus, in denen Sie eine spezielle Thread-Warteschlange zur Ausführung der Threads benötigen. Das ist eine sehr heikle Sache :-)) Sie sollten solchen Code vermeiden. Denn es gibt hier ein Paradoxon. Warum sollte man eine Aufgabe in mehreren Threads ausführen, um sie alle in einen zu bekommen? Sie sollten die Ausführung in einem einzigen Thread verwenden. Sie brauchen dann keine Synchronisierung.

Es gibt noch einen weiteren Fall, in dem Sie eine Warteschlange benötigen. Aber nicht die Ausführungsreihenfolge der Threads, sondern die Reihenfolge der Verarbeitung der von den Threads erhaltenen Daten (Ergebnisse der Threads). Dies ist die häufigste Aufgabe für Warteschlangen.

Integer:

Auch die Synchronisation ist ein relativer Begriff. Synchronisierung von was mit was? Synchronisierung bei atomarem Zugriff? Und wer wird die Warteschlange aufbauen? Junko, vielleicht ist deine Bibliotheks-Warteschlange normal gebaut, wenn der Code von MSDN stammt, denn dort ist alles korrekt gemacht. Und Sie haben es einfach kopiert, ohne zu verstehen, was es bewirkt - wie die Brille eines Affen. Oder vielleicht denkst du dir das auch nur aus, wie du es immer tust. Weil du es nicht verstehst. Sie verwechseln Synchronisierung mit atomarem Zugriff und Warteschlangenbildung.

Und noch einmal, für diejenigen, die... :-))

Die Synchronisierung ermöglicht einen atomaren Zugriff auf eine Ressource. Die Warteschlange wird vom System aufgebaut. Die Ausführung ist garantiert, der Auftrag ist es nicht. In MSDN ist der Code wahrscheinlich korrekt, aber umständlich. Schreiben Sie Ihre eigene Klasse für eine bequeme Synchronisierung. Ich habe meinen Kurs nach dem Prinzip des Kurses von Andrei Postnikov geschrieben. Er hat mir freundlicherweise gezeigt, wie man es richtig synchronisiert. Es stimmt, es ist nicht eine Klasse. Ich habe eine Klasse für jedes Objekt der Synchronisation, eine weitere Lock-Klasse für alles und einen Namespace für wartende Funktionen.
Eigentlich habe ich bereits alles oben beantwortet.

 

Junko, du bist hoffnungslos. Wenn Ihnen das Denken schwer fällt, denken Sie nicht, spucken Sie darauf, es ist nicht Ihr Ding...

Wenn etwas unbewiesen und unbewiesen wäre, würde man nicht darüber streiten. Das Problem ist, dass Sie, Vadim, nicht in der Lage sind, ein konstruktives Gespräch zu führen. Zumindest bestätigen Sie, dass die Synchronisierung nur für den atomaren Zugriff und nicht für die Warteschlange gilt. Du, Vadim, argumentierst jetzt mit dir selbst, ohne es zu merken.

 
Integer:

Junko, du bist hoffnungslos. Wenn Ihnen das Denken schwer fällt, denken Sie nicht, spucken Sie darauf, es ist nicht Ihr Ding...

Wenn etwas unbewiesen und unbewiesen wäre, würde man nicht darüber streiten. Das Problem ist, dass Sie, Vadim, nicht in der Lage sind, ein konstruktives Gespräch zu führen. Zumindest bestätigen Sie, dass die Synchronisierung nur für den atomaren Zugriff und nicht für die Warteschlange gilt.

Wie kann ich... Ich bin kein Programmierer, wie manche Leute :-))
 
Zhunko:

Synchronisierung ist die Bereitstellung eines atomaren Zugriffs auf eine Ressource.
Die Warteschlange wird vom System erstellt.


Ein großer Applaus! Zum Thema des Kodex von Seite 378. Selbst wenn das Terminal die Reihenfolge der Warteschlangen regelt, kann es nicht wissen, in welchem Fall die Funktion ausgeführt und in welchem Fall sie abgelehnt wurde.
 
Außerdem geht es um die Regulierung durch das System. Wenn mehr als ein Stream erstellt wird, wird das System regulieren. Aber wenn jemand auf der Seite dieser Ströme steht, muss man selbst an alles denken, es wird kein Wunder vom System geben.