Aus Ihrem Code kann ich nicht ersehen, was Sie zu tun versuchen, aber an 2 Stellen geben Sie der Variablen i keinen Wert. Dies müssen Sie beheben.
int start() // Special function start() { if (Crosses()) count++; int i, n, // Bar index Counted_bars; Buf_1[i]= count; // Number of counted bars double Sum_H; //-------------------------------------------------------------------- Counted_bars=IndicatorCounted(); // Number of counted bars i=Bars-Counted_bars-1; // Index of the first uncounted while(i>=0) // Loop for uncounted bars { Sum_H=0; // Nulling at loop beginning for(n=i;n<=i+Aver_Bars-1;n++) // Loop of summing values { Buf_0[i]=Buf_1[n]; // Value of 0 buffer on i bar i--; // Calculating index of the next bar } } //-------------------------------------------------------------------- return(0); // Exit the special funct. start() } //-------------------------------------------------------------------- bool Crosses() { int i; double H=iHigh(NULL,PERIOD_M1,i); double L=iLow(NULL,PERIOD_M1,i); double O=iOpen(NULL,PERIOD_D1,i); if (O > L && O < H) return(true); else return(EMPTY_VALUE); }
Entschuldigen Sie, dass ich so offen bin, aber Ihr Code zeigt, dass Sie versuchen, etwas zu erreichen, das weit über Ihre Fähigkeiten hinausgeht
Beispiel
bool Crosses() { int i; double H=iHigh(NULL,PERIOD_M1,i); double L=iLow(NULL,PERIOD_M1,i); double O=iOpen(NULL,PERIOD_D1,i); if (O > L && O < H) return(true); else return(EMPTY_VALUE);
Nehmen wir zum Beispiel an, dass i = 1 ist.
double O=iOpen(NULL,PERIOD_D1,1);
Dies gibt den gestrigen Eröffnungskurs zurück
double H=iHigh(NULL,PERIOD_M1,1); double L=iLow(NULL,PERIOD_M1,1);
Diese 2 geben Werte für den letzten geschlossenen 1-Minuten-Balken zurück.
Sie vergleichen also die Werte von vor 1 Minute mit dem Eröffnungskurs von gestern.
Wenn i = 2 ist, vergleichen Sie die Werte von vor 2 Minuten mit dem Eröffnungskurs von vor 2 Tagen.
Sie werden sehen, dass dies nicht das sein kann, was Sie wollen.
Entschuldigen Sie, dass ich so offen bin, aber Ihr Code zeigt, dass Sie versuchen, etwas zu erreichen, das weit über Ihre Fähigkeiten hinausgeht
Beispiel
Nehmen wir zum Beispiel an, dass i = 1 ist.
Dies gibt den gestrigen Eröffnungskurs zurück
Diese 2 geben Werte für den letzten geschlossenen 1-Minuten-Balken zurück.
Sie vergleichen also die Werte von vor 1 Minute mit dem Eröffnungskurs von gestern.
Wenn i = 2 ist, vergleichen Sie die Werte von vor 2 Minuten mit dem Eröffnungskurs von vor 2 Tagen.
Sie werden sehen, dass dies nicht das sein kann, was Sie wollen.
Hallo GumRai,
Danke, dass Sie sich die Zeit genommen haben, mir zu helfen. Sie haben Recht, ich bin noch ein Anfänger und versuche eifrig, EA zu programmieren. Hier ist, was ich zu tun versuche:
1. Vergleichen Sie PERIOD_D1 Open zu jeder Minute PERIOD_M1 bar auf seine eigene D1 bar, so gibt es 1440 M1 Bars mit dem D1 bar zu vergleichen. Dann zähle ich die M1-Balken, die die Bedingung if (O > L && O < H) erfüllen.
2. Speichern Sie die gezählten Balken in einem Array, gehen Sie dann zum nächsten D1-Balken und wiederholen Sie den Zyklus.
3. Die gezählten Balken werden vom Indikator in einem Tagesdiagramm dargestellt. Wenn z.B. die M1-Balken, die den Anweisungen entsprechen, 5 sind, wird diese 5 als Wert des täglichen Bar1 gezeichnet. Angenommen, der nächste Tagesbalken hat einen Wert von 10, dann wird er wieder als Bar1 dargestellt, da der vorherige Balken nach Bar2 verschoben wurde.
Bitte zeigen Sie mir, wie am besten zu codieren diese schien einfache Anweisung, die ich mit kämpfen. Lassen Sie mich wissen, wenn Sie weitere Erklärungen benötigen. und vielen Dank.
Hallo GumRai,
Danke, dass Sie sich die Zeit genommen haben, mir zu helfen. Sie haben Recht, ich bin nur ein Anfänger und eifrig versuchen, hart zu lernen, Kodierung EA. Hier ist, was ich versuche zu tun:
1. Vergleichen Sie PERIOD_D1 Open mit jeder Minute PERIOD_M1 bar auf seine eigene D1 bar, so gibt es 1440 M1 Bars mit dem D1 bar zu vergleichen. Dann zähle ich die M1-Balken, die die Bedingung if (O > L && O < H) erfüllen.
2. Speichern Sie die gezählten Balken in einem Array, gehen Sie dann zum nächsten D1-Balken und wiederholen Sie den Zyklus.
3. Die gezählten Balken werden vom Indikator in einem Tagesdiagramm dargestellt. Wenn z.B. die M1-Balken, die den Anweisungen entsprechen, 5 sind, wird diese 5 als Wert des täglichen Bar1 gezeichnet. Angenommen, der nächste Tagesbalken hat einen Wert von 10, dann wird er wieder als Bar1 dargestellt, da der vorherige Balken nach Bar2 verschoben wurde.
Bitte zeigen Sie mir, wie am besten zu codieren diese schien einfache Anweisung, die ich mit kämpfen. Lassen Sie mich wissen, wenn Sie weitere Erklärungen benötigen. und vielen Dank.
Ich helfe Ihnen gerne, aber ich werde den Code nicht schreiben, denn das würde Ihnen nicht helfen, zu lernen.
Zunächst müssen Sie sich darüber im Klaren sein, dass 1440 M1-Balken nicht immer einem Zeitraum von einem Tag entsprechen. Wenn es während eines Balkens keine Ticks gibt, fehlt dieser Balken in der Historie und es können weniger sein, als Sie erwarten.
Sie benötigen also den Datumswert für den Eröffnungszeitpunkt der D1-Kerze. Können Sie das tun? Probieren Sie es aus und posten Sie Ihren Code
nicht so schnell
Ich weiß, was du versuchst zu tun und dein Code(if (O > L && O < H)) bringt dir nicht das, was du willst
Sehen Sie sich das beigefügte Diagramm an
der Pfeil nach oben ist die heutige Eröffnung
& der Pfeil nachrechts ist der erste Balken, der zu Ihrem Code passt (if (O > L && O < H)), also count = 1
aber wenn Sie darauf achten, schloss der Balken über der heutigen Eröffnung, so dass der Zähler eigentlich = 2 sein sollte (zumindest (vielleicht gibt es noch ein paar weitere Kreuze, die man nur im Tick-Chart nicht erkennen kann))
aber in deinem Code ist count = 1
nicht so schnell
Ich weiß, was du versuchst zu tun und dein Code(if (O > L && O < H)) bringt dir nicht das, was du willst
Sehen Sie sich das beigefügte Diagramm an
der Pfeil nach oben ist die heutige Eröffnung
& der Pfeil nachrechts ist der erste Balken, der zu Ihrem Code passt (if (O > L && O < H)), also count = 1
aber wenn Sie darauf achten, schloss der Balken über der heutigen Eröffnung, so dass der Zähler eigentlich = 2 sein sollte (zumindest (vielleicht gibt es noch ein paar weitere Kreuze, die man nur im Tick-Chart nicht erkennen kann))
aber in deinem Code ist count = 1
So wie ich es verstehe, will er die Bars zählen, die den Eröffnungskurs überspannen - ich kann mich aber auch irren :)
- Zaldy: BITTE HELFEN SIE UNS! IST DAS ÜBERHAUPT MÖGLICH?Schreien Sie uns nicht an. Natürlich ist es möglich.
- Ganzzahlen und Boolesche Zahlen sind konvertierbar. Falsch == 0, wahr = ungleich Null.
return(true); else return(EMPTY_VALUE); return(true); else return(2147483647); return(true); else return(true);
- Sie haben es auch mit drei Zeitrahmen zu tun, D1, Chart, M1. Sie müssen konvertieren.Nicht kompiliert oder getestet.
Counted_bars=IndicatorCounted(); // Number of counted bars for(iCht = Bars - 1 - Counted_bars; iCht >= 0; iCht--){ // Chart bars int iD1 = iBarShift(NULL, PERIOD_D1, Time[iCht]; double openD1 = iOpen(NULL, PERIOD_D1, iD1); int iM1Beg = iBarShift(NULL, PERIOD_M1, Time[iCht], iM1End = -1; if(iCht > 0) iM1End = iBarShift(NULL, PERIOD_M1, Time[iCht-1]; for(Buf_0[i] = 0; iM1Beg > iM1End; iM1Beg--){ double hM1 = iHigh(NULL, PERIOD_M1, iM1Beg), lM1 = iLow(NULL, PERIOD_M1, iM1Beg); // count Bars of M1 Period that crisscross Open price of D1 Period if( hM1 >= openD1 && openD1 >= lM1) Buf_0[iCht]++; } }
Nicht kompiliert oder getestet.
nicht so schnell
Ich weiß, was du versuchst zu tun und dein Code(if (O > L && O < H)) bringt dir nicht das, was du willst
Sehen Sie sich das beigefügte Diagramm an
der Pfeil nach oben ist die heutige Eröffnung
& der Pfeil nachrechts ist der erste Balken, der zu Ihrem Code passt (if (O > L && O < H)), also count = 1
aber wenn Sie darauf achten, schloss der Balken über der heutigen Eröffnung, so dass der Zähler eigentlich = 2 sein sollte (zumindest (vielleicht gibt es noch ein paar weitere Kreuze, die man nur im Tick-Chart nicht erkennen kann))
aber in deinem Code ist count = 1
Hallo Qjol, Ja, der Pfeil nach rechts ist die erste Zählung, die ich will. Diejenigen, die kreuz und quer die D1 Open nur gezählt wird. Nochmals vielen Dank für deine Bemühungen.
- Zaldy: BITTE HILFT MIR JEMAND! IST DAS ÜBERHAUPT MÖGLICH?Schreien Sie uns nicht an. Natürlich ist es möglich.
- Ganzzahlen und Boolesche Zahlen sind konvertierbar. Falsch == 0, wahr = ungleich Null.
- Sie haben es auch mit drei Zeitrahmen zu tun, D1, Chart, M1. Sie müssen konvertieren.Nicht kompiliert oder getestet.
Nicht kompiliert und nicht getestet.
Danke WHRoeder und Entschuldigung für die Großbuchstaben hier! Ich werde Ihre Vorschläge ausprobieren und hier auf das Ergebnis zurückkommen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Grüße! Ich brauche Hilfe zu diesem Indikator. Ich habe verschiedene Methoden ausprobiert, um die Anzahl der Bars in der M1-Periode zu zählen, die auf das Niveau des Eröffnungskurses in der D1-Periode treffen. Ich habe meinen Versuch, es zu codieren, aber nicht in der Lage, es erfolgreich auszuführen. Ich habe mich sehr bemüht, aber ich bin an eine Wand gestoßen, so dass ich jetzt die Hilfe der freundlichen Herren hier um Hilfe bitte!
Hier ist, was ich für diesen Indikator brauche:
1. Wann immer ein Bar in der M1-Periode über den Preis der Eröffnung in der D1-Periode kommt, wird er gezählt. Es gibt 1440 Bars in der M1-Periode für jede D1-Periode, so dass alle 1440 Bars getestet werden.
2. Für jeden D1-Balken wird die Gesamtzahl/D1-Balken summiert und durch einen bestimmten Wert gemittelt. Sagen wir, der Durchschnitt ist 30, diese 30 ist die Anzahl der D1-Balken.
3. Dann wird der Durchschnittswert als Indikator aufgezeichnet.