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

 
Andrey Sokolov #:

Saluti. Puoi darmi un suggerimento? Come in mt5 all'inizializzazione o al tick definire i test?

Finora ho trovato solo OnTester(), che viene chiamato subito prima di OnDeinit().

MQLInfoInteger (MQL_TESTER).

Qualcosa del genere.

 
Nerd Trader #:
last_time = iTime(NULL, 0, 0);

  if(last_time > bar.time_open){
    bar.time_open = last_time;
    coint++;//стартовое значение -1
  }

C'è ovviamente qualcosa che non va qui!

 
 

Perché?

#property indicator_color1 clrIndianRed;
#property indicator_color2 clrMagenta;
#property indicator_color3 clrRed;

extern color Cl1 = clrIndianRed;
extern color Cl2 = clrMagenta;
extern color Cl3 = clrRed;

color sColor[] = {indicator_color1,indicator_color2,indicator_color3}; // Так нормально
color sColor[] = {Cl1,Cl2,Cl3}; // Так ошибки 'Cl1' - constant expression required 

---

Qual è il modo migliore per costruire un array da stringhe di input/esterne?

 
Vitaly Muzichenko #:

Perché?

---

Qual è il modo migliore per assemblare un array da una stringa in ingresso/esterna?

Metti i colori come una stringa in input e poi separa la stringa in un array.

Non voglio mettere nessun codice per i colori in questo momento, lo capirete da soli. Ho una lista di caratteri trasferiti in un array come questo

  string s_arr[]; // В этом массиве будет перечень нужных символов
  if(StringSplit(slist, ',', s_arr) <= 0)
   {
    Print(__FUNCTION__ + " Error converting !");
    return;
   }

Questa è una lista nella variabile di input.

 
Vitaly Muzichenko #:

Perché?

---

Qual è il modo di costruire un array da stringhe di input/esterne?

Sono d'accordo con Alexei.

extern string Colors = "clrIndianRed/clrMagenta/clrRed";
color sColor[];
//+------------------------------------------------------------------+
int OnInit()
  {
   ushort sep  = StringGetCharacter("/",0);
   string tempLevel[];
   int sz1  = StringSplit(Colors,sep,tempLevel);
   ArrayResize(sColor,sz1);
   for(int i=0; i<sz1; i++)
   {
    sColor[i] = StringToColor(tempLevel[i]);Print(i," / ",sColor[i]);
   }
//---
   return(INIT_SUCCEEDED);
  }
 
Alexey Viktorov #:

Inserite i colori come una stringa nell'input e poi dividete la stringa in un array.

Non voglio passare il codice per i colori in questo momento, potete capirlo da soli. Ho un elenco di caratteri trasferiti in un array come questo

Questa è la lista nella variabile di input.

Conosco questo modo, ma non funziona - non c'è modo di selezionare dalla lista


 

In questo momento i colori sono così, non è conveniente, e non riesco a trovare una ragione per cui non posso cambiare il colore, dopo aver applicato la modifica delle impostazioni a standard


 
Vitaly Muzichenko #:

In questo momento i colori sono così, non è conveniente, e non riesco a trovare una ragione per cui non posso cambiare il colore, una volta applicati i parametri cambiano allo standard


Allora è così

extern color Cl1 = clrIndianRed;
extern color Cl2 = clrMagenta;
extern color Cl3 = clrRed;
string Colors = ColorToString(Cl1)+"/"+ColorToString(Cl2)+"/"+ColorToString(Cl3);
color sColor[];
//+------------------------------------------------------------------+
int OnInit()
  {
   ushort sep  = StringGetCharacter("/",0);
   string tempLevel[];
   int sz1  = StringSplit(Colors,sep,tempLevel);
   ArrayResize(sColor,sz1);
   for(int i=0; i<sz1; i++)
   {
    sColor[i] = StringToColor(tempLevel[i]);Print(i," / ",sColor[i]);
   }
//---
   return(INIT_SUCCEEDED);
  }
 
MakarFX #:

Questo è tutto, allora.

Grande, proprio quello di cui ho bisogno!

Grazie!

P.S. Ho trovato il motivo per cui i parametri non venivano salvati, c'erano dei punti e virgola alla fine, sono stati catturati durante la copia da input - rimossi e tutto ha funzionato. Disattenzione.