Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 253

 
lottamer:

Ich muss den minimalen (wie im Bild gezeigt) und maximalen MACD-Indikatorwert für eine bestimmte Anzahl von Balken bestimmen. (in diesem Fall 20).

Ich fand einen Code, der dies für Preis tut, und dummerweise versucht, HIGH LOW mit MACD zu ersetzen. aber nichts funktioniert....


Kopieren Sie die benötigten MACD-Daten in das Array massMACD[20] und suchen Sie die minimalen ArrayMinimum(massMACD); und
maximalen ArrayMaximum(massMACD); Werte in diesem Array.
 
ALXIMIKS:
Am Ende des benutzerdefinierten macdac einfügen.

P.S. Obwohl es wahrer und besser ist:


wenn ja, funktioniert es nicht....

double MACDBuffer[];
double SignalBuffer[];

 
 int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MACDBuffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MACDBuffer,Bars,9,0,MODE_SMA,i);
        //t=MACDBuffer[0];
        //Print(t*10000);
//---- done
  
  
int max,min;
   static double maxlast,minlast;
   max = ArrayMaximum(MACDBuffer,20,1);
   min = ArrayMinimum(MACDBuffer,20,1);
   if (MACDBuffer[max]!=maxlast){
      maxlast=MACDBuffer[max];
      ObjectDelete  ("highline");   
      ObjectCreate ("highline",1,WindowOnDropped( ) ,0,MACDBuffer[max],0,0);
   }
   if (MACDBuffer[min]!=minlast){
      minlast=MACDBuffer[min];
      ObjectDelete  ("lowline");   
      ObjectCreate ("lowline",1,WindowOnDropped( ) ,0,MACDBuffer[min],0,0);
      Print(min,max);
   }
    return(0);
  }
 
artmedia70:
Kopieren Sie die gewünschten MACD-Daten in das Array massMACD[20] und suchen Sie in diesem Array
minimum ArrayMinimum(massMACD); und
das Maximum ArrayMaximum(massMACD); Werte.


gut.

Die Frage ist nur, WIE werden die Daten in das Array kopiert?

for(int i=1; i<20; i++)
      MACDBuffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);

oder so?

   MACDLineBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);
 
lottamer:


wenn ja, dann funktioniert es nicht....

Am Ende des benutzerdefinierten MACD:

Navigator ==> Eigene Indikatoren ==> MACD ==> PCM (rechte Maustaste) ==> Bearbeiten ==>

 
lottamer:


großartig.

Die Frage ist nur, WIE werden die Daten in das Array kopiert?

oder so?


Mann, das ist doch das Gleiche, nur nicht die Tatsache, dass der Aufruf von iMACD genauso viele Ressourcen benötigt wie sein Quellcode.

iMACD und alle iCostums geben den Wert eines Array-Mitglieds zurück, so dass Sie eine Schleife durchlaufen und die Werte in einem Puffer für weitere Operationen sammeln müssen.

  MACDLineBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);

nicht wahr, weil man nur einen Wert erhält und 20 braucht, also eine Schleife verwenden:

for(int i=1; i<20; i++)
      MACDLineBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);

 
ALXIMIKS:

Am Ende des benutzerdefinierten MACD:

Navigator ==> Eigene Indikatoren ==> MACD ==> PCM (rechte Maustaste) ==> Bearbeiten ==>

es funktioniert :)

Nur tut es sicherlich nicht das, was ich brauche, aber ich werde versuchen, es als Beispiel zu verwenden.

danke

 

Lassen Sie uns von vorne beginnen.

int start()
  {
  
    
for(int i=0; i<20; i++)
MACDBuffer[i] = iMACD(NULL, 0, 12,26,9,PRICE_CLOSE,MODE_MAIN,i);

ist dies genug, um 20 (19 was auch immer) Indikatorwerte in ein Array zu kopieren?

 
lottamer:

Lassen Sie uns von vorne beginnen.

Reicht es aus, 20 (19 was auch immer) Indikatorwerte in ein Array zu kopieren?

Um es klar zu sagen: Wenn jemand etwas braucht und ich etwas weiß, dann versuche ich gerne, dieser Person zu helfen,

aber ich werde ihm nicht nach jedem Furz den Arsch abwischen.

Ja, es ist genug, wenn Sie statische Array double MACDBuffer[20] und nicht genug, wenn Sie dynamische Array double MACDBuffer[].

artmedia70 hat Ihnen das gesagt .

 
ALXIMIKS:

Um es klar zu sagen: Wenn jemand etwas braucht und ich etwas weiß, versuche ich gerne, dieser Person zu helfen,

Aber ich werde ihm nicht nach jedem Furz den Hintern abwischen.

Ja, es ist genug, wenn Sie statische Array double MACDBuffer[20] und nicht genug, wenn Sie dynamische Array double MACDBuffer[].

artmedia70 hat Ihnen das gesagt .


OK, machen wir es statisch.

double MACDBuffer[20];

double min,max;
 
  
 int start()
  {
 
   for(int i=0; i<20; i++)
      MACDBuffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);

   min=ArrayMinimum(MACDBuffer);
   max=ArrayMaximum(MACDBuffer);
  
  Print(min,"____",max);

warum wird 19__0 gedruckt?

 
lottamer:


Ok, lass es statisch sein.

warum wird 19__0 gedruckt?


weil es richtig funktioniert. Sonst noch etwas?
Grund der Beschwerde: