Domande per principianti in MQL5. I professionisti non passano. - pagina 3

 

Forse è il momento di chiamare in aiuto i moderatori e chiedere loro di cancellare i primi due post dal thread (spero che il signor Yedelkin non si offenda, grazie a lui per aver risposto alle mie domande) Spero che il signor Yedelkin non si offenda, questo post e rinominare questo argomento in"desideri degli appassionati sul miglioramento di MT5" o qualcosa del genere a loro discrezione... Cercherò di cambiare il nome di questo topic per qualcos'altro, lo lascerò al suo posto.

Forse ne verrà fuori qualcosa di buono? Forse lo sentiranno).

 

ha deciso di leggere il file hst, maFileReadString ha dato dei geroglifici.

Come posso combattere questo?

Scrivo l'intestazione µl4 di 5 "EURUSD" "(C)opyright 2003, MetaQuotes Software Corp. Lo sto guardando.

Ho capito tutto tranne le linee, perché è così?

mittente 5

#define AMOUNT_OHLCV 5 
static double OLHCV[AMOUNT_OHLCV];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void  OnStart()  {

  int Tmp[15];
  for(int t=0;t<ArraySize(Tmp);t++)
      Tmp[t]=0;
  string Symbol_Create  = "EURDDD";     
  string FileName = Symbol_Create + "1.hst";
  int handle = FileOpen(FileName, FILE_BIN|FILE_WRITE);
   
  string s="";
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 400,4)+"\n";            
  s=s+"FileWriteString "+FileWriteString(handle, "(C)opyright 2003, MetaQuotes Software Corp.",32)+"\n"; 
  s=s+"FileWriteString "+FileWriteString(handle, Symbol_Create, 6)+"\n"; //Symbol      
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 1,4)+"\n";   //Period        
  s=s+"FileWriteInteger "+FileWriteInteger(handle, 4,4)+"\n";  //Digits           
  s=s+"FileWriteArray "+FileWriteArray(handle, Tmp, 0, 15)+"\n";           
  Comment(s);


   MqlRates EURUSD[];
   int bars=CopyRates("EURUSD",1,0,Bars("EURUSD",1),EURUSD);
   ArraySetAsSeries(EURUSD,true);
   
   for(int i=bars-1;i>=0;i--){
        OLHCV[0] = EURUSD[i].open;
        OLHCV[1] = EURUSD[i].low;
        OLHCV[2] = EURUSD[i].high;
        OLHCV[3] = EURUSD[i].close;
        OLHCV[4] = EURUSD[i].real_volume;
        
        double Tmph = OLHCV[ArrayMaximum(OLHCV,0, AMOUNT_OHLCV - 1)];
        OLHCV[1] = OLHCV[ArrayMinimum(OLHCV, 0, AMOUNT_OHLCV - 1)];
        OLHCV[2] = Tmph;
        FileWriteInteger(handle,EURUSD[i].time,4);  
        FileWriteArray(handle, OLHCV, 0, AMOUNT_OHLCV);
    }
  FileFlush(handle);
  FileClose(handle);
return;
}

ricevitore 4

int start(){
  int Tmp[15];
  for(int t=0;t<ArraySize(Tmp);t++)
      Tmp[t]=0;
  string FileName = "EURDDD1.hst",s="";
  int handle = FileOpenHistory(FileName, FILE_BIN|FILE_WRITE|FILE_READ);

  s= s+FileReadInteger(handle,4)+"\n";            
  s= s+FileReadString(handle,64)+"\n"; 
  s= s+FileReadString(handle,12)+"\n";     
  s= s+FileReadInteger(handle,4)+"\n";           
  s= s+FileReadInteger(handle,4)+"\n";             
  s= s+FileReadArray(handle, Tmp, 0, 15)+"\n";  

  for(int i=20/*(FileSize(handle)-148)/44*/;i>=0;i--){
         s= s+TimeToStr(FileReadInteger(handle,4))+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";             
         s= s+FileReadDouble(handle,8)+"\n";            
         s= s+"-----------------------------------------"+"\n";
  }
  Comment(s);
  return;
}
 
costy_:

e FileReadString ha rinunciato ai geroglifici.

E sono davvero geroglifici... Le conseguenze dell'outsourcing, o un uovo di Pasqua in memoria di Kim Jong-il)
 
Figar0:
Ed è davvero in geroglifico... Conseguenze dell'outsourcing, o uovo di Pasqua in memoria di Kim Jong-il)
OUTROHLIFE E JUNG SIM KIN :(
 

Cari esperti di MT5, nel terminale MT5 ho scoperto che il numero di barre (sui minuti principalmente) agli stessi intervalli di tempo è talvolta diverso.

Ho capito che se non c'è stato nessun cambiamento di prezzo durante la formazione della barra, allora la barra non viene disegnata affatto, cioè viene saltata.

Sono scioccato. Voglio controllare.

È vero o no?

 
Edic:

Cari esperti di MT5, nel terminale MT5 ho scoperto che il numero di barre (sui minuti principalmente) agli stessi intervalli di tempo è talvolta diverso.

Ho capito che se non c'è stato nessun cambiamento di prezzo durante la formazione della barra, allora la barra non viene disegnata affatto, cioè viene saltata.

Sono scioccato. Voglio controllare.

È vero o no?

Se non ci sono stati tick durante il timeframe di formazione della barra, la barra non sarà disegnata.
 

Come posso elaborare tutti gli oggetti grafici di un certo tipo (per esempio OBJ_HLINE)?

Con ObjectsTotal posso trovare il numero di oggetti di questo tipo sul grafico, ma come posso enumerarli attraverso lo stesso for, se non conosco prima il nome dell'oggetto.

Il compito specifico è che ho bisogno di enumerare tutte le linee orizzontali del grafico e ottenere i loro valori in un array.

Grazie

 
Olegts:

Come posso elaborare tutti gli oggetti grafici di un certo tipo (per esempio OBJ_HLINE)?

Con ObjectsTotal posso trovare il numero di oggetti di questo tipo sul grafico, ma come posso enumerarli attraverso lo stesso for, se non conosco prima il nome dell'oggetto.

Il compito specifico è che ho bisogno di enumerare tutte le linee orizzontali del grafico e ottenere i loro valori in un array.

Grazie

Usare"ObjectName" dopo "ObjectsTotal".
 
barabashkakvn:
Usare"ObjectName" dopo "ObjectsTotal".
Capito, grazie)
 
barabashkakvn:
Se non ci sono tick nel timeframe della barra, la barra non viene costruita.
Grazie)