Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 525

 
-Aleks-:
Sia usata la stringa a="true";

in alternativa attraverso una funzione personalizzata

bool StrToBool(string text)
{
 if(text=="true")return(true);
 if(text=="false")return(false);
}

se si legge la stringa da un file, si può

bool  FileReadBool( 
   int  file_handle      // handle файла 
   );
 
Sergey Gritsay:

in alternativa attraverso una funzione personalizzata

se si legge la stringa da un file, si può

Grazie, soluzione interessante!

Ho bisogno di leggere da un file - ho fatto fare una classe personalizzata, volevo fare una funzione per i valori bool anche lì, ma capisco che l'analogia con FileReadBool non funzionerà?

La classe restituisce un valore per colonna e numero di cella. Estratto:

//+------------------------------------------------------------------+

//| GetDoubleValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetDoubleValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(StringToDouble(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| GetBoolValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetBoolValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(FileReadBool(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

Nickolay72, 2016.02.29 13:56

Buon pomeriggio signori, forse qualcuno ha affrontato un problema simile, consigliatevi. Hoscritto un consulente sul mio computer Win7x32 funziona senza problemi, ma l'ho messo su un altro computer, Win8x64, e non funziona. Non solo che tutto goffamente installato, tre volte reinstallare, fino a quando sono stato convinto che la MT4 è installato l'ottavo, il consigliere solo attraverso il database può essere gettato in atto da un flash drive, e funziona ancora.

 
-Aleks-:

Grazie, soluzione interessante!

Ho bisogno di leggere da un file - ho avuto una classe fatta su misura, volevo fare una funzione per i valori bool lì, ma capisco che FileReadBool non funzionerà per analogia?

La classe restituisce un valore per colonna e numero di cella. Estratto:

//+------------------------------------------------------------------+

//| GetDoubleValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetDoubleValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(StringToDouble(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| GetBoolValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetBoolValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(FileReadBool(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

return(FileReadBool(m_cells[index]));
Quando lo scrivete in questo modo, ovviamente otterrete un errore di compilazione, poiché avete bisogno di passarvi l'handle del file.
 

Nickolay72, 2016.02.29 13:56

Добрый день господа.Может кто сталкивался с такой проблемой,подскажите.Ho scritto un EA, sul mio computer Win7x32 funziona senza problemi. L'ho messo su un altro computer, Win8x64, e non funziona. Non solo è un casino, l'ho reinstallato tre volte, fino a quando mi sono convinto che MT4 è installato su 8, EA solo attraverso il database può essere messo in atto dalla chiavetta, ma non funziona. Tutto nel test, gli ordini sono messi. Nel lavoro sorridente bastardo, ma si rifiuta di lavorare. Come farlo funzionare???

L'unità flash deve essere formattata come NTFS.
 
Sergey Gritsay:
Naturalmente, otterrete un errore di compilazione quando lo scrivete in questo modo, perché dovete passarci l'handle del file.

Non è chiaro perché non abbiano fatto una traduzione standard da stringa a valore per bool.

Scriverò 0 e 1 nel file e farò un controllo.

if ( StringToDouble(m_cells[index])==1 ) return (true);

else return (false);

Funzionerà?

 
-Aleks-:

Non è chiaro perché non abbiano fatto una traduzione standard da stringa a valore per bool.

Scriverò 0 e 1 nel file e farò un controllo.

if ( StringToDouble(m_cells[index])==1 ) return (true);

else return (false);

funzionerà?

dovrebbe, sostituire questa linea qui

double CSVReader::GetBoolValue(int row,int column)

cambiarlo anche in

bool CSVReader::GetBoolValue(int row,int column)
 
Sergey Gritsay:

dovrebbe, questa linea qui.

sostituire anche questa linea con

Grazie! Farò un tentativo.
 
Karputov Vladimir:

Nickolay72, 2016.02.29 13:56

L'unità flash deve essere formattata come NTFS.
La chiavetta è formattata, il terminale è configurato per il trading automatico, l'EA è acceso - non fa trading.