[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 409
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
keine
Das Problem liegt hier einfach in der Schleife: Sie geht durch i von 0 bis 2. Sie wollen 2 bis 0.
Zeigen Sie mir bitte ein Beispiel, ich habe Es hat nicht funktioniert.
sss2019:
Zeigen Sie mir bitte ein Beispiel, ich habe es getan, es hat nicht funktioniert.
Ich habe das Skript wie folgt erstellt
Als Ergebnis gibt Print das Folgende aus
0 4
1 4
Das ist alles, aus irgendeinem Grund druckt die Schleife nicht
2 4
3 4
Ich habe der Schleife OrderSelect(i, SELECT_BY_POS, MODE_TRADES) anstelle von I 0 hinzugefügt, d.h. der erste Auftrag wird immer ausgewählt und das Skript funktioniert korrekt. Es stellt sich heraus, dass die Schleife, wenn sie zwei Aufträge löscht, versucht, den dritten Auftrag auszuwählen, obwohl nur zwei Aufträge in der Liste vorhanden sind.
Das Skript wurde wie folgt erstellt
Am Ende...
Bitte zeigen Sie mir ein Beispiel, ich habe
Das hat nicht geholfen.
weil man immer noch denken muss.
Helfen Sie mir, dieses Dilemma zu lösen
Das Skript sucht nach dem maximalen Abstand zwischen den Zeilen. Er gibt alle Werte auf allen Balken aus, der maximale Bereich ist 1,6235 auf einem Balken und 1,6208 auf dem anderen.
Ich versuche, Print(maxrange) zu drucken; es wird 0,086 gedruckt, ich verstehe nicht warum, ich teile durch Punkt
Helfen Sie mir, dieses Dilemma zu lösen
Das Skript sucht nach dem maximalen Abstand zwischen den Zeilen. Er gibt alle Werte auf allen Balken aus, der maximale Bereich ist 1,6235 auf einem Balken und 1,6208 auf dem anderen.
Ich versuche, Print(maxrange) auszugeben; es wird 0,086 zurückgegeben, ich verstehe überhaupt nicht, warum, ich teile durch Punkt
Dies ist kein Dilemma. Ein Dilemma ist, wenn man nicht weiß, welche von zwei Lösungen die beste ist.
Nun, erstens hat die Funktion iMA() sieben Parameter, nicht sechs. Zweitens haben Sie eine Variable mit dem String int i deklariert. Außerdem ist die Variable i nirgendwo mit einem Wert initialisiert. Infolgedessen ist er entweder gleich Null oder enthält Speicherreste, die von der vorherigen Aktivität übrig geblieben sind. Und drittens ist die while-Schleife falsch angeordnet. Nun, nehmen wir an, die Variable i ist nach der Initialisierung gleich Null. Nehmen wir außerdem an, dass der Ausdruck Ma1 > Ma2 ebenfalls wahr ist. Daher wird die Zeile while(Ma1 > Ma2) die Schleife starten. Bei der nächsten Iteration der Schleife werden wir feststellen, dass der Ausdruck (Ma1 > Ma2) nicht mehr wahr ist, und die Schleife wird abgebrochen. Die Variablen Ma1 und Ma2 werden nicht den maximalen Abstand enthalten - der maximale Abstand war einmal. Diese Bedingung zeigt nur, dass Ma1 jetzt kleiner oder gleich Ma2 geworden ist.
Außerdem wird die Variable maxrange nur in der Zeichenkette range = (Ma1 - Ma2)/Point mit einem Wert initialisiert. Was ist, wenn die Bedingung if(range > maxrange) nie eintritt, weil Sie die Variable maxrange nirgendwo sonst im Code mit einem Wert initialisieren? Es stellt sich also heraus, dass Sie das Ergebnis von Berechnungen mit dem Schrott von Speicherzellen vergleichen. Hier haben Sie unverständliche Ausdrucke als Ergebnis der Codeausführung.
if(bereich > maxbereich) maxbereich = bereich;
Das ist der Punkt, ich habe alle MA-Werte in der Schleife ausgegeben und alle Werte sind korrekt, d.h. alle MA-Werte für den Zeitraum wurden überprüft. Aber die Berechnung ist an dieser Stelle falsch - Bereich = (Ma1 - Ma2)/Punkt;
if(bereich > maxbereich) maxbereich = bereich;
*Punkt
Bereich = (Ma1 - Ma2)*Punkt
*Punkt
Bereich = (Ma1 - Ma2)*Punkt
Die Sache ist die, dass ich alle MA-Werte in der Schleife ausgegeben habe, und alle Werte sind korrekt, d.h. alle MA-Werte für diese Periode sind aufgezählt worden. Aber die Berechnung ist an dieser Stelle falsch - Bereich = (Ma1 - Ma2)/Punkt;
if(bereich > maxbereich) maxbereich = bereich;
Nun, Sie müssen überprüfen, was eingegeben wird. Welche Variablenwerte sind an den Berechnungen beteiligt?