Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Nun, englische Namen wurden aus einem bestimmten Grund erfunden.
Ich kann Ihnen ein weiteres Beispiel nennen, bei dem russische Namen Ihren Code zerstören:
Sie geben Ihren Code an einen Kunden weiter, der nicht über kyrillische Schrift verfügt. Das war's. .... alle weg..... :-)
Und braucht der Kunde den Code oder die Lösung?
Möchte der Kunde den Code oder die Lösung?
Deshalb müssen Sie sich für das Ziel und die Endnutzer entscheiden.
Versetzen Sie sich in die Lage des Nutzers und vergessen Sie alles, was Sie getan haben: Wie wird sich der Nutzer fühlen?
Wird alles für ihn oder sie einen Sinn ergeben?
Deshalb müssen Sie sich für das Ziel und die Endnutzer entscheiden.
Versetzen Sie sich in die Lage des Nutzers und vergessen Sie alles, was Sie getan haben: Wie wird sich der Nutzer fühlen?
Wird er oder sie alles verstehen?
Ich stimme zu. Ich schreibe in zwei Sprachen. Ich kann es rein auf Englisch machen.
Es steht Ihnen als Englischsprachigem frei, meine Entscheidung zu ignorieren. Dort gibt es nur wenige englische Wörter.
Übrigens, da Sie so gut mit englischem Code umgehen können, helfen Sie mir bitte mit dem von Nikolay Semko vorgeschlagenen Code:
Ehrlich gesagt, verstehe ich nicht, wie das funktioniert. Es hat viele kurze englische Silben. Genau das, was Sie mögen.
Das ist es ja, ich kann nur etwa 30 % der englischen Sprache, und das auch nur im technischen Bereich, nicht in der Konversation.
In der Programmierung gibt es nur ein paar Dutzend Wörter, und man kann sie sich nach dem Schreiben von buchstäblich 1-2 Programmen merken.
P.S. Der Code, den Sie gepostet haben, besteht aus nur 5 Variablen, wie können sie das nicht verstehen?
Das ist es ja, ich kann nur etwa 30 % der englischen Sprache, und das auch nur im technischen Bereich, nicht in der Konversation.
In der Programmierung gibt es nur ein paar Dutzend Wörter, die man sich durch das Schreiben von buchstäblich 1-2 Programmen einprägen kann.
P.S. Der Code, den Sie gepostet haben, besteht aus nur 5 Variablen, wie können sie das nicht verstehen?
Nun, ich habe in meinem Code (in der Hauptfunktion) 30 Variablen gezählt. Und bis wie viele zählen Sie? (nur ein Scherz).
30% technisches Englisch ist sehr gut. Wissen Sie, wie reichhaltig technisches Englisch ist?
Ein paar Dutzend Wörter in der Programmierung? Jetzt verstehe ich, warum wir uns nicht verstehen)).
zy. Wenn Sie den Code von Nikolai meinen, erklären Sie mir, wie er funktioniert.
Nach dem Bild zu urteilen, ist die Farbzerlegung hier übrigens nicht vollständig. Nur die Hälfte. Die Palette sollte von ganz weiß über ganz schwarz bis hin zu allen Schattierungen einer bestimmten Farbe reichen.
Ja, Sie haben Recht.
Ich habe versucht, ihn zu implementieren und Ihren Code zu analysieren und zu visualisieren.
Folgendes ist dabei herausgekommen:
Ihre Variante
meine Variante:
Lassen Sie mich das erklären:
Die weiße Linie ist die Tonwertlinie (Summe der Farben R+B+G) - im Idealfall sollte sie eine gerade diagonale Linie sein. Ich habe es umgesetzt, Sie nicht.
Die roten, blauen und grünen Linien sind Linien des Farbverhältnisses. Nennen wir sie Oberschwingungen des Spektrums, die idealerweise vertikal verlaufen sollten. Aber es ist unmöglich, sie zu realisieren, nachdem die ursprüngliche Höchstfarbe 255 geworden ist. Aber es ist möglich, eine Situation zu erreichen, in der es keine Wendepunkte gibt (durch rote Pfeile gekennzeichnet) und einen glatten Bogen zu machen. Dann wird der Farbverlauf ohne "Klumpen" aussehen. Dieses Problem besteht sowohl in Ihrem als auch in meinem Algorithmus. Es kann behoben werden, aber ich sehe noch keinen Sinn darin, also ist es Zeitverschwendung. In der Praxis benötige ich einen Farbverlauf von einer Farbe zur anderen. Dies ist bei streng vertikalen Oberschwingungen des Spektrums leicht zu realisieren (die Unschärfe der Oberschwingung am oberen Rand ist normal, da sie eine Folge der Rundung ist). Bei diesem Problem geht der Farbverlauf jedoch von Schwarz zu Weiß über eine dritte Farbe, weshalb es diese Knicke gibt.
Seltsam, ich war mir sicher, dass Sie in MQL5 schreiben, aber neben dem 4er Programm selbst haben Sie auch den 4er Programmierstil. Ich habe versucht, Ihren Algorithmus auf 5 zu übertragen, aber es hat nicht funktioniert, weil nur einige Farbstreifen angezeigt werden. Dies geschieht höchstwahrscheinlich aufgrund von Verwechslungen mit dem Geltungsbereich von Variablen, aber es zu beheben, weil der Code nicht debuggingfähig ist, ist extrem schwierig, also habe ich aufgegeben. Ich verstehe, dass Sie an Ihren Programmierstil gewöhnt sind und meinen Stil nicht verstehen. Das beruht auf Gegenseitigkeit, denn ich bin es gewohnt, die Struktur eines Programms zu sehen, anstatt es wie ein Buch zu lesen. Und in Ihrem Code ist es unmöglich zu debuggen und zu verstehen, in welchem Moment der Variablendefinition, die langen Variablennamen 90% des Programmtextes einnehmen, wodurch die Programmstruktur verloren geht und sich in diesen langen barbie-farbigen Variablennamen auflöst. Alles in allem sieht Ihr Code für mich persönlich nach einer Art von SM aus.
Außerdem stellte sich heraus, dass Ihr Algorithmus Dutzende Male langsamer ist, und der Grund dafür ist nicht einmal MQL4. Ich konnte es nicht herausfinden. Welche Tangenten, welche Dreiecke, wenn es nur RGB gibt?
Und versuchen Sie, die Gewerkschaft zu beherrschen - eine sehr nützliche Sache.
Um besser zu verstehen, was ich meine, sollten Sie versuchen, beide Skripte, die ich angehängt habe, mit Ihrem Algorithmus (MQL4) und meinem (MQL5) auszuführen.
Auch Ihnen passieren solche Missgeschicke:
nur verstehe ich es noch nicht, ist es ein Problem der MT4 Trägheit oder ein Fehler in Ihrem Algorithmus.
1. Nikolai, selbst wenn man die ersten beiden von Ihnen zitierten Bilder vergleicht, kann man sofort erkennen, dass über Ihrer Version ein grauer Schleier liegt. Sehen Sie genau hin. Und in meiner Version ist die Farbe viel heller. Glauben Sie, dass Ihre Version die Farbe besser wiedergibt?
2. Ich habe mich an der Farbpalette von Windows orientiert. Die Farbe stimmt zu 99 % überein. Prüfen Sie, ob Ihre Farben mit den Windows-Farben übereinstimmen. Drucken Sie eine Reihe von Farbtönen aus, wie ich es getan habe. Öffnen Sie dann die Diagrammeigenschaften und die Palette. Geben Sie die Werte der Komponenten der Ausgangsfarbe in die Fenster ein und bewegen Sie den Schieberegler nach oben und unten. Die Zahlen werden sich ändern. Sie suchen diese Zahlen auf Ihrem Ausdruck und sehen, wie gut sie übereinstimmen.
3. mir ist bekannt, dass die konkrete Umsetzung unterschiedlich sein kann. Ich habe meinen Algorithmus nicht speziell auf Geschwindigkeit geprüft, und ich habe ihn nicht auf Geschwindigkeit optimiert. Ihre Lösung scheint Ihnen eine höhere Geschwindigkeit zu bieten. Ich werde es nicht leugnen.
4. In der Optik gibt es einen Begriff für ein Prisma. Es gibt den Begriff der Lichtbrechung. Ich bin von genau diesem Paradigma ausgegangen. Ich habe 256*256 (von 0 bis 255) aufgezeichnet. Dann habe ich Linien gezeichnet. Ich habe die Achse der Brechung der Farbe gefunden. Sie befindet sich in der Mitte des Diagramms. Jede Komponente ist eine Kurve, die aus zwei Segmenten besteht. Insgesamt hat die Farbe drei geschwungene Linien, die sich jeweils in der Mitte der Grafik brechen und in zwei Segmente unterteilen. Jedes Segment hat seinen eigenen Winkel. Die ursprüngliche Farbe hat eine Koordinate im Diagramm. Er ist unter seinen Schattierungen zu finden. Meine Aufgabe bestand darin, die Ausgangsfarbe zu finden, die Winkel aller sechs Segmente zu bestimmen und die Werte jeder Komponente entlang ihrer Linie zu ermitteln.
5. Tangenten sind Verhältnisse von aneinandergrenzenden zu gegenüberliegenden Katheten. Sie ist notwendig für die Berechnung der Winkel der Segmente und die Berechnung der Höhe der gegenüberliegenden Katheten (das ist der Wert einer Komponente in einem konkreten Farbton).
6. Was die Programmierungsstile betrifft, so schlage ich vor, dass wir nicht darüber diskutieren. Auf das Wesentliche des Themas kommt es nicht an.
7. Über Missgeschicke - vielleicht sind sie das. Aber ich bin noch nicht auf sie gestoßen. Ich weiß es also nicht.
Übrigens, sagen Sie mir, wie die Farbzerlegung in Ihrer Version funktioniert. Ich verstehe das nicht ganz.
Ich verstehe es einfach noch nicht, ist es ein Problem der MT4 Langsamkeit oder ein Fehler in Ihrem Algorithmus.
Über den Geschwindigkeitsunterschied zwischen den Algorithmen:
1) Ihr Algorithmus füllt ein uint-Array, während meiner ein string-Array füllt. (Ich brauche genau eine Schnur, um die notwendigen Komponenten leicht aus dem Schatten zu extrahieren und dann mit ihnen zu arbeiten). Der Unterschied in der Geschwindigkeit beim Füllen der beiden Arten von Arrays ist im folgenden Skript zu sehen.
2. Ihr Algorithmus funktioniert auf МТ5, meiner auf МТ4. Der Unterschied in der Geschwindigkeit des Auffüllens von Arrays auf diesen Plattformen wurde von mir hier diskutiert -https://www.mql5.com/ru/forum/222333. Anhand des nachstehenden Skripts können Sie den Unterschied selbst erkennen. Stellen Sie es auf beide Plattformen und vergleichen Sie.
Ich habe die Geschwindigkeit von 30 000 Zellen von int- und string-Arrays auf MT4 und MT5 gemessen (ms):
Wie Sie sehen können, ist mein Algorithmus aus zwei Gründen langsamer:
Über den Unterschied in der Geschwindigkeit der Algorithmen:
1. Ihr Algorithmus füllt ein uint-Array, während meiner ein String-Array füllt. (Ich benötige eine Zeichenfolge, um die erforderlichen Komponenten leicht aus dem Farbton zu extrahieren und dann mit ihnen zu arbeiten). Der Unterschied in der Geschwindigkeit beim Füllen der beiden Arten von Arrays ist im folgenden Skript zu sehen.
2. Ihr Algorithmus funktioniert auf МТ5, meiner auf МТ4. Der Unterschied in der Geschwindigkeit des Auffüllens von Arrays auf diesen Plattformen wurde von mir hier diskutiert -https://www.mql5.com/ru/forum/222333. Anhand des nachstehenden Skripts können Sie den Unterschied selbst erkennen. Stellen Sie es auf beide Plattformen und vergleichen Sie.
Ich habe die Geschwindigkeit von 30 000 Zellen von int- und string-Arrays auf MT4 und MT5 gemessen (ms):
Wie Sie sehen können, ist mein Algorithmus aus zwei Gründen langsamer: