Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 421

 

Ciao, come faccio a trovare il prezzo dell'oggetto più vicino al prezzo corrente dalla parte del nome, all'inizio di "R"

Gli oggetti sono barre orizzontali (OBJ_TREND) con nomi "R 11", "R 7"...

... non mostra niente del genere.

priceR = ObjectGet("R"+"" ,OBJPROP_PRICE1);

.

 
lil_lil:

Salve, come si fa a trovare un oggetto in base alla parte del nome che inizia per "R"?

non lo trova così.

.

L'aiuto dice:

StringFind

Cerca una sottostringa in una stringa.

intStringFind(
stringastring_value, // stringa che stiamo cercando
stringamatch_substring, //cercato
intstart_pos=0// quale posizione per iniziare la ricerca
);

Parametri

valore_stringa

[in] Stringa in cui cercare.

match_substringa

[in] Match_substring da cercare.

start_pos=0

[in] Posizione nella stringa in cui la ricerca dovrebbe essere avviata.

Valore restituito

Restituisce il numero di posizione nella stringa in cui inizia la sottostringa da cercare, o -1 se non viene trovata alcuna sottostringa.

 
Artyom Trishkin:

Il riferimento recita:



Grazie, ma in quale linea stiamo guardando?

 
lil_lil:

Grazie, ma in quale linea stiamo guardando?

Nome dell'oggetto.
 
Artyom Trishkin:
Nome dell'oggetto.
"Stringa da cercare": cosa devo scrivere qui?
priceR = ObjectGet(StringFind( 1,"R",0) ,OBJPROP_PRICE1);

. non c'è niente.

 
Cosa e in quale caso restituisce StringFind()? Ho dato un riferimento completo alla funzione dall'aiuto (anche se l'aiuto è a portata di mano nel MetaEditor - basta mettere il cursore sulla funzione e premere F1)
 
Artyom Trishkin:
Cosa e in quale caso restituisce StringFind()? Ho dato una nota completa della funzione dall'aiuto (anche se l'aiuto è a portata di mano nel MetaEditor - basta mettere il cursore sulla funzione e premere F1).
L'aiuto è aperto, non capisco in quale linea guardare, non si sa ancora nulla, tranne che il nome ha "R".
 
lil_lil:
L'aiuto è aperto, non capisco in quale linea guardare, non si sa ancora nulla se non che c'è una "R" nel nome.

//--- показываем список объектов 
int obj_total=ObjectsTotal();
string name;

for(i=0;i<obj_total;i++)
  {
   name=ObjectName(i);
   if(ObjectType(name)!=OBJ_TREND) continue;
   if(StringFind(name,"R",0)!=-1)
     {
     priceR = ObjectGet(name ,OBJPROP_PRICE1);
     }
  }

Come questo.

 
Alekseu Fedotov:

Ecco fatto.


Grazie.

 

Saluti. Aiuto sta ottenendo un errore di ritorno del volume:

Ho creato un array. Offerta, data e volume..:

extern ulong extreme_volume=50;
ulong volume_start=0;
ulong volume_end=0;

ulong mass_volume[];

volume_start=Volume; //Ругается на эту строку


Marchi: accesso non valido alla matrice