[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 632
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
Sie müssen zum Beispiel einen einfachen gleitenden Durchschnitt mit PeriodSMA berechnen. Um den SMA zu berechnen, addieren Sie die Werte der letzten PeriodSMA-Balken und teilen sie durch den PeriodSMA. Es ist offensichtlich, dass es für die Balken mit den Nummern Bars-1, Bars-2, ..., Bars-PeriodSMA+1 nicht funktionieren wird, weil wir einfach nicht die notwendige Anzahl von Balken für die Berechnung haben (der ganz linke Balken hat den Index Bars-1). Daher müssen wir die Berechnung des Indikators nicht mit dem letzten Balken im Diagramm beginnen, sondern mit dem Balken mit dem Index Bars-PeriodSMA.
Warum wird dieser Wert angegeben und nicht ein beliebiger? Diese Verschiebung des Berechnungsbeginns ermöglicht es uns, die maximale Anzahl von Balken zu berechnen, ohne die Korrektheit der Berechnung zu beeinträchtigen.
Aber bedenken Sie, dass dies der einfachste Fall ist. Manchmal ist aus dem Code nicht sofort ersichtlich, wie viele vergangene Takte das Programm für die Berechnung benötigt und woher genau diese Verschiebung kommt. Nun, Sie sollten den Entwickler fragen, der den Code geschrieben hat. Aber im Allgemeinen gibt es einen universellen Weg - schauen Sie sich einfach den Code an, was im Prinzip der maximale Index des Balkens unter Verwendung von Preisdaten und Indexpufferdaten während des Programmablaufs erhalten werden kann, normalerweise wird es bereits in diesem Stadium klar...
Danke für die Klarstellung!
Und nur um zu klären, wenn ich mechanisch 0 hinzufügen, wird TP und SL in dieser Art von Terminal arbeiten?
Das werden sie, natürlich werden sie das.
Dafür sind sie ja da, die externen Variablen, um beliebige Werte zu setzen.
Es ist jedoch einfacher, das, was Ihnen empfohlen wurde, in das Initialisierungsmodul aufzunehmen.
Oder in dieser Form:
Die Variablen werden automatisch angepasst, und für andere Bedürfnisse verwenden Sie den Multiplikator "decimal".
Спасибо за разъяснения!
И просто чтобы уточнить, если я механическим путем добавлю 0, то TP и SL будут работать в данном типе терминалов?
prorab:
Natürlich werden sie das.Dafür sind sie ja da, die externen Variablen, um beliebige Werte zu setzen.
Aber es ist noch einfacher, das, was man Ihnen geraten hat, in das Initialisierungsmodul zu packen.
Oder in dieser Form:
Die Variablen werden automatisch angepasst, und für andere Bedürfnisse verwenden Sie den Multiplikator "decimal".
Diese Aufgabe bedarf der Klärung:
Guten Tag...
SOS!!! GUTE LEUTE, HILFE!!! Ich bin ein Anfänger in der Programmierung im Allgemeinen (ich bin Autodidakt), und in MQL im Besonderen. Ich habe einen einfachen Indikator geschrieben: RSI + Bollinger Bands in einer Person. Aber hier ist das Problem: wenn ich nicht ausdrücklich die Anzahl der Elemente im Array Buf_std_dev angeben (d.h. die Array-Deklarationszeile sieht so aus: double Buf_std_dev[]), dann erhalte ich beim Anzeigen dieses Indikators im Client-Terminal-Fenster(CT) das folgende Bild:
Erläuterung des Bildes:
a) Oben befindet sich der RSI, der im Indikatorensatz von CT enthalten ist, und die Bollinger-Bänder wurden per Drag& Drop ( und ) in das Fenster dieses RSI gezogen;
b) unten ist der RSI, der von mir programmiert wird;
Der Compiler stellt keine Fehler oder Warnungen fest.
Wenn ich hingegen bei der Deklaration des Arrays Buf_std_dev die Anzahl der Elemente explizit angebe (d.h. die Zeile der Array-Deklaration sieht wie folgt aus: double Buf_std_dev[5502], wobei 5502 die Anzahl der Balken ist, die über die Variable Bars ermittelt wird ), dann ist alles wieder normal (denn wie Sie aus dem Vergleich der beiden Indikatoren sehen: alle Werte sind gleich):
Können Sie mir sagen, was zu tun ist, um das Bild zu speichern, wie auf dem zweiten Bild, aber ausdrücklich NICHT die Anzahl der Elemente im Array Buf_std_dev zu setzen.
P.S. Ich danke Ihnen im Voraus für Ihre Antwort.
Code im Anhang (ohne einige Teile - kann nicht in 4 MB passen!!!):
Alle Codes anzeigen
Bitte beraten Sie, wenn es Möglichkeiten, um Code über 4Mb hier dump (oder dump es hier in Teilen?) ?
Wenn Ihr Buf_std_dev kein Indikatorpuffer (einer der acht) ist, müssen Sie seine Größe oder eine beliebige Größe (wenn Sie beabsichtigen, sie (Größe) in der Zukunft zu ändern) angeben, wenn Sie ihn deklarieren.
Richtig, es ist nicht... Wenn ich darf, dann gleich noch zwei Fragen:
1. Wenn ich ihm einen Puffer zuweise (das Array Buf_std_dev) , bedeutet dies, dass er auch im Anzeigefenster angezeigt wird?
Wenn ich ihm keinen Puffer zuweise, tritt (wenn ich es richtig verstehe) folgende Situation ein: Angenommen, ich habe die Größe von 100 Takten festgelegt. Wenn dann neue Balken erscheinen (d.h. wenn z.B. Balken=101), werden die Berechnungen nur für die letzten 100 Balken durchgeführt, die wir angegeben haben (d.h. der älteste Balken - 101 - wird verworfen). Also, beim Laden der Geschichte, die Array-Größe wird immer gleich 100 Bars nur (oder einen anderen Wert, die ich angeben, wenn deklarieren)?