Der Indikator funktioniert soweit auch wie gewünscht bis auf das er beim Aufruf die Vergangenheit / die vergangenen Bars nicht berechnet.
Damit dies nicht passiert waren eigentlich folgende Zeilen vorgesehen ( nach dem Beispiel von Codersguru)
int start()
{
int counted_bars=IndicatorCounted(); // counted_bars enthält nun eine Zahl der bereits gezählten Bars
// last counted bar will be recounted
if (counted_bars>0) counted_bars--;
int pos=Bars-counted_bars ; // Bars ist die Anzahl aller Bars , pos die Anzahl der noch nicht gezählten Bars, also beim ersten Aufruf alle
double dHigh , dLow , dOpen , dClose ,dResultA;
// Calculation loop
while (pos>=0) // gibt die Anzahl der Durchläufe an
{
dHigh = High[pos];
dLow = Low[pos];
dOpen = Open[pos];
dClose = Close[pos];
dResultA =(dClose-dOpen)/(dHigh-dLow);
Datenbank[pos] = dResultA ;
pos-- ; // Anzahl der kommenden Durchläufe wird um 1 verringert
}
Eigentlich müsste somit doch immer beim ersten Start die komplette Vergangenheit des Charts berechnet werden und dann bei erneuten Aufruf des int start { } der letzte Bar erneut. Anscheinend wird aber immer nur der letzte Bar berechnet. Wo liegt mein Fehler?
Hallo liebe Forengemeinde,
ich begebe mich gerade mithilfe des Tutorials von Codersguru an das Lernen von MQL4.
Zur Zeit versuche ich meinen eigenen Indikator zu entwerfen indem ich mich grob an die Vorlage des von Codersguru angeführten Beispielindikator halte.
( Codergurus Tutorial // Lesson 12)
Der Indikator funktioniert soweit auch wie gewünscht bis auf das er beim Aufruf die Vergangenheit / die vergangenen Bars nicht berechnet.
Damit dies nicht passiert waren eigentlich folgende Zeilen vorgesehen ( nach dem Beispiel von Codersguru)
int start() { int counted_bars=IndicatorCounted(); // counted_bars enthält nun eine Zahl der bereits gezählten Bars // last counted bar will be recounted if (counted_bars>0) counted_bars--; int pos=Bars-counted_bars ; // Bars ist die Anzahl aller Bars , pos die Anzahl der noch nicht gezählten Bars, also beim ersten Aufruf alle double dHigh , dLow , dOpen , dClose ,dResultA; // Calculation loop while (pos>=0) // gibt die Anzahl der Durchläufe an { dHigh = High[pos]; dLow = Low[pos]; dOpen = Open[pos]; dClose = Close[pos]; dResultA =(dClose-dOpen)/(dHigh-dLow); Datenbank[pos] = dResultA ; pos-- ; // Anzahl der kommenden Durchläufe wird um 1 verringert }Eigentlich müsste somit doch immer beim ersten Start die komplette Vergangenheit des Charts berechnet werden und dann bei erneuten Aufruf des int start { } der letzte Bar erneut. Anscheinend wird aber immer nur der letzte Bar berechnet. Wo liegt mein Fehler?
Vielen Dank im Vorraus
Bearbeitet von Mh47