[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 478

 

Versuchen Sie zunächst, den vierten nicht anzeigbaren Puffer ExtMapBuffer4 mit dem Indikatorpuffer zu verknüpfen

SetIndexBuffer(3,ExtMapBuffer4);

weil Sie schreiben

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

am Anfang beschreiben Sie 3 Zeilen/Puffer

dann brauchen Sie sie übrigens nicht als Zeitreihe zu deklarieren und zu überprüfen

 

und Ihr Hauptfehler hier

      ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer4,0,МА_ТЛ,0,Вид_МА_ТЛ,0); //рассчет значения для расчета Третьей Линии (ТЛ)

müssen Sie so vorgehen.

      ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer4,0,МА_ТЛ,0,Вид_МА_ТЛ,i); //рассчет значения для расчета Третьей Линии (ТЛ)
 
midorum:

Versuchen Sie zunächst, den vierten nicht anzeigbaren Puffer ExtMapBuffer4 mit dem Indikatorpuffer zu verknüpfen

weil Sie schreiben

am Anfang beschreiben Sie 3 Zeilen/Puffer

dann brauchen Sie sie übrigens nicht als Zeitreihe zu deklarieren und zu überprüfen

Danke für die Antwort... Um endlich das i-Tüpfelchen zu setzen, würde ich gerne mehr darüber erfahren:

1. Sie schreiben: "Versuchen Sie zunächst, den vierten nicht zugeordneten Puffer ExtMapBuffer4 mit dem Indikatorpuffer zu verknüpfen". Ich dachte, dass nur die Arrays gebunden werden sollten, die auf die eine oder andere Weise auf dem Client-Terminal-Bildschirm angezeigt werden sollten, und die Gesamtzahl aller Arrays, die an der Berechnung des benutzerdefinierten Indikators teilnehmen, sollte mit der Funktion IndicatorBuffers angegeben werden. Ich muss mich also irren?

2. Wenn es Ihnen nichts ausmacht, können Sie dieses Array als Zeitreihe deklarieren. Ist sie als Zeitreihe irgendwie selbstorganisiert?

 
7777877:

Vielen Dank für Ihre Antwort... Um dies abzuschließen, möchte ich noch eine Sache herausfinden:

1. Sie schreiben: "Versuchen Sie zunächst, den vierten nicht gemappten Puffer ExtMapBuffer4 mit dem Indikatorpuffer zu verbinden". Ich dachte, dass nur die Arrays gebunden werden sollten, die auf die eine oder andere Weise auf dem Client-Terminal-Bildschirm angezeigt werden sollten, und die Gesamtzahl aller Arrays, die an der Berechnung des benutzerdefinierten Indikators teilnehmen, sollte mit der Funktion IndicatorBuffers angegeben werden. Ich habe mich also geirrt?

2. Wenn es Ihnen nicht schwerfällt, erklären Sie bitte, warum wir dieses Array nicht als Zeitreihe deklarieren sollten? Organisiert sie sich in gewisser Weise selbst als eine Zeitreihe?

genau so, es wird automatisch als Zeitreihe organisiert

Sie beschreiben anfangs sichtbare Indikatorpuffer

MitIndicatorBuffers() können Sie die Anzahl der automatisch organisierten Zeitreihen auf 8 erweitern und sie mit Ihren Arrays verknüpfen

 
Frage erneut duplizieren, alte löschen, wer kann helfen!


Gut. Ich werde versuchen, das Problem auf den Punkt zu bringen, vielleicht findet sich ja jemand, der Vorschläge macht oder hilft, das Problem leichter zu lösen.

Wir arbeiten mit dem 1-Minuten-Chart. Nehmen wir den Minutenbalken (Hoch+Tief/2 - Durchschnittswert des Balkens) auf dem Diagramm vom 29.10.12 um 00:00 Uhr - er wird als Bezugspunkt dienen.

Dann prüfen wir die Abweichung von diesem Preis nach oben um 10 Pips (jede korrekte Abweichung ist +1).

Wenn wir die 10-Punkte-Abweichung vom Ausgangspunkt erreicht haben - der +1-Zähler; und wir beginnen, weitere Abweichungen zu überprüfen, aber von dem Punkt aus, an dem wir die 10-Punkte-Abweichung erreicht haben, und warten auf den nächsten 10-Punkte-Kursanstieg.

Wir erhalten zum Beispiel:

Wenn (Startpunkt) + 10 Pips <= Preis (wir verwenden alle nachfolgenden Preise der Balken vom Startpunkt.) Wir erhalten einen Zähler = Zähler +1; und wir beginnen den Startpunkt bereits von diesem Punkt - (Startpunkt + 10 Pips).

