Wie programmiert man? - Seite 337

 
at120:
Hallo Mladen!

Ich denke der Aufruf meines iCustoms ist richtig, denn im Test und normal (Daten exportieren oder als indi verwenden)

funktioniert es bis jetzt einwandfrei. Ich denke das Problem ist wie du erwähnt hast value double/array.

Wenn ich jetzt einen

double mom1[];

mom1 = iCustom(NULL,0, "myIndi",0,i);

und als ein -> mom(mom1,Bars,20,i);

-> "mom" - Parameter conversation nicht erlaubt

Wie kann ich das richtig schreiben?

Vielen Dank und auf Wiedersehen, AT

Versuch es mal so:

mom(mom1,Bars,20,i);[/PHP]

Also, change the mom function to be like this :

[PHP]double Mom(double& series[], int period, int totcount, int index) { if (totcount<1 || period<1) return (EMPTY_VALUE); if (indextotcount-1) return (EMPTY_VALUE); return (series-series); }
 

Hallo Mladen!

Danke für deine Hilfe!

Mein Problem ist, dass ich die "const" brauche, weil andere Teile des Programms sie brauchen...

Alles" neu zu schreiben ist zu viel Arbeit, also ist die Frage, ob ich es andersherum machen kann,

so dass die mom1 mit der Unterfunktion funktioniert?

Vielen Dank und auf Wiedersehen, AT

 
at120:
Hallo Mladen!

Vielen Dank für Ihre Hilfe!

Mein Problem ist, dass ich die "const" brauche, weil andere Teile des Programms sie brauchen...

Alles" neu zu schreiben ist zu viel Arbeit, also ist die Frage, kann ich es andersherum machen,

so dass die mom1-Funktion mit der Unterfunktion funktioniert?

Vielen Dank und tschüss, AT

Sie können die mom-Funktion so verwenden, wie sie ist (und den Rest)

Ändern Sie einfach mom(mom1,Bars,20,i); in mom(mom1,Bars,20,i);

 

dann bekomme ich den Fehler:

-> "mom1" - Parameter conversation not allowed

Mann, ist das kompliziert... irgendeine andere Idee?

Danke und tschüss, AT

 
at120:
dann bekomme ich den Fehler:

-> "mom1" - Parameter Konversation nicht erlaubt

Mann, das ist knifflig... irgendeine andere Idee?

Danke und auf Wiedersehen, AT

Ich bekomme diesen Fehler nicht

Siehe das Beispiel:

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

double mom = Mom(buffer,10,50,0);

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

Kompiliert ohne jegliche Fehler

 

Hallo Mladen!

Vielleicht liegt es an einer for {} Funktion? (um die Balken zu erhalten?) oder wegen der...

der andere Punkt ist: mom1 ist eine benutzerdefinierte Indi... mom1 = iCustom(NULL,0, "myIndi",0,i);

was ich hier aufrufe: mom(mom1,Bars,20,i);

Vielen Dank für Ihre Hilfe!!

Tschüss, AT

 
at120:
Hallo Mladen!

Vielleicht liegt es an einer for {} Funktion? (um die Balken zu erhalten?) oder wegen der...

der andere Punkt ist: mom1 ist eine benutzerdefinierte Indi... mom1 = iCustom(NULL,0, "myIndi",0,i);

was ich hier aufrufe: mom(mom1,Bars,20,i);

Vielen Dank für Ihre Hilfe!!

Tschüss, AT

Nein, das kann nicht die Ursache sein

Siehe dieses Beispiel:

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

buffer = iCustom(NULL,0,"custom name",0,i);

double mom = Mom(buffer,10,50,i);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

Auch, keine Compiler-Fehler überhaupt

 

Hallo Mladen!

Vielleicht, weil mein Code eher so aussieht, und es gibt einen "Fehler"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

double mom1;

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Danke und tschüss, AT

 
at120:
Hallo Mladen!

Vielleicht, weil mein Code eher so aussieht, und es gibt einen "Fehler"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

double mom1;

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);
Danke und auf Wiedersehen, AT

bei120

In deinem Code ist mom1 als double (einfache double-Variable) und nicht als Array oder Puffer definiert.

Definiere sie auf die gleiche Art und Weise wie der "buffer" definiert ist, füge sie in der init Sektion zu buffers hinzu und es wird OK sein (stelle sicher, dass du die Anzahl der buffers entsprechend anpasst)

 

Hallo Malden!

Danke für deine Unterstützung! ;-)

Sogar, wenn ich den Code so schreibe, wie du mir gesagt hast:

(Ich denke schon...)

#property indicator_chart_window

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

//doesn't work - no value in indi

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Also wenn ich die "Erste" Version verwende, bekomme ich keinen Wert...

Wenn ich die zweite Version verwende, bekomme ich den Fehler... hmmm.

Nur der Aufruf von mom1 funktioniert... aber das ist nicht der richtige Wert...

Vielen Dank für Ihre Hilfe!

Tschüss, AT