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

 
ALXIMIKS:
Schauen Sie sich diesen Artikel an, er ist nicht so einfach, wie er klingt, und er ist im Allgemeinen recht nützlich.

Ich habe einen Blick. es wird mich eine Woche dauern, um es im Detail zu studieren. aber was noch schlimmer ist, konnte ich keine Stellen finden, die mit meiner Aufgabe in Verbindung stehen würden. ich färbe die Indikatoren nicht, und ich ändere sie nicht in irgendeiner Weise. ich möchte nur Hochs und Tiefs auf n-letzten Balken finden. es gibt einen Hinweis auf Ähnlichkeit in RSI_Extremums_Sample.mq4 aber ich kann diesen Code nicht tun. es gibt viele unnötige Dinge, der Indikator zeichnet.... und ich brauche es nicht...
 
lottamer:

ich habe es mir angeschaut. ich werde eine woche brauchen, um es im detail zu studieren. aber was noch schlimmer ist, ich konnte keine stellen finden, die für meine aufgabe relevant wären. ich färbe keine indikatoren und ich verändere sie in keiner weise. ich möchte nur maxima und minima auf n-letzten bars finden. es gibt einen hinweis auf die ähnlichkeit in RSI_Extremums_Sample.mq4 aber ich kann mit diesem code nicht umgehen. es ist zu viel unnötiges, der indikator DRAWNS.... und ich brauche es nicht...


3173
artmedia70 27.10.2013 15:42 #
Forexman77:

Ist es möglich, mit der Funktion "ArrayMaximum" das nächstgelegene Maximum eines benutzerdefinierten Indikators zu berechnen?

Oder benötige ich dafür andere Funktionen?

Ich habe es auf diese Weise versucht:

Und nichts kommt heraus. Gurus, könnt ihr mir sagen, wie man das macht?

   for (i=2; i<nBars; i++) {                    
      double a=iCustom(NULL, 0, "EMAF",0,0,i+1);
      double b=iCustom(NULL, 0, "EMAF",0,0,i);
      double c=iCustom(NULL, 0, "EMAF",0,0,i-1);
      if ((a-b)*(b-c)<0) {
         if (b<c) {                                
            // Нашли донышко
            }
         if (b>c) {                           
            // Нашли пичок
            }
         }
      }   
Zur Suche in der EA. NICHT in einem Indikator.

 
lottamer:

Das Einzige, was ich nicht verstehe, ist, wie man z. B. die Extrema des MACD-Indikators anstelle der Extrema des Kurses über n Perioden berechnet?

Ich glaube, ich muss HIGH und LOW im Schlüsselblock in MACD ändern... Aber ich verstehe nicht, wie ... alle meine Versuche, herumzualbern, endeten mit einer Nullung.

Ich verstehe, dass ich ein MACD-Array erstellen muss...

double MACDBuffer[];

Ich habe einen solchen String auch in anderen Expert Advisors gesehen

aber ich kann nicht einfach eines am anderen messen...

Bitte beraten Sie mich, wie ich das machen kann?


Artikel.
 

fand etwas Ähnliches in Kims

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax(double& x[]) {
  if (ArraySize(x)>0) return(x[ArrayMaximum(x)]);
  else {
    Print("ArrayMax(): Массив пуст!");
    return(0);
  }
}

Frage: Wie kann ich ein Array mit Indikatorwerten erstellen?

 
lottamer:

fand etwas Ähnliches in Kims

Frage: Wie kann ich ein Array mit Indikatorwerten erstellen?

ich habe die Frage noch einmal gelesen, ich habe sie zuerst falsch verstanden (

um einen Puffer mit Indikatordaten zu erhalten, können Sie

1) eine Schleife mit dem Sammeln von iMACD-Werten im Puffer ausführen

2) Nehmen Sie den Quellcode des MACD, dort befindet sich ein Puffer

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,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,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,SignalSMA,0,MODE_SMA,i);
//---- done
   return(0);
  }
 
ALXIMIKS:

nochmal lesen, was gefragt wurde, habe es zuerst falsch verstanden(

Um einen Puffer mit den Daten eines Indikators zu erhalten, können Sie:

1) eine Schleife mit dem Sammeln von iMACD-Werten im Puffer ausführen

2) Nehmen Sie den Quellcode aus dem MACD, wo sich der Puffer befindet


Wie kann ich den Puffer visualisieren, sonst verstehe ich nicht, was ich damit machen soll....

Print(MACDBuffer[1]); ?? es wird Null gedruckt... warum? theoretisch sollte es der Wert des 1. bar.... sein

Und noch etwas... Warum MACD mit MA berechnen, wenn es eine direkte Funktion iMACD gibt?

 
lottamer:


und wie visualisiere ich den Puffer, sonst verstehe ich nicht, was ich damit machen soll....

Print(MACDBuffer[1]); ?? es wird Null gedruckt...warum? es sollte der Wert des 1. bar.... sein

Und noch etwas... Warum sollte man den MACD mit dem MA berechnen, wenn es eine direkte Funktion iMACD gibt?


Bitte sagen Sie mir, was Sie brauchen,

aber es sollte klarer sein, so dass auch eine dumme Person es verstehen kann.

 
ALXIMIKS:


Bitte sagen Sie mir, was Sie wollen,

aber auf eine klare Art und Weise, so dass auch der Stumme es versteht.

Ich muss die minimalen (wie auf dem Bild) und maximalen Werte des MACD-Indikators für eine bestimmte Anzahl von Balken bestimmen. (in diesem Fall 20).

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



 
artmedia70:
Es ist die Aufgabe der DCs, eine gute Geschichte zu erzählen. Sie sind faul und geben immer den MCs die Schuld.


Ich danke Ihnen!
 
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....

Am Ende des benutzerdefinierten MACD einfügen.
   int max,min,maxlast,minlast;
   max = ArrayMaximum(MacdBuffer,20,1);
   min = ArrayMinimum(MacdBuffer,20,1);
   if (max!=maxlast){
      ObjectDelete  ("highline");   
      ObjectCreate  ("highline",1,WindowOnDropped( ) ,0,MacdBuffer[max],0,0);
   }
   if (min!=minlast){
      ObjectDelete  ("lowline");   
      ObjectCreate  ("lowline",1,WindowOnDropped( ) ,0,MacdBuffer[min],0,0);
   }

PS. obwohl dies korrekter und besser ist:

   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);
   }