array statico ?

 

Ciao a tutti,

Prima di tutto grazie a tutti per tutte le risposte, è stato fantastico imparare MQL4

Sto andando avanti per capire come costruire gli array

Oggetto:

Come memorizzare i segnali in un array statico per esempio: Alti e bassi di una serie di candele ecc, probabilmente metterò una piccola linea sopra ogni alto e basso.

Quindi sto pensando ad un array statico[1,2,3,4,5,6,7]

array[1] = (Low[3] < Low[4] && Low[3] < Low[3]) //o qualcosa del genere?

Low_1 = array[1]

Low_2 = array[2] e così via.

Questo sarebbe un modo standard per farlo o sono fuori strada?

Per favore consigliatemi grazie

 

Leggete prima... poi rileggete finché non lo capite.

https://book.mql4.com/variables/arrays

Per esempio, il primo elemento di un array è l'elemento 0 , un po' come Bars, fumoso, eh? ;-)

 
  1. Sei fuori strada.
  2. array[1,2,3,4,5,6,7] giberish
  3. array[1] = (Low[3] < Low[4] && Low[3]... è array un bool
  4. Low_1 = array[1] implica che l'array non è un bool
  5. "memorizza i segnali in un array statico" perché ha bisogno di essere statico quando puoi calcolarli ogni volta che è necessario.
 

ops volevo dire int array[1][7];

Grazie per la risposta

Beh, dopo qualche altra lettura, la tua direzione e le tue domande, credo che un array potrebbe non essere quello che sto cercando di fare.

Fondamentalmente voglio imparare a creare la mia versione definita di alti e bassi; ed essere in grado di fare riferimento ad essi per un segnale anche dopo la formazione di nuove barre. Ma solo un numero di essi che scelgo, non l'intera storia completa di alti e bassi.
Forse sono sulla strada sbagliata.

Ci ripenserò ancora un po'.

Grazie, grazie.

 
Agent86:


Fondamentalmente voglio imparare a creare la mia versione definita di alti e bassi; ed essere in grado di fare riferimento ad essi per un segnale anche dopo la formazione di nuove barre. Ma solo un certo numero di essi che scelgo, non l'intera storia completa di alti e bassi.

Perché? Puoi spiegare cosa stai cercando di ottenere?
 

Penso che farò qualcosa di più simile a questo:

Credo che questo faccia sì che questo post non riguardi più gli array a questo punto, quindi ritratterò questa domanda fino a quando non potrò imparare di più sugli array


Grazie.

static double Low_A;
   
   if(Low[2] < Low[2]
      && Low [2] < Low[1])
      {
      Low_A = Low[3];
      Print (Low_A + " Low_A has formed");
      }
 
RaptorUK:
Perché? Puoi spiegare cosa stai cercando di ottenere?

Beh certo, non si tratta di massimi e minimi di una particolare candela ma forse di una serie di candele.

Diciamo che un esempio potrebbe essere quello di chiamare un Low_A a seconda di quante candele desidero utilizzare, ma potrebbe essere quello di dire che un low è considerato 4 candele più alte a sinistra e 4 candele più alte a destra, e questa candela low sarebbe considerata un Low_A

Oppure potrebbe essere quello di chiamare più candele, o meno per formare un Low o High, e poi creare altri come questo per Highs, e Lows.
Poi creare alcune funzioni per confrontare i precedenti minimi con i successivi minimi, e i precedenti massimi con i successivi massimi.

Poi forse disegnare una linea di tendenza da una serie di 2) alti/bassi o 3/alti/bassi o forse anche più

O potrei semplicemente usare come in questo esempio 1 candela che ha 1 candela più bassa a sinistra e 1 candela più bassa a destra e chiamare questo un basso.

Inizialmente stavo considerando di mettere il risultato in un array, ma non credo che questo farà ciò che volevo, o almeno non capisco abbastanza bene gli array per determinarlo a questo punto. Qualche altra lettura senza dubbio mi chiarirà le idee. HA !

Non ero davvero sicuro che gli array sarebbero stati utili per questo, per memorizzare una serie di alti e bassi che definisco.
 

Se stampo Low[2] mi dà 8 cifre invece di 5 cifre, e alcune sono tutte 0.0000000

Probabilmente perché il tipo di dati che ho usato era statico doppio Low_A;

Non sono sicuro se ho bisogno di farlo stampare correttamente, tuttavia allo scopo di memorizzare la statica corretta, non sono sicuro di quali dati usare.

 
OK, sto abbandonando l'array statico e l'idea del doppio statico

Ho bisogno di un nuovo design, è ovvio che quello che stavo cercando di fare non funzionerà correttamente e ora capisco perché.

Quindi, di nuovo al tavolo da disegno. OUCH
 

Torniamo a questo,

Dopo un po' più di apprendimento mi stavo chiedendo se esiste anche una cosa come un array statico, o se un array è statico principalmente per impostazione predefinita, e dopo aver letto i link che hai fornito dico che tutti sono statici per impostazione predefinita. Grande.


Comunque, sto pensando a iFractals invece di cercare di segnare i massimi e i minimi come li definisco io. Posso usare i Fractals per ora fino a quando non avrò una migliore conoscenza e più letture.

Quindi, per quanto riguarda gli iFractal, come posso contrassegnarli e fare riferimento ad essi?
Potrei semplicemente creare ulteriori iFractal e cambiare lo shift e riferirmi ad esso in questo modo, o lo shift con iFractal parlerà ancora di Bars e non del Fractal precedente?

//+------------------------------------------------------------------+
//|                Support and Resistance                            |
//|                Copyright © 2004/5     Barry Stander              |
//|                http://www.4Africa.net/4meta/                     |
//+------------------------------------------------------------------+

#property copyright "Support and Resistance             Barry_Stander_4@yahoo.com"
#property link      "http://www.4Africa.net/4meta/"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

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

   SetIndexArrow(0, 119);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");

   SetIndexArrow(1, 119);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   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--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+


Qualcuno ha scritto questo codice e capisco come funziona, ma non sono sicuro di capire come potrei selezionare dall'array un particolare High e/o Low aka Support/Resistance.

Voglio dire che posso sicuramente fare una funzione che aprirebbe un trade if(val1 > imacd) o qualcosa del genere, ma che dire dei precedenti iFractal, o diciamo 2 indietro,

Sarebbe semplicemente una questione di spostamento?

O ho bisogno di mettere questo in un altro array di qualche tipo?

Per favore consigliatemi

Grazie

 
Ci sono 2 buffer (array) che contengono i valori dei prezzi dei frattali. . . val1 & val2. Se vuoi trovare i valori precedenti dei frattali devi semplicemente fare un loop, incrementando un valore di shift, e controllare i valori del buffer finché non trovi quelli che non sono EMPTY_VALUE ( https://docs.mql4.com/customind/SetIndexEmptyValue )
Motivazione: