[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 23

 
TarasBY:

1º: la vostra filosofia di cambiare la dimensione dell'array è difettosa fin dall'inizio, si può fare con 10 celle per elaborare le letture degli indicatori in 99 casi su 100;

2°: ricalcolare queste letture ad ogni tick è un capriccio di un cervello disinformato.


Igor, o cominci a dare consigli sensati su come uscire dalla situazione, o non postare affatto.
 

Rough, but to the point) Dopo aver sperimentato, mi sono reso conto che i dati sul numero di punti possono essere sommati in una cella. Questo è sufficiente.

 
FAQ: Igor, o cominci a dare consigli sensati su come uscire dalla situazione, o non postare affatto.
Traduco il punto che stavo facendo in un "buon consiglio": l'uomo sta andando in una direzione senza uscita.
 

Quindi indicategli la giusta direzione, non limitandovi ad affermare il fatto dell'impasse.

Questo è un thread...

 
Fox_RM: Rough, but to the point) Dopo aver sperimentato, mi sono reso conto che i dati sul numero di punti possono essere sommati in una cella. Questo è sufficiente.
Senza il minimo pensiero di offendere o insultare.
 

Va tutto bene! Aiutare le persone su questo forum è inestimabile! Un mese o due fa non sapevo affatto come lavorare con gli array)

 
Fox_RM:

Se l'array è eterogeneo, probabilmente dovreste convertire tutti gli elementi in tipo stringa e poi cercare quello richiesto usando

StringFinde(https://www.mql5.com/ru/forum/138609/page22#613148). Correggetemi se mi sbaglio.


Grazie, ho trovato la funzione.

Solo che non capisco come usarlo correttamente.

Restituisce solo un posto nella stringa dove inizia la parte cercata, ma non una parte.

Ho bisogno di una parte di una stringa.

 
Snegovik:


Grazie, ho trovato la funzione.

Solo che non ho ancora capito come usarlo correttamente.

Restituisce solo il punto della stringa in cui inizia la parte cercata, ma non la parte.

Ho bisogno di una parte della stringa.

StringSubstr().
 
TarasBY:
StringSubstr ().


Proprio quello di cui ho bisogno.

Grazie mille.

 

Buona sera a tutti!

Il problema: non riesco a capire come usare la funzione per trovare il punto di intersezione di due linee (ho provato anche la funzione di Kim, ma il risultato è lo stesso).

Il punto è che il crossover viene occasionalmente rilevato nel posto sbagliato.

Ecco cosa succede:


La linea orizzontale rossa è il livello dei prezzi calcolato dalla funzione. Quello giallo è un livello che dovrebbe essere.

La cosa interessante è che questo bug non accade sempre: spesso l'intersezione è definita come dovrebbe essere...

Qui sotto sto incollando il codice della funzione.

//+----------------------------------------------------------------------------+
void Middle(string nm1,string nm2)
  {
  //double M;
  double x1, x2, x3, x4;
  double y1, y2, y3, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      T = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(T - x1);
      Tt = T;
      }
    }
  return(0);
  }
//+----------------------------------------------------------------------------+

Il trailer contiene un Expert Advisor per testarlo.

Per favore, consigliatemi cosa sto facendo di sbagliato!

Grazie mille in anticipo)

File:
proba_per.mq4  11 kb