Indikator Frage - Seite 2

 
1 für Wahr, oder 0 für Falsch, richtig?

Ich werde morgen weiter darüber nachdenken und sehen, ob ich es herausfinden kann.
 
Agent86:
1 für Wahr, oder 0 für Falsch richtig? <---- das ist richtig, ABER

Ich werde morgen mehr darüber nachdenken, und sehen, ob ich das herausfinden kann.


UK bezieht sich eher auf Ihre MACD-Werte .
 
faster und slower sind doubles nicht bool ... arbeiten durch die Schleife von seinem Anfangswert und vielleicht 3 Iterationen, also für Werte von Bars, Bars-1, Bars-2 ... was sind die Werte von faster und slower ?
 
//+------------------------------------------------------------------+
//|                                   
//+------------------------------------------------------------------+


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 White

//---- buffers
double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(3);

   SetIndexArrow(0, 111);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");
   

   SetIndexArrow(1, 111);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
  
   
   SetIndexArrow(2, 111);
   SetIndexStyle(2,DRAW_ARROW,STYLE_DOT,1,White);
   SetIndexBuffer(2, v3);
   SetIndexLabel(2,"High A");
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   
   int i=Bars;
   
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars; i>=0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
         {                             
          v1[i]=High[i]; 
                         
          Print ("v1[", i, "]= ", v1[i], " if");
          Print ("i=",i, " faster=", faster);
          Print ("i=",i, " slower=",slower);
          }    
               
      else          
         {
         //v1[i]=v1[i+1];
         //Print ("v1[", i, "]= ", v1[i], " else");
         }
      
      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0)
         {
          v2[i]=Low[i];
          
          Print ("v2[", i, "]= ", v2[i], " if");
         }
          
      else          
         {
         //v2[i]=v2[i+1]; 
         //Print ("v2[", i, "]= ", v2[i], " else");         
         }
      }

   
     
//----
   return(0);
  }
//+------------------------------------------------------------------+




2011.09.28 16:43:30 sup_res EURUSD,M5: i=411 faster=-0.0005

2011.09.28 16:43:30 sup_res EURUSD,M5: v1[411]= 1.3522 wenn
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[414]= 1,3495 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 langsamer=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 schneller=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[414]= 1.3527 wenn
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 langsamer=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 schneller=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[417]= 1.3528 wenn
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[419]= 1,3506 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 langsamer=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 schneller=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[420]= 1.3523 wenn
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 langsamer=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 schneller=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[426]= 1.3522 wenn
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[429]= 1.3481 if


Druckt dies, wenn der Indikator läuft

Aber derselbe Code für einen EA gibt das Array nicht aus

2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=227 faster=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[227]= 0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v2[230]= 0 wenn
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 langsamer=-0.0013
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 schneller=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[232]= 0 wenn
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=825 schneller=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[825]= 0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 langsamer=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 schneller=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[829]= 0 wenn
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 langsamer=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 schneller=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[832]= 0 wenn
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=240 schneller=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[240]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[241]= 0 wenn
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[245]= 0 wenn
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 langsamer=-0.0003
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 schneller=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[245]= 0 wenn
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[249]= 0 if


Ich weiß nicht, warum er das Array nicht mehr ausgibt, denn es ist genau der gleiche Code wie beim Indikator
Wie auch immer, ich werde an dem Indikator für jetzt arbeiten.

Die Werte scheinen unterschiedlich zu sein, von 4-stelligen Bruchzahlen bis zu negativen 4-stelligen Bruchzahlen

Wenn ich den iMACD-Shift auf i ändere, dann sind faster und slower immer = 0

 
Agent86:

Ich habe versucht, if(faster > slower) in verschiedene Bereiche des Codes einzufügen, nur um mit dieser Idee zu spielen. Normalerweise würden diese Ideen in einem EA funktionieren, aber nicht in einem Indikator

IE if(v1 > 0 && schneller > langsamer)

aber das führt dazu, dass der Indikator verschwindet.

Versuchen Sie diese Änderung
//   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
//            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars-1; i>=0; i--)
     {
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL        
 
Agent86:


Ich weiß nicht, warum das Array nicht wieder ausgedruckt wird, denn es ist genau der gleiche Code wie der Indikator.


Sie können keine Indikatorpuffer in einem EA verwenden .. dies erklärt es : https://www.mql5.com/en/articles/1456

schneller und langsamer sind die gleichen Werte in der gesamten Schleife und die wechselnden Werte von i, ist das, was Sie wollen und brauchen?

 
RaptorUK:

Sie können keine Indikatorpuffer in einem EA verwenden .. dies erklärt es : https://www.mql5.com/en/articles/1456

schneller und langsamer sind die gleichen Werte in der gesamten Schleife und die wechselnden Werte von i, ist das, was Sie wollen und brauchen?


Ok, danke für den Link. Das hatte ich ganz vergessen. Das sind eine Menge Infos, die ich mir merken muss. Noobiness Handicap LOL.

Jedenfalls habe ich versucht, die hohen Fraktale nur dann zu bilden, wenn eine andere Bedingung eintritt, z. B. wenn der iMACD oder der EMA oder ein anderer Indikator kreuzt.
So dass die Fraktale nur dann auf dem Indikator angezeigt werden, wenn alle Bedingungen erfüllt sind.
Dann würde ich auch an den niedrigen Fraktalen mit ähnlichen Bedingungen arbeiten.

Ich werde wahrscheinlich versuchen, noch komplexere Bedingungen hinzuzufügen, nur um zu lernen, wie man das macht. Ich meine, dass es vielleicht nicht iFractals ist, sondern ein anderer Indikator mit verschiedenen Bedingungen, der auch mit anderen Indikatoren gekoppelt ist.

Das Design ist ein großes Problem für mich, weil ich keine Erfahrung habe und daher viele der Taktiken oder Theorien, die im allgemeinen Code verwendet werden, nicht kenne. Ich kann also nur lernen, indem ich die Codes anderer Leute lese, um zu sehen, wie sie funktionieren, und versuche zu verstehen, was sie getan haben, und daraus zu lernen.

Wie auch immer, ich werde weiter daran arbeiten, danke
 
WHRoeder:
Versuchen Sie diese Änderung
Hmmm interessant

Die Variable muss also auch innerhalb der Schleife deklariert werden.


Ok, das sollte jetzt Spaß machen, damit herumzuspielen, danke an alle

 

Ich bevorzuge es, alle Schleifenvariablen nur einmal zu instanziieren, und zwar zuerst außerhalb der Schleife. Wenn Sie sie innerhalb der Schleife zu deklarieren, für jede Iteration, der Compiler erstellt neue Variable. obwohl sie das gleiche aussehen, eigentlich sind sie nicht.

 double     faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
           slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars-1; i>=0; i--)
     {
            faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL 
 
diostar:
Ich ziehe es vor, alle Schleifenvariablen nur einmal zu instanziieren, und zwar zuerst außerhalb der Schleife. Wenn Sie sie innerhalb der Schleife deklarieren, erstellt der Compiler bei jeder Iteration eine neue Variable. Auch wenn sie gleich aussehen, sind sie es nicht wirklich.
Wie genau sind Sie zu diesem Schluss gekommen und worin besteht der funktionale Unterschied?
Grund der Beschwerde: