Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 111
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
Herzlichen Dank! Ich brauchte es, um die Eigenschaften von Kerzen zu vergleichen (mehr, weniger, usw.) Ich habe es aufgeschraubt - es funktioniert. Nur kann nicht verstehen, wie es den Datentyp String vergleicht? Oder double to string nicht übersetzen Zahl zu String? :-D
PS. Es funktioniert nicht im Indikator - nur im Skript... Wenn ich High[i] aufrufe, erhalte ich nur 4 Dezimalstellen.
Ich schreibe:
Alert ("doubletostr High = ", DoubleToStr(High[1],5));
if (DoubleToStr(High[2],5)>(DoubleToStr(High[3],5))
{
Alert ("Mehr");
}
if (DoubleToStr(Hoch[2],5)<(DoubleToStr(Hoch[3],5))
{
Alert ("Kleiner");
}
Funktioniert, schreibt das Ergebnis mit fünf Ziffern, Über-/Unterzählungen. Das Problem ist, dass das String-Array im Indikator nicht im Diagramm angezeigt wird. Deshalb...
...schreiben:
Alert ("Normalized Double High = ", NormalizeDouble(High[1],5));
Funktioniert nicht - das Ergebnis ist > 1,1234
Ich verstehe die Entwickler nicht - warum mussten sie die Dinge so sehr verkomplizieren? Warum wird die aufgerufene Funktion mit fünf Ziffern nicht gekratzt, wenn so viele Ziffern in der Tabelle angezeigt werden? Vielleicht gibt es eine einfache Lösung?
Es wird sogar noch interessanter:
übersetzen
Alert ("iFractals doubletostr= ", DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits));
Schreibvorgänge: 1,32169 - OK.
Mit StrToDouble zurück in einen numerischen Wert konvertieren:
Alert ("iFractals StrToDoubledoubletostr= ", StrToDouble(DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits));
Ergebnis: 1,3217
Es sollte ein Meme mit Jackie Chan geben, in dem er den Chip nicht versteht).
Und was gibt Alert eigentlich aus?
Es steht 0,01, aber eigentlich ist es 0...0100.
Es wird sogar noch interessanter:
übersetzen
Alert ("iFractals doubletostr= ", DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits));
Schreibvorgänge: 1,32169 - OK.
Mit StrToDouble wieder in einen numerischen Wert umwandeln:
Alert ("iFractals StrToDoubledoubletostr= ", StrToDouble(DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits));
Ergebnis: 1,3217
Es sollte ein Meme mit Jackie Chan geben, in dem er den Chip missversteht).
DoubleToStr() wird verwendet, um Meldungen mit der von Ihnen gewünschten Genauigkeit auszugeben. Standard Print(), Alert(), usw., drucken in 4 Ziffern.
Wenn Sie eine Zahl mit der gewünschten Genauigkeit sehen wollen, dann verwenden Sie DoubleToStr(), nicht in Berechnungen.
Sie brauchen nichts hin und her zu übersetzen ... ;)
Es wird 0,01 angezeigt , aber der tatsächliche Wert ist 0...0100.
Ausgabe dann 100 * Punkt = 100 * 0,00001 = 0,001pp (wenn für fünf Ziffern)
Der Wert von lBUY wurde oben geändert. Das ist meiner Meinung nach die Bedingung:
Wird nicht erfüllt. Daher bleibt der Wert von lBUY gleich.
Die Variable j muss zu Beginn der Funktion ausdrücklich mit einem negativen Wert initialisiert werden. Versuchen Sie es. Ich habe noch nicht weiter nachgeschaut.
Hmm. Bis jetzt ist es dasselbe. Hier haben wir:
DoubleToStr() wird verwendet, um Meldungen mit der von Ihnen gewünschten Genauigkeit auszugeben. Standard Print(), Alert(), etc. drucken 4 Ziffern.
Wenn Sie eine Zahl mit der gewünschten Genauigkeit sehen wollen, sollten Sie DoubleToStr() verwenden, nicht bei Berechnungen.
Sie brauchen nichts hin und her zu übersetzen ... ;)
Das ist verständlich... jetzt...) Aber der springende Punkt ist, dass ich irgendwie eine fünfte Stelle für Berechnungen herausholen muss(
Wenn DoubleToStr() ist nicht gut für sie, dann diese Sprache hat keine solche Funktion? Haben die Entwickler das nicht vorausgesehen?
Hmm. So weit, so gut. Hier sind wir:
Das ist verständlich... jetzt...) Aber der springende Punkt ist, dass ich irgendwie eine fünfte Stelle für Berechnungen herausholen muss(
Wenn DoubleToStr() ist nicht gut für sie, dann diese Sprache hat keine solche Funktion? Haben die Entwickler das nicht vorausgesehen?
Meine Herren Programmierer! Bitte beraten Sie, wie man einen EA mit einem Indikator kombinieren kann?
Ich habe zum Beispiel einen einfachen Bot mo_bidir.mq4 genommen, der mit seinem eigenen Algorithmus handelt, und ich möchte, dass er weiterhin Geschäfte mit seinem eigenen Algorithmus eröffnet, aber nach dem Signal von 3 МА.
Zum Beispiel bei einem Signal - Drei gleitende Durchschnitte:
FastEMA>MediumEMA>SlowEMA (Trend nach oben) - bot kauft
FastEMA<MediumEMA<SlowEMA (Trend abwärts) - bot verkauft
Inp_Signal_ThreeEMA_FastPeriod = 8;
Inp_Signal_ThreeEMA_MediumPeriod = 38;
Inp_Signal_ThreeEMA_SlowPeriod = 48;
Was ich brauche, ist für den Expert Advisor, um den Handel auf 5 Minuten fortzusetzen und der Indikator, um Signale aus dem täglichen oder 4-Stunden-Zeitrahmen zu geben, und ich möchte in der Lage sein, Zeitrahmen in den Bot-Einstellungen zu ändern.