Fehler, Irrtümer, Fragen - Seite 1141
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 zusammen!
Das ist ein Problem.
Ich habe erfolgreich den Wert der Bänder und MA-Indikatoren erhalten.
Bands_handle=iBands(NULL,0,BP_var_s,0,BDev_var_s,PRICE_CLOSE);CopyBuffer(Bands_handle,0,0,1,Base);
CopyBuffer(Bands_handle,1,0,1,Upper);
CopyBuffer(Bands_handle,2,0,1,Lower);
B_med_s=Base[0];
B_up_s=Upper[0];
B_low_s=Lower[0];
MA_handle=iMA(NULL,0,MA_var_b,0,MODE_SMA,PRICE_TYPICAL);
CopyBuffer(MA_handle,0,0,1,MAv);
M_av_s=MAv[0];
Dann drucken Sie: B_up_s = 1.264249475876921 M_av_s = 1.2595
Dann versuche ich, eine Matrixoperation B_up_s-M_av_s durchzuführen und erhalte das Ergebnis 0.00000000.
Was ist das Wunder?
Hallo zusammen!
Das ist ein Problem.
Ich habe erfolgreich den Wert der Bänder und MA-Indikatoren erhalten.
CopyBuffer(Bands_handle,0,0,1,Base);
CopyBuffer(Bands_handle,1,0,1,Upper);
CopyBuffer(Bands_handle,2,0,1,Lower);
B_med_s=Base[0];
B_up_s=Upper[0];
B_low_s=Lower[0];
MA_handle=iMA(NULL,0,MA_var_b,0,MODE_SMA,PRICE_TYPICAL);
CopyBuffer(MA_handle,0,0,1,MAv);
M_av_s=MAv[0];
Dann drucken Sie: B_up_s = 1.264249475876921 M_av_s = 1.2595
Dann versuche ich, eine B_up_s-M_av_s-Verknüpfung durchzuführen und erhalte 0,00000000 als Ergebnis.
Was ist daran so seltsam?
1) Wie man den Code einfügt.
2) In welchem Typ von Variable speichern Sie das Ergebnis der Operation? Oder noch besser, geben Sie mir bitte den Teil des Codes, in dem die Ausgabe erzeugt wird.
1) Wie fügen Sie den Code ein?
2) In welcher Art von Variable speichern Sie das Ergebnis der Operation? Noch besser ist es, wenn Sie den Teil des Codes angeben, in dem die Ausgabe erzeugt wird.
Alle Variablen sind vom Typ double.
Ich verstehe nicht, warum Bands viele Ziffern hat, während MA nur 4 Dezimalstellen hat. Es sollte überhaupt kein Nullergebnis geben. Aus diesem Grund funktioniert der Algorithmus nicht.
In MQL4 war alles so einfach. Jetzt brauchen Sie eine höhere Optimierungsgeschwindigkeit und eine Mehrwährungsprüfung. Ich muss alles auf MQL5 übertragen (scheiß drauf)).
Alle Variablen sind vom Typ double.
Es ist nicht klar, warum Bands viele Ziffern und MA nur 4 Dezimalstellen hat. Und ein Nullergebnis sollte überhaupt nicht vorkommen. Das ist der Grund, warum der Algorithmus nicht funktioniert.
In MQL4 war alles so einfach. Jetzt brauchen Sie eine höhere Optimierungsgeschwindigkeit und eine Mehrwährungsprüfung. Jetzt muss ich alles auf MQL5 übertragen (scheiß drauf)).
Es sollte funktionieren. Nachfolgend finden Sie ein Skript, das auf Ihrem Code basiert und dessen Ergebnis:
Alle Variablen sind vom Typ double.
Es ist nicht klar, warum Bands viele Ziffern und MA nur 4 Dezimalstellen hat. Das Ergebnis von Null sollte überhaupt nicht vorhanden sein. Aus diesem Grund funktioniert der Algorithmus nicht.
In MQL4 war alles so einfach. Jetzt brauchen Sie eine höhere Optimierungsgeschwindigkeit und eine Mehrwährungsprüfung. Ich muss alles auf MQL5 übertragen (scheiß drauf)).
Es sollte funktionieren. Nachfolgend finden Sie das Skript gemäß Ihrem Code und das Ergebnis:
Ja, das Skript funktioniert.
Auch der EA mit diesem Beispiel funktioniert.
Mein EA hingegen gibt hartnäckig Null aus. Lassen Sie uns nach einem Fehler suchen ......
Hallo zusammen!
Frage: Wie lässt sich ein variabler Wert bei jedem Tick in einer Minute aktualisieren, und dann wird diese Summe in einen separaten Wert geschrieben, wenn die nächste Minute schließt, wird der Wert der Summe durch den neuen Wert ersetzt?
int t = TimeSeconds();
while (t !=0)
double b - die Variable, die während jeder Minute bei jedem Tick aktualisiert wird.
double b1 - Wert der Variablen b beim vorherigen Tick.
double s - Betrag für alle Ticks innerhalb einer Minute.
double s1 - Betrag für alle Ticks innerhalb der letzten Minute.
b1=b;
s=b1+b;
wenn (t=0) s1=s;
Wie kann man die Daten bei jedem Häkchen zusammenfassen und wie schreibt man das alles richtig?
Ja, das Skript funktioniert.
Auch der EA mit diesem Beispiel funktioniert.
Aber mein Expert Advisor zeigt Null an. Lassen Sie uns nach dem Fehler ...... suchen.
Hier ist, was entdeckt wurde.
Wenn man den EA einfach ausführt, funktioniert er gut, aber im Strategy Tester produziert er ganz am Anfang Nullen. Aber in der nächsten Zeile werden Nullen auf magische Weise zu normalen Indikatordaten. Ich verstehe nicht, was hier los ist.....
Nachstehend finden Sie den Code.
Dies ist der Bericht des Testers.
CJ 0 19:40:47.022 Core 1 EURUSD,M15 (Alpari-Ltd-Demo): OHLC-Balkenzustände werden erzeugt. OnTick-Ausführung nur zu Beginn des Balkens
IJ 0 19:40:47.022 Core 1 EURUSD,M15: Test von experts\tmp.ex5 von 2004.01.07 00:00 bis 2004.02.02 00:00 gestartet
LK 0 19:40:47.022 Kern 1 2004.01.07 00:00:00 B_up_s=0.0 M_av_s=0.0
IM 0 19:40:47.022 Kern 1 2004.01.07 00:00:00 sbl_top=true B_up_s=0.0 M_av_s=0.0 B_up_s-M_av_s=0.00000000
OQ 0 19:40:47.022 Kern 1 2004.01.07 00:15:00 B_up_s=1.279208140152992 M_av_s=1.2718
OI 0 19:40:47.022 Kern 1 2004.01.07 00:15:00 sel=true B_up_s=1.279208140152992 M_av_s=1.2718 B_up_s-M_av_s=0.00740814
CJ 0 19:40:47.022 Kern 1 2004.01.07 00:30:00 B_up_s=1.279239651523307 M_av_s=1.2721
LN 0 19:40:47.022 Kern 1 2004.01.07 00:45:00 B_up_s=1.279382808470771 M_av_s=1.2714
DS 0 19:40:47.022 Kern 1 2004.01.07 01:00:00 B_up_s=1.279407737043184 M_av_s=1.2719
OD 0 19:40:47.022 Kern 1 2004.01.07 01:15:00 B_up_s=1.279398917431485 M_av_s=1.2727
NI 0 19:40:47.022 Kern 1 2004.01.07 01:30:00 B_up_s=1.279380702214008 M_av_s=1.2731
IM 0 19:40:47.022 Kern 1 2004.01.07 01:45:00 B_up_s=1.279440208228416 M_av_s=1.2723
LE 0 19:40:47.022 Kern 1 2004.01.07 02:00:00 B_up_s=1.279473515350084 M_av_s=1.272
DK 0 19:40:47.022 Kern 1 2004.01.07 02:15:00 B_up_s=1.279515146590278 M_av_s=1.2715
FL 0 19:40:47.022 Kern 1 2004.01.07 02:30:00 B_up_s=1.279601656250741 M_av_s=1.2709
IQ 0 19:40:47.022 Kern 1 2004.01.07 02:45:00 B_up_s=1.279656914787522 M_av_s=1.2709
CE 0 19:40:47.022 Kern 1 2004.01.07 03:00:00 B_up_s=1.279579626541548 M_av_s=1.2707
Folgendes wurde entdeckt.
1) Erstellen Sie nicht für jeden Tick einen Indikator!
2) Prüfen Sie, ob der Indikator erstellt wurde oder nicht, bevor Sie auf seine Werte zugreifen.
3) Prüfen Sie, ob die angeforderten Werte aus dem Kennzeichen übernommen werden.
4) Löschen Sie den Berechnungsteil des Indikators immer nach Beendigung des Experten, da sonst irgendwann der Arbeitsspeicher erschöpft sein kann.
Das Problem lag darin, dass Sie versucht haben, die Werte aus dem Indikator zu kopieren, der noch nicht erstellt worden ist. Machen Sie es sich zur Regel - überprüfen Sie das Ergebnis der Funktionen, die Sie aufrufen.
Bitte teilen Sie uns mit, wo der Fehler liegt.
Ekpert läuft auf Demo, 3 Paare. Hier ist das Protokoll:
Hier ist der Code.
Experte versucht OrderDelete() auszuführen, gibt Fehler, SendTradeRequest() ist in while-Schleife, ekspert entsprechend Schleifen. Vielleicht hat sich der Preis geändert, als ich die Bestellung aufgegeben habe? Brauche ich RefreshRates() und wie gehe ich damit richtig um? Ich habe im Forum gesucht, aber kein Beispiel gefunden...
Ich danke Ihnen allen im Voraus