array statico ? - pagina 5

 
AHHHHHHHHH! Ora mi dice LOL

Ok ecco quello che ho ottenuto qualcosa di un po' meglio con alcuni risultati, non capisco completamente i risultati ma penso di poterlo capire da lì e capire perché non ho mai potuto ottenere un risultato

Grazie

//+------------------------------------------------------------------+
//|                                                  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
 
Così ora posso tornare a capire come fare riferimento ai precedenti frattali

Grazie

 
C'è sempre una spiegazione... bisogna solo trovarla :-)
 
RaptorUK:

Sì, i buffer indicatori sono gestiti in modo diverso dagli array ordinari.

v[i] non sta dichiarando l'array, è solo uno degli elementi . . ma double v[]; è un array con zero elementi . . quindi v[anything] sempre = 0

questo mi confonde.
Quindi puoi effettivamente mettere valori nell'array e tuttavia, poiché non è dichiarato, non c'è modo di accedere a quegli elementi senza sapere quale elemento era/è, giusto?

Quindi come fa il buffer a sapere come disegnare la linea di v1[i] se ci sono zero elementi nell'array. ?

È perché è davvero più di un bool statico e non si comporta davvero come un array a quel punto. cioè High[i] = True, quindi disegna High[i] ?
Ma lo disegna con NESSUN valore effettivamente nell'elemento solo True e ok per disegnare High[i] in quel momento?

Si prega di chiarire se non sono nemmeno vicino a questo

E grazie per il tutoraggio
 

Ibuffer degli indicatori sono Array speciali. . . non confondere Array e Buffer, sono simili ma diversi.

Nel codice originale v1[] e v2[] sono buffer, nel tuo ultimo codice sono Array, quando dichiari un Array devi dargli una dimensione, per esempio, v1[50] ha 50 elementi da v1[0] a v1[49]. Il Buffer si ridimensiona automaticamente quando ci sono più elementi necessari e i valori si spostano automaticamente nel Buffer. Considerate la barra attualmente in formazione, la barra 0, quando questa barra si completa un valore di indicatore associato a quella barra deve spostarsi all'indice 1 . . . questo viene fatto automaticamente con i Buffer . . se volete fare qualcosa di simile con gli Array potete farlo, ma dovete codificarlo voi stessi.

 
Ok, capisco, solo che non sapevo che i buffer non erano proprio la stessa cosa, questa è proprio la cosa che avevo bisogno di capire e probabilmente l'avrei capito da un pezzo.

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

Comunque penso che ora potrei fare dei buoni progressi


Vedo che posso mettere questa linea appena sopra la dichiarazione dell'array e mostra l'indicatore, tuttavia stamperà solo 0, e se la metto sotto stampa il valore

 
Posso chiedere informazioni su iFractal e quando val1>0

Presumo che questo significhi ==Vero e poi continua

Quindi nel momento in cui questo è vero, come posso conoscere questo valore dal momento che la semplice stampa stamperebbe un continuo cambiamento nel valore finché è vero

E anche dichiarando l'array e poi dichiarando un elemento nell'array come v1[3]=Alto[i] i risultati di stampa continuano anche a cambiare come val1>0

Quindi sto cercando di capire questo e come potrei congelare il tempo nel momento in cui sarà val1>0 o come faccio a sapere qual è l'effettivo valore frattale senza usare il valore [i] nel buffer poiché non posso ottenere il valore dal buffer come abbiamo discusso prima che [i] non sta dichiarando l'array ed è esso stesso non dichiarato. Beh, parzialmente non dichiarato.

Quindi immagino che dichiarare l'array e assegnare un valore come High[i] produrrà i risultati di stampa che voglio tuttavia, non è fisso come lo è con l'indicatore quindi come fa l'indicatore ad avere un valore fisso e come potrei riprodurre questo per usare questo valore o rinominarlo come qualche altra variabile per essere utile.

Per favore consigliatemi

Grazie






 
Forse dovresti iniziare a spiegare cosa stai cercando di fare. . . . senza menzionare alcun codice. . solo semplice inglese. Probabilmente renderà le cose più chiare per entrambi... ;-)
 
RaptorUK:
Forse dovresti iniziare a spiegare cosa stai cercando di fare. . . . senza menzionare alcun codice. . solo semplice inglese. Probabilmente renderà le cose più chiare per entrambi... ;-)
LOL ok

Credo di voler solo imparare a riferirmi agli ifrattali che il segnale stesso mostrerebbe sul grafico
Non tutti in generale, ma a scegliere 1, o uno precedente, di un alto e/o un basso e selezionarli per l'uso.
Da usare in una sorta di schema di denominazione ABCD

Dato che iFractals sembra quasi fare quello che stavo per creare da solo per questo uso, volevo essere in grado di dare a questi frattali un nome variabile

In modo da poter progettare il codice per fare riferimento a questi iFrattali fissi come mostrato nell'indicatore e come mostrato per v1[i]=High[i] che continua ad essere mostrato finché non se ne forma uno nuovo. L'indicatore mostra il valore che rimane fisso

Quindi stavo per tentare di creare un codice che creasse una variabile per dire l'attuale v1[i]=High[i] e questo potrebbe essere A ma voglio un valore fisso come nell'indicatore non un valore mobile come la mia istruzione Print.

Poi potrei voler selezionare da un precedente High[i] per contrassegnarlo come A o B potrebbe essere C se(A>High[i] in quel momento) e così via. Per cercare di trovare un buon schema ABCD da utilizzare in un'altra parte di una strategia completamente diversa. Ma ho notato che molte persone usano questo tipo di schema ABCD con i fib e molte altre parti e indicatori, ma io volevo solo imparare a creare uno schema ABCD di base e forse anche in seguito fargli disegnare linee di tendenza basate su questi ABCD ecc.

E molte altre cose, ma per ora solo un tipo di ABCD.

Grazie