statisches Array ? - Seite 5

 
AHHHHHHHH! Jetzt sagt er mir LOL

Ok, hier ist das, was ich etwas besser hinbekommen habe, mit einigen Ergebnissen, ich verstehe die Ergebnisse nicht ganz, aber ich denke, ich kann es von dort aus herausfinden und verstehen, warum ich NIE ein Ergebnis bekommen konnte

Danke

//+------------------------------------------------------------------+
//|                                                  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[5];
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];
       
     }   
     
     for(i=Bars; i >= 0; i--)
     {
     val1=iFractals(NULL, 0, MODE_UPPER,i);
     if(val1>0)
      {
      double v1[6];
      v1[5]=High[i];
      Print ("v1[", 5, "]= ", v1[5]);
      }
     }
     
        
                       
        
           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3312
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3315
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3302
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3296
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3284
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3299
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3306
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3325
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3361
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3343
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3399
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3419
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3422
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3422
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3398
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3374
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3375
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3378
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3387
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3389
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3389
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3383
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3373
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3372
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3368
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3356
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3366
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3369
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3386
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3361
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3296
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3303
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3314
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3307
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3307
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3302
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3294
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.329
 
Jetzt kann ich wieder herausfinden, wie ich auf die früheren Fraktale verweisen kann

Danke

 
Es gibt immer eine Erklärung... man muss sie nur finden :-)
 
RaptorUK:

Ja, Indikatorpuffer werden anders behandelt als gewöhnliche Arrays.

v[i] deklariert nicht das Array, es ist nur eines der Elemente . . aber double v[]; ist ein Array mit Nullelementen . . also ist v[anything] immer = 0

Das ist für mich verwirrend.
Man kann also tatsächlich Werte in das Array eingeben, aber da es nicht deklariert ist, gibt es keine Möglichkeit, auf diese Elemente zuzugreifen, ohne zu wissen, welches Element es war/ist ? richtig ?

Woher weiß der Puffer also, wie er die Linie von v1[i] zeichnen soll, wenn das Array keine Elemente enthält? ?

Liegt es daran, dass es wirklich nur ein statischer Bool-Wert ist und sich nicht wirklich wie ein Array verhält, d.h. High[i] = True, also High[i] zeichnen?
Aber zeichnet es mit KEINEM Wert tatsächlich in das Element nur True und ok zu zeichnen High[i] in diesem Moment?

Bitte klären Sie mich auf, wenn ich nicht einmal in der Nähe davon bin.

Und danke für die Nachhilfe
 

Indikatorpuffer sind spezielle Arrays ... verwechseln Sie nicht Arrays und Puffer, sie sind ähnlich und doch verschieden.

Im Originalcode sind v1[] und v2[] Puffer, in Ihrem neuen Code sind es Arrays. Wenn Sie ein Array deklarieren, müssen Sie ihm eine Größe geben, z. B. hat v1[50] 50 Elemente von v1[0] bis v1[49]. Die Größe des Puffers wird automatisch angepasst, wenn mehr Elemente benötigt werden, und die Werte verschieben sich automatisch im Puffer. Betrachten Sie den sich gerade bildenden Balken, Balken 0, wenn dieser Balken abgeschlossen ist, muss ein mit diesem Balken verbundener Indikatorwert zum Index 1 verschoben werden ... dies geschieht automatisch mit Puffern ... wenn Sie etwas Ähnliches mit Arrays machen wollen, können Sie das, aber Sie müssen es selbst codieren.

 
Ok, ich verstehe, ich wusste nur nicht, dass Puffer nicht wirklich dasselbe sind, das ist genau das, was ich verstehen musste und ich hätte das wahrscheinlich schon vor einer Weile herausgefunden.

Danke
 
for(i=Bars; i >= 0; i--)
      {
      val3=iFractals(NULL, 0, MODE_UPPER,i);
      if(val3>0)
         {      
         v3[1]=High[i];
         double v3[9];
// if I put v3[1]=High[i]; here in stead of above it will not draw the line, probably because of this buffer topic again
         Print ("v1[", 1, "]= ", v3[1]);
         }
      }

