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

 
novator:
Buona sera, è possibile utilizzare più di un Medgie in un EA?

Buona sera.

Sì, è così.

 
Integer:

Oh, ti stai agitando. E mi sono eccitato dopo aver dichiarato apertamente che non ho bisogno di questi sourcebook. Io non ne ho bisogno, non ci vedo alcun valore. Per te Vadimi, sono una fonte di grande orgoglio e nient'altro. Te lo ricordo di nuovo - è solo divertente il modo in cui ti aggrappi a loro... e portarli in alto sopra la testa come uno stendardo.


Dimitri, smetti di discutere con Vadim. Faresti meglio a guidare i cercatori :) Da un paio di giorni sto lottando con le biblioteche. La mia domanda si allontana sempre di più sotto la pressione di queste osservazioni...

Questo non è un forum per misurare i peni, è un forum per discutere dei problemi. Chi di voi sia più intelligente non sta a noi deciderlo.

 
hoz:


Dimitri, smetti di discutere con Vadim. Sarebbe meglio se tu potessi guidare i cercatori :) Da un paio di giorni sto lottando con le biblioteche. La mia domanda si allontana sempre di più da me sotto la pressione di queste osservazioni...

Questa non è una gara di piscio, è un thread di discussione. Chi di voi sia più intelligente non sta a me deciderlo.


L'ho visto. Una domanda ben formulata è metà della soluzione. L'inlude non è un'importazione. Dovreste provare a chiamare qualche funzione dal file che non sembra essere collegato. Ciò che è scritto nei registri può non esserlo, non vale la pena di prestarvi attenzione.
 
Integer:

Visto. Una domanda ben formulata è metà della soluzione. L'inlude non è un'importazione. Dovreste provare a chiamare qualche funzione dal file che non sembra essere collegato. Ciò che è scritto nei registri può non esserlo, non vale la pena di prestarvi attenzione.

Quindi, cercherò di chiamarlo domani. Non ho un debugger, quindi non so come affrontare questo compito. Non ci sono nemmeno errori. E il gufo non funziona. Non stampa nulla. Comunque, lo proverò domani e riferirò.
 
novatore 24.11.2013 19:37 #
Buona sera, è possibile utilizzare più medaglie in un EA?
È possibile.
 

Perché non funziona

   int handle;
   handle=FileOpen("openorder.csv",FILE_CSV|FILE_READ|FILE_WRITE,"\n");
   if(handle>0)
     {
      FileWrite(handle,open_price_order,"\n");
      FileClose(handle);
     }
 
itum:

Perché non funziona


Mi sembra che il delimitatore standard nel file CSV non sia un line feed, ma la virgola o qualche altro carattere impostato come delimitatore. E se leggete i dati da CSV come stringhe, e da qualche parte nella stringa c'è una virgola non come delimitatore, allora l'intera stringa deve essere marcata con le virgolette.

Ecco uno sguardo:

DateTime,Name,Country,Volatility,Actual,Previous,Consensus
"20131125 09:00:00", "Nationwide house price index (y/y)", "UK ", "2","", "5.8%", "6.0%"

La prima riga del file contiene valori separati da virgole. Possono essere letti normalmente. La seconda riga ha tutti i dati racchiusi tra virgolette, ma ha anche delle virgole come delimitatori. Ma c'è la linea 5,8% dove la virgola non è un delimitatore. Questa linea deve essere racchiusa tra virgolette. Bene, il codice deve rimuovere le virgolette extra all'inizio e alla fine della stringa. Così facendo, facciamo qualcosa del genere:

   DatTim=FileReadString(handle);StrTrim(DatTim);if(DatTim !="DateTime") err=1;else{
    Name=FileReadString(handle);StrTrim(Name);if(Name !="Name") err=1;else{
     Country=FileReadString(handle);StrTrim(Country);if(Country !="Country") err=1;else{
      Volatility=FileReadString(handle);StrTrim(Volatility);if(Volatility !="Volatility") err=1;else{
       Actual=FileReadString(handle);StrTrim(Actual);if(Actual !="Actual") err=1;else{
        Previous=FileReadString(handle);StrTrim(Previous);if(Previous !="Previous") err=1;else{
         Consensus=FileReadString(handle);StrTrim(Consensus);if(Consensus !="Consensus") {err=1;}}}}}}}

Questa è l'analisi dell'intestazione del file. La funzione StrTrim(DatTim) nel mio codice rimuove solo le virgolette non necessarie se ci sono all'inizio e alla fine della linea. Dopo di che, basta leggere il file e convertire i dati dalla stringa al formato necessario. Ma anche se tutto dipende da quello che avete nel file CSV. Di regola funziona bene se ci sono stringhe nel CSV.

Vedere FileReadString( int handle, int length=0) e FileOpen( string filename, int mode, int delimiter=',')

 

Tutto quello che voglio fare è scrivere il prezzo di apertura di un ordine in CSV. Come si fa?

 
itum:

Tutto quello che voglio fare è scrivere il prezzo di apertura dell'ordine in CSV. Come posso farlo?



Questo sembra essere corretto allora.


handle=FileOpen("openorder.csv",FILE_CSV|FILE_READ|FILE_WRITE,",");

FileSeek(handle,0, SEEK_END);// Questo è nel caso si voglia aggiungere al file esistente.

FileWrite(handle,open_price_order);

Stavo leggendo CSV al contrario. Non mettere "\n" come separatore. Sarà aggiunto dopo ogni FileWrite. Mettere "," o ";". E poi quando aprirete Excel, o chiunque sia, vi chiederà di inserire il delimitatore. Dovrebbe funzionare, non c'è tempo nel tester per controllare.... Perché FileWrite(handle,open_price_order); inserirà una linea nel file, ma se FileWrite(handle,open_price1_order, open_price2_order ); sarà ancora una linea, ma il separatore sarà inserito tra oppenprice. Una successiva chiamata a FileWrite risulterà in una nuova linea nel file.

 
Ciao,
Si tratta di MT4.
Qualcuno può dirmi come impostare i giorni di una settimana in modo che l'EA operi dal lunedì al venerdì, ma meno di 23 ore il venerdì.

Se mi sbaglio è perché ho notato alcune particolarità nei test di alcuni algoritmi che influenzano la data di inizio del test.
Grazie in anticipo!