Wenn (Startpunkt + 10 Pips) + 10 Pips <= Preis (alle nachfolgenden Preise der Balken ab dem Referenzpunkt werden verwendet), erhalten wir counter=Counter +1; und wir beginnen von diesem Punkt - (Startpunkt + 10 Pips) + 10 Pips.

Wenn (Startpunkt + 10 Pips + 10 Pips) + 10 Pips <= Preis (wir verwenden alle nachfolgenden Preise der Bars vom Referenzpunkt aus.) erhalten wir counter=Counter +1; und wir beginnen von diesem Punkt - (Startpunkt + 10 Pips + 10 Pips) + 10 Pips.

und so weiter...

Bis wir einen Zähler von 10 erreichen (Zähler == 10).

Und bei jedem neu gebildeten 1-Minuten-Balken (Hoch+Tief/2 - Durchschnittswert des Balkens) prüfen wir auf diese Bedingung und warten, bis der Zähler 10 erreicht (Zähler == 10). Nehmen wir an, es vergingen zwei Tage, bei jedem neuen Balken, den wir bildeten, überprüften und verschoben wir, ob die Bedingungen korrekt waren .....

Und wenn wir den Zähler =10 erreicht haben, geben wir die Meldung "Zähler == 10" aus. Wir verschieben den Startpunkt um 2 Tage nach vorne, d.h. vom 29.10.12 um 00:00 Uhr auf den 31.10.12 um 00:00 Uhr und wiederholen den Zyklus.

Wiederholen Sie den Zyklus und gehen Sie so durch den Zeitplan.

D.h. wir sollten die neu gebildeten Balken nehmen und (Hoch+Tief/2 - Durchschnittswert des Balkens) zeichnen. Prüfen Sie die Bedingungen und schalten Sie sie wie oben beschrieben um, wenn sie korrekt sind.

Ich habe versucht, es durch ein Array zu implementieren, es ist sehr verwirrend und gibt falsche Werte! Helfen Sie mir, wie ich diesen Algorithmus implementieren kann!
Dateien:
qawer.mq4  3 kb
 
merkulov.artem:

Ich habe versucht, es durch ein Array zu implementieren, aber es wird sehr verwirrend und gibt falsche Werte!!! Hilfe bei der Implementierung dieses Algorithmus!

Es wäre sehr schön, wenn Sie Ihren Algorithmus im Detail kommentieren könnten (jeder Befehl und die verwendeten Daten), denn es ist sehr schwierig zu verstehen, was getan wird und zu welchem Zweck

dann bekommen Sie vielleicht Hilfe, oder Sie finden das Problem selbst

 

Laut der Hilfe gibt die FunktionSetIndexDrawBegin an, ab welchem Takt die Zeichnung beginnen soll. Ich habe einen Standard-AC-Indikator zum Testen genommen und dort die Parameter geändert

SetIndexDrawBegin(0,8);
   SetIndexDrawBegin(1,38);
   SetIndexDrawBegin(2,38);

zu

   SetIndexDrawBegin(0,8);
   SetIndexDrawBegin(1,8);
   SetIndexDrawBegin(2,8);

Es hat sich nichts geändert; er beginnt mit dem Zeichnen von ... nicht von 8 bar auf 0 bar, aber es ist unklar, von welchem Bar es ausgeht.

Sie können sehen, dass es nicht 8...


 
hoz:

Laut der Hilfe gibt die FunktionSetIndexDrawBegin an, ab welchem Takt die Zeichnung beginnen soll. Ich habe einen Standard-AC-Indikator zum Testen genommen und dort die Parameter geändert

zu

Es hat sich nichts geändert; er beginnt mit dem Zeichnen von ... nicht von 8 bar auf 0 bar, aber es ist unklar, von welchem Bar es ausgeht.

Sie können sehen, dass es nicht 8...


Die fortlaufende Nummer des Balkens vom Anfang der Daten (gelesen "vom Anfang des Diagramms" "von links"), von dem aus die ausgewählte Linie des Indikators gezeichnet werden soll. Die Zeichnung des Indikators erfolgt von links nach rechts.
 
midorum:
Stellen Sie die Seriennummer des Balkens vom Beginn der Daten ein (lesen Sie "vom Beginn des Diagramms" "von der linken Seite des Diagramms"), von dem aus die angegebene Indikatorlinie gezeichnet werden soll. Der Indikator wird von links nach rechts gezeichnet.

Und wenn ich zum Beispiel die letzten 30 Takte zeichnen muss, wie soll ich das dann machen?

 
hoz:

Und wenn ich möchte, dass die letzten 30 Takte gezeichnet werden, wie mache ich das dann?

Versuchen Sie Bars-30