Jedenfalls denke ich, dass ich jetzt einige gute Fortschritte machen könnte


Ich sehe, dass ich diese Zeile direkt über der Deklaration des Arrays einfügen kann, und sie zeigt den Indikator an, gibt aber nur 0 aus, und wenn ich sie darunter einfüge, gibt sie den Wert aus

 
Darf ich eine Frage zu iFractals stellen und wenn val1>0

Ich gehe davon aus, dass dies ==True bedeutet und dann weitergeht

Wie kann ich also an dem Punkt, an dem dies wahr ist, diesen Wert wissen, da einfaches Drucken eine fortlaufende Änderung des Wertes ausgeben würde, solange es wahr ist

Und auch das Deklarieren des Arrays und das anschließende Deklarieren eines Elements im Array, wie z.B. v1[3]=High[i], führt zu Druckergebnissen, die sich auch weiterhin ändern, wenn val1>0 ist

Ich versuche also zu verstehen, wie ich die Zeit in dem Moment einfrieren kann, in dem val1>0 ist, oder wie ich weiß, was der tatsächliche Fraktalwert ist, ohne den [i]-Wert im Puffer zu verwenden, da ich den Wert nicht aus dem Puffer holen kann, da wir zuvor besprochen haben, dass [i] das Array nicht deklariert und selbst undeklariert ist. Nun, teilweise nicht deklariert.

Ich vermute also, dass die Deklaration des Arrays und die Zuweisung eines Wertes als High[i] die gewünschten Druckergebnisse liefern wird, aber es ist nicht fest, wie es beim Indikator der Fall ist.

Bitte um Rat

Danke






 
Vielleicht sollten Sie damit beginnen, zu erklären, was Sie zu tun versuchen ... ohne irgendeinen Code zu erwähnen ... nur in einfachem Englisch. Das macht die Sache wahrscheinlich für uns beide klarer ;-)
 
RaptorUK:
Vielleicht sollten Sie damit beginnen, zu erklären, was Sie zu tun versuchen ... ohne irgendeinen Code zu erwähnen ... nur in einfachem Englisch. Das macht die Sache wahrscheinlich für uns beide klarer ;-)
LOL ok

Ich denke, ich möchte einfach lernen, mich auf die Ifraktale zu beziehen, die das Signal selbst auf dem Chart zeigen würde
Nicht alle im Allgemeinen, sondern 1 oder ein vorhergehendes Hoch und/oder Tief auszuwählen und für die Verwendung auszuwählen.
Zur Verwendung in einer Art ABCD-Benennungsschema

Da iFractals anscheinend fast das tut, was ich für diesen Zweck selbst erstellen wollte, wollte ich diesen Fraktalen einen variablen Namen geben können

Damit ich einen Code entwerfen kann, der sich auf diese festen iFractals bezieht, wie sie im Indikator und bei v1[i]=High[i] angezeigt werden, die so lange angezeigt werden, bis ein neues Fraktal gebildet wird. Der Indikator zeigt den Wert an, der fest bleibt

Ich wollte also versuchen, einen Code zu erstellen, der eine Variable für, sagen wir, den aktuellen Wert v1[i]=High[i] erstellt, und das könnte A sein, aber ich möchte einen festen Wert wie im Indikator und nicht einen beweglichen Wert wie meine Print-Anweisung.

Dann möchte ich vielleicht aus einem früheren High[i] auswählen, um es als A oder B zu markieren, es könnte C sein, wenn (A>High[i] zu dieser Zeit) und so weiter. Ich möchte versuchen, ein gutes ABCD-Schema zu finden, das ich in einem anderen Teil einer völlig anderen Strategie verwenden kann. Aber ich habe bemerkt, dass viele Leute diese Art von ABCD-Schema mit Fibs und vielen anderen Teilen und Indikatoren verwenden, aber ich wollte nur lernen, wie man ein grundlegendes ABCD-Schema erstellt und es vielleicht sogar später dazu bringt, Trendlinien auf der Grundlage dieser ABCDs zu zeichnen usw.

Und viele andere Dinge, aber für jetzt nur eine ABCD Art von Sache.

Danke