Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 973
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
Hallo.
Bitte helfen Sie mir zu verstehen. Bei der Überprüfung der Funktion eines einfachen Arrays (Zuweisung eines Wertes);
a[0][2]=91.49999999993754;
Print("a[0][2]=",a[0][2]);
H= 1/(1+exp(-a[0][2]));
a[0][2]=H;
Print(" 1/(1+exp(-a[0][2]))=",1/(1+exp(-a[0][2])), " H=",H," a[0][2]=",a[0][2]);
Ich erhalte das Ergebnis:
2019.09.21 13:21:44.328 2011.01.03 14:54:20 W EURUSD,H4: a[0][2]=91.4999999999993754
2019.09.21 13:21:44.328 2011.01.03 14:54:18 W EURUSD,H4: 1/(1+exp(-a[0][2]))=0.7310585786300049 H=1.0 a[0][2]=1.0
Wie das?
Hallo.
Bitte helfen Sie mir zu verstehen. Bei der Überprüfung der Funktion eines einfachen Arrays (Zuweisung eines Wertes);
a[0][2]=91.49999999993754;
Print("a[0][2]=",a[0][2]);
H= 1/(1+exp(-a[0][2]));
a[0][2]=H;
Print(" 1/(1+exp(-a[0][2]))=",1/(1+exp(-a[0][2])), " H=",H," a[0][2]=",a[0][2]);
Ich erhalte das Ergebnis:
2019.09.21 13:21:44.328 2011.01.03 14:54:20 W EURUSD,H4: a[0][2]=91.4999999999993754
2019.09.21 13:21:44.328 2011.01.03 14:54:18 W EURUSD,H4: 1/(1+exp(-a[0][2]))=0.7310585786300049 H=1.0 a[0][2]=1.0
Wie das?
Dieses Beispiel ist schwer zu reproduzieren, aber ich vermute, dass Sie aufgrund der Typkonvertierung ein anderes Ergebnis erhalten als erwartet.
Experimentieren Sie mit diesem Code:
dann mit diesem:
и
und machen Sie eine Forensuche nach "realen Zahlen", kurz gesagt, die C-Umrechnung ist anfangs etwas verwirrend ;)
Sie haben eine Reihe von Beispielen mit int-Variablen gezeigt.
Meine Variablen sind alle doppelt.
Eine Konvertierung der Variablen in dasselbe Format ist also nicht möglich.
Sie haben eine Reihe von Beispielen mit int-Variablen gezeigt.
Meine Variablen sind alle doppelt.
Die Konvertierung von Variablen in dasselbe Format wird also nicht funktionieren.
a[0][2]=91.49999999993754;
Print("a[0][2]=",a[0][2]);
H= 1/(1+exp(-a[0][2]));
a[0][2]=H;
Print(" 1/(1+exp(-a[0][2]))=",1/(1+exp(-a[0][2])), " H=",H," a[0][2]=",a[0][2]);
Ich erhalte das Ergebnis:
2019.09.21 13:21:44.328 2011.01.03 14:54:20 W EURUSD,H4: a[0][2]=91.4999999999993754
2019.09.21 13:21:44.328 2011.01.03 14:54:18 W EURUSD,H4: 1/(1+exp(-a[0][2]))=0.7310585786300049 H=1.0 a[0][2]=1.0
Wie das?
Du hast ganzzahlige Konstanten und auch das Beispiel selbst ist nicht reproduzierbar - keine Variablentypen, naja im Allgemeinen - mein "Beispielstapel" kann ohne PC berechnet werden, dein Beispiel... Sagen Sie mir einfach, was e^(-91,49999) ist.
Okay, vergessen Sie es. Ich kann Ihnen nicht helfen.
Es ist eine Schande, dass " nicht helfen kann"...
Die Frage ist nicht, wie viel e^(-91,49999). Die Frage ist, warum eine Variable vom Typ double = H, falsch geschrieben wird
berechnete frühere Zahl vom Typ double =0.7310585786300049 , aber es wird 1.0 geschrieben (übrigens double).
Wenn Sie versuchen, meinen Code im Tester zu verwenden, wird Ihr MT4 wohl das Gleiche anzeigen.
Wenn dies der Fall ist, können Sie MQL4 nicht für die Arbeit verwenden und es ist gefährlich!
Schade... "kann nicht helfen"...
Ich habe geholfen, Hilfe bedeutet nicht, es für mich zu tun, sonst würde ich es nicht lesen, und das Ergebnis ist mir wichtig!
Wenn dies der Fall ist, kann MQL4 einfach nicht für die Arbeit verwendet werden und ist gefährlich!
Das Verhalten von MQL4 / MQL5 bei der Berechnung von mathematischen Ausdrücken ist das gleiche wie in C++. Sie können mit Ihrer Frage in jedes C++-Forum gehen, vielleicht hilft Ihnen dort ein Experte weiter
Ihre Frage hat sich von Hilfe/Erklärung/Lehre zu einer Diskussion über die MT-Plattform verschoben, gefällt sie Ihnen nicht, haben Sie sie umsonst erhalten?
... In der Antike verursachte das mangelnde Verständnis physikalischer Vorgänge bei den Menschen panische Angst, Donner oder Erdbeben... Zuerst löste es Panik und Spekulationen aus, dann kam die Religion ))))
Sie hätten nicht so wütend sein dürfen.
Sollte ich Ihre persönlichen Gefühle verletzt haben, möchte ich mich aufrichtig entschuldigen.
Ich diskutiere oder beurteile MT4 überhaupt nicht. Ich habe lediglich vorgeschlagen, dass Sie die
Ich habe gerade angeboten, den Code, den ich Ihnen geschickt habe, im Tester von MT4 laufen zu lassen und wenn alle Variablen (H,a[0][2])
als double definiert sind und das Ergebnis dasselbe ist wie bei mir, habe ich eine Frage:
Was ist das Problem? Ich habe es an Sie gerichtet.
Noch einmal: Es tut mirleid... "Ich kann nicht helfen"...
Auf Wiedersehen.
dass alle Variablen (H,a[0][2])
sind definiert als double
Noch einmal: Haben Sie Konstanten in Ihrem mathematischen Ausdruck? - mein Beispiel hat auch die Konstante 5 ... dann habe ich 5.0 geschrieben - für den Compiler ist das nicht dasselbe! und dann habe ich die Integer-Konstante 5 explizit auf den Typ double gebracht ---> für den Compiler wird das dasselbe sein wie das obige Beispiel 5.0
Ihre Frage wird regelmäßig auf dem Forum wiederholt, obwohl ich vielleicht nicht sehen, was Ihre Frage ist - Sie haben eine "schwere Formel" und nicht offensichtlich Variablen - entfernen Sie unnötige von Beispielen - Arrays und Exponent - dann werden Sie sehen, was das Problem ist, obwohl, wenn Sie alle unnötigen zu entfernen, werden Sie höchstwahrscheinlich finden, wo Sie nicht, was Sie erwartet haben - ich in der Regel tun;)
HH: und der Exponent hoch minus 91,49 - ist nicht eine sehr kleine Zahl? Typ double hat eine große Genauigkeit, sondern auf die hundertste Potenz und unter Berücksichtigung der Minus-Zeichen - meiner Meinung nach wird dieser Ausdruck verlieren Genauigkeit, ich will nicht zu googeln, aber das erste, was ich durch dieses Wiki gescrollt
Vielen Dank für Ihre Geduld!
Ich habe es versucht:
A=91.49999999993754;//a[0][2]=91.49999999993754;
Print("A=",A);
H= 1/(1+exp(-A));
//A=H;
Print("1/(1+exp(-A))=",1/(1+exp(-A)), " H=",H," a[0][2]=",a[0][2]);
Ergebnis:
2019.09.21 16:14:17.691 2011.01.04 22:29:51 W EURUSD,H4: A=91.4999999999993754
2019.09.21 16:14:17.690 2011.01.04 22:29:50 w EURUSD,H4: 1/(1+exp(-A))=1.0 H=1.0 a[0][2]=0.0
Ich werde versuchen herauszufinden, warum 1/(1+exp(-91,49999999993754))=1,0.
Bitte verstehen Sie mich. Ich bin jetzt damit beschäftigt, das neuronale Netz abzustimmen und zu trainieren. Der Code selbst ist grob und sogar ich selbst komme darin durcheinander... :)
Ich stelle fest, dass das Netzwerk Fehler wiederholt. Und der Hauptfehler liegt in der Berechnung des Sigmas. SOLLTE ES NICHT =1 SEIN.
Vielen Dank für Ihre Geduld!
Ich habe es versucht:
A=91.49999999993754;//a[0][2]=91.49999999993754;
Print("A=",A);
H= 1/(1+exp(-A));
//A=H;
Print("1/(1+exp(-A))=",1/(1+exp(-A)), " H=",H," a[0][2]=",a[0][2]);
Ergebnis:
2019.09.21 16:14:17.691 2011.01.04 22:29:51 W EURUSD,H4: A=91.4999999999993754
2019.09.21 16:14:17.690 2011.01.04 22:29:50 w EURUSD,H4: 1/(1+exp(-A))=1.0 H=1.0 a[0][2]=0.0
Ich werde versuchen herauszufinden, warum 1/(1+exp(-91,49999999993754))=1,0.
Bitte verstehen Sie mich. Ich bin jetzt damit beschäftigt, das neuronale Netz abzustimmen und zu trainieren. Der Code selbst ist grob und sogar ich selbst komme darin durcheinander... :)
Ich stelle fest, dass das Netzwerk Fehler wiederholt. Und der Hauptfehler liegt in der Berechnung des Sigmas. DARF SIE NICHT =1 SEIN.
Sie werden also nichts finden, deshalb habe ich beschlossen, zu prüfen, wo der Fehler oder die Ungenauigkeit im Code liegt:
2019.09.21 16:53:01.516 tst_template EURUSD,H1: 4. e = 1.828331349163451e-40
2019.09.21 16:53:01.516 tst_template EURUSD,H1: 3. H = 1.0
2019.09.21 16:53:01.516 tst_template EURUSD,H1: 2. a = 1.0
2019.09.21 16:53:01.516 tst_template EURUSD,H1: 1. a = 91.49999999993754