statisches Array ? - Seite 3

 

OK, ich sehe etwas,

 while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;    
     }

wann endet diese Schleife? wenn i nicht >=0 ist, d.h. -1

dann ist der nächste Code . .

     for(val1=High[i]; v1[i] == 0 ;i++)  // or v1[i] == EMPTY_VALUE
      {
      Print (v1[i]);
      }

Der Startwert für i ist also -1. . daher Ihr Ausdruck. v[-1] ist tatsächlich = 0, also endet die Schleife.

 
Wenn ich überhaupt etwas ausdrucke, scheint es immer gleich 0 zu sein.

int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
   
     Print (v1[i+10]);
      

Ich habe i auf etwas anderes und die while-Anweisungen geändert und sogar einen völlig anderen Code erstellt und alle scheinen = 0 Ich habe keine Ahnung, warum.
Aber dennoch funktioniert der Indikator und der Puffer scheint val1 innerhalb von v1[i] richtig zu halten, aber ich kann auf nichts im Array verweisen, um etwas davon zu drucken.

alles immer = 0

Ich lese noch ein bisschen weiter.






 
for(v1[i]=High[i]; v1[i] !=0; i++)
      {
      Print (v1[i]);
      }
      

This prints nothing so still having -1 issue I guess
aber wenn sie mit -1 beginnt, dann endet sie, sobald sie einmal durchlaufen wurde, weil i++ sie auch wieder auf Null bringt.

Ich wusste nicht, dass diese for-Anweisung von der while-Anweisung beeinflusst wird, da dies außerhalb der while-Anweisung geschieht

 
int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
      { 
      v1[i]=High[i];
      Print (v1[i]);
      }
      else          
      {
      v1[i]=v1[i+1];
      }

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
Immer noch 0, auch wenn ich innerhalb und vor der Schleife drucke

Es scheint, dass selbst die grundlegendsten Aufgaben sich mir entziehen. Um auch über Bars lesen nicht erwähnen, das Thema der -1 in der Dokumentation oder das Buch zumindest in den Bars oder Predefined Variablen Abschnitte, wo ich dachte, es sollte sein.
Nicht entmutigend. 1,5 Wochen für dieses eine einfache Thema und dann noch das Drucken, von dem ich dachte, dass es die einfachste Aufgabe wäre, die mir helfen würde, in die richtige Richtung zu gehen.

So ein Mist! LOL

Ich werde morgen noch etwas mehr versuchen.
 

Sie haben meinen Beitrag nicht sehr sorgfältig gelesen.

Bars ist zu keiner Zeit gleich -1 und hat auch nichts mit der von mir erwähnten -1 zu tun.

Sie verwenden die Variable i in zwei Schleifen... es sei denn, Sie ändern sie zwischen den Schleifen auf einen anderen Wert, dann ist ihr Startwert für die zweite Schleife der Endwert der ersten Schleife.

 
Ich bin verwirrt


Ich bin meine for-Schleife ganz losgeworden und dachte, dass ich einfach innerhalb der Schleife drucken würde.
Ich habe versucht, i=0 oder i !=0 zu reinitialisieren, ohne Erfolg. oder sogar eine ganz andere Variable wie val3-iFractals.....a
Und a=0 und keine Balken, dann auch von dort aus hochgezählt und der Druck ist immer noch gleich 0.

Ich verstehe nicht, warum das Drucken innerhalb der Schleife auch nicht funktioniert, wie im oben geposteten Code.

Danke

 

Vielleicht können Sie mir eine Frage beantworten...

Warum haben so viele Leute mit wenig Programmiererfahrung Angst davor, Print-Anweisungen hinzuzufügen? Warum wollen Sie sich das Leben so schwer machen . . vielleicht stehen Sie auf S&M ?

Sie haben eine einzige Print-Anweisung . . . und sie gibt 0 aus . . . du weißt nicht einmal, welchen Wert i zu diesem Zeitpunkt hatte, du weißt nicht, welchen Wert val1 hatte . . . weißt du, wie iFractals funktioniert, ich meine, wie es berechnet, was es tut und welchen Wertebereich es liefert ?

 

Ich habe Ihren Code kopiert, einige Druckanweisungen hinzugefügt und ihn ausgeführt ... er druckt ...

2011.09.18 14:42:24 Agent86 EURUSD,H1: v1[29]= 1.4727

 
RaptorUK:

Vielleicht können Sie mir eine Frage beantworten...

Warum haben so viele Leute mit wenig Programmiererfahrung Angst davor, Print-Anweisungen hinzuzufügen? Warum wollen Sie sich das Leben so schwer machen . . vielleicht stehen Sie auf S&M ?

Sie haben eine einzige Print-Anweisung . . und sie gibt 0 aus . . . du weißt nicht einmal, welchen Wert i zu diesem Zeitpunkt hatte, du weißt nicht, welchen Wert val1 hatte . . . weißt du, wie iFractals funktioniert, ich meine, wie es berechnet, was es tut und welchen Wertebereich es liefert ?


Ich habe keine Angst vor dem Hinzufügen von Druckanweisungen, ich habe sie nach jeder Variablen eingefügt und verstehe nicht, was gedruckt wird und warum, weil es nicht das ist, was ich erwartet habe, es zu drucken.
Die einzige Print-Anweisung, die Sie sehen, ist nicht die einzige, die ich dort eingefügt habe. Ich hätte nicht gepostet, wenn ich nur eine einzige Druckanweisung ausprobiert hätte.
Erst nach 2-3 Wochen des Ausprobierens von Hunderten von Dingen und des Lesens und Wiederholens von Hunderten von Beiträgen und Wörterbüchern, Büchern, Dokumentationen und mehr habe ich gepostet, um zu versuchen zu verstehen, wie dieses Array funktioniert und wie man die Elemente und Werte ausdruckt

Ich habe 2-3 Stunden pro Tag daran gearbeitet, um es zu verstehen, und ich bin nicht viel weiter gekommen, obwohl ich eine Menge anderer Dinge gelernt habe, während ich versuchte, dies herauszufinden.

Ich habe den Code komplett neu geschrieben, mit einer for-Schleife anstelle einer while-Schleife und habe das Array auf 100 Elemente begrenzt, weil ich dachte, das würde es für mich etwas vereinfachen; und ich konnte die Werte immer noch nicht drucken.


Ich verstehe es einfach nicht.

Ich dachte, dass iFractals den Wert des Hochs/Tiefs der mittleren Kerze in einer Serie von 5 Kerzen angibt, vorausgesetzt, dass diese 2) Kerzen links und 2) Kerzen rechts höher oder niedriger als die mittlere Kerze sind. Markierung oder Aufzeichnung des Hoch- oder Tiefpunkts der mittleren Kerze.

Ich kenne die tatsächlichen Berechnungen von iFractals nicht, aber ich dachte nicht, dass dies eine Rolle spielen würde, da ich es ausdrucke, wenn es >0 ist, was ich für wahr hielt, und da es auch mit High[i] initialisiert wurde.

Ich verstehe es einfach nicht.


 
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[0]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]= 0


Aus diesem Code und ja, es gab andere Druckanweisungen überall außer für val1 alle anderen Versuche zu drucken v1[i] irgendwo in den Code druckt = 0

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=15.0;
extern int MagicNumber=123486;

double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   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(int i=Bars; i >= 0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
   
      // Print (val1, (" val1")); //will print some 0's
      if (val1 > 0)
         {        
         
          v1[i]=High[i];
 
         }
      else          
         {
         v1[i]=v1[i+1];
         }
        

      val2=iFractals(NULL, 0, MODE_LOWER,i);
     
      if (val2 > 0) 
         {
         v2[i]=Low[i];
         }
      else          v2[i]=v2[i+1];
     
      i--;
       
     }
   
   for(i=50; i>=0; i--)
      {
      Print ("v1[", i, "]= ", v1[i]);
      }

//----
            
                       
            

           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+
Grund der Beschwerde: