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

 
Trader7777:
Un'altra domanda, il tester mostra l'errore 138 (ERR_REQUOTE), cosa significa?
Significa che non ci sono requote nel tester. Significa che c'è un errore nell'ordine di compravendita. Molto probabilmente, state cercando di aprire il mercato come uno in sospeso.
 
artmedia70:
Questo significa che non ci sono requote nel tester. Significa che c'è un errore nell'ordine di compravendita. Molto probabilmente, stai cercando di aprire un ordine a mercato in sospeso.

No, non ci sono ordini in sospeso. Cos'è un requote?
 
Trader7777:
No, non ci sono ordini in sospeso. Cos'è un requote?
È quando il prezzo si muove oltre lo slippage consentito durante un tentativo di aprire una posizione di mercato. Il tester non lo mostra, il che significa che stiamo cercando di aprire una posizione non a Bid o Ask, ma a qualche prezzo sconosciuto.
 

Buon pomeriggio, ho una domanda sulla scrittura di dati su file.

Potete dirmi perché in modalità FILE_READ|FILE_WRITE, quando provo a scrivere su un file, scrive sul vecchio file, ma non vi aggiunge nulla?

Si noti che non sta aprendo un nuovo file vuoto e lo sta riempiendo (come in modalità FILE_WRITE), ma lo sta sovrascrivendo - cioè se si sono verificati meno eventi da scrivere durante l'ultima corsa di Soviet che durante la penultima, i resti della penultima corsa si bloccherebbero alla fine del file.

file_log = "expert_" + magic_number + "_log.csv";
handle_log = FileOpen(file_log, FILE_CSV|FILE_READ|FILE_WRITE, ',');
if(handle_log < 0)  {
  Alert("Ошибка при открытии файла ", file_log, "Возможно, файл занят другим приложением.");
  PlaySound("alarm.wav");
}
else  {
  if(FileWrite(handle_log, "time", "ticket", "type", "openprice", "stoploss", "takeprofit", "lot", "closeprice", "effect_points", "деньги советника") < 0  ||    // это заголовки
      FileWrite(handle_log, TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "Советник открыт с параметром delta=", delta) < 0)  {   // для отраж-я возмож. изм-я параметра при рестарте
    Alert( "Ошибка записи в файл ", file_log, " ошибка-", GetLastError() );
    PlaySound("alarm.wav");
  }
}

Il file viene aperto e il primo record (mostrato sopra) viene fatto init. All'inizio, i record di lavoro vengono aggiunti al file secondo gli eventi di turno. Il file viene chiuso in deinit.

 
yan720:

Buon pomeriggio, ho una domanda sulla scrittura di dati su file.

Per favore, ditemi perché in modalità FILE_READ|FILE_WRITE quando provate a scrivere in un file, scrive sul vecchio file, ma non lo aggiunge?

Si noti che non sta aprendo un nuovo file vuoto e lo sta riempiendo (come in modalità FILE_WRITE), ma lo sta sovrascrivendo - cioè se si sono verificati meno eventi da scrivere durante l'ultima corsa di Soviet che durante la penultima, i resti della penultima corsa si bloccherebbero alla fine del file.

Il file viene aperto e il primo record (mostrato sopra) viene fatto init. All'inizio, i record di lavoro sono aggiunti al file secondo gli eventi di turno. Il file viene chiuso in deinit.

Se non mi sbaglio, ci dovrebbero essere solo due opzioni nella funzione di apertura dei file, ma ne avete tre: "FILE_CSV|FILE_READ|FILE_WRITE".

Non avete una funzione che chiude il file, quindi i dati non vengono salvati.

E alla fine, si può aggiungere un cursore di record per andare alla fine quando si aggiunge un nuovo record

 
yan720:

Buon pomeriggio, ho una domanda sulla scrittura di dati su file.

Potete dirmi perché in modalità FILE_READ|FILE_WRITE, quando provo a scrivere su un file, scrive sul vecchio file, ma non vi aggiunge nulla?

Si noti che non sta aprendo un nuovo file vuoto e lo sta riempiendo (come in modalità FILE_WRITE), ma lo sta sovrascrivendo - cioè se si sono verificati meno eventi da scrivere durante l'ultima corsa di Soviet che durante la penultima, i resti della penultima corsa si bloccherebbero alla fine del file.

Il file viene aperto e il primo record (mostrato sopra) viene fatto init. All'inizio, i record di lavoro sono aggiunti al file secondo gli eventi di turno. Il file viene chiuso in deinit.


Hai provato ad andare alla fine del file per scrivere?
 
Vinin:

Hai provato ad andare alla fine del file per scriverlo?

Hmmm... Ha senso... :) Grazie.

Ma come...? Non l'ho visto nella descrizione delle funzioni dei file del linguaggio. Leggi tutto quello che hai in esso attraverso while(!FileIsEnding(handle_log)) o c'è un modo più "diretto"?

 
yan720:

Hmmm... Ha senso... :) Grazie.

Come...? Non ho visto niente del genere nella descrizione delle funzioni dei file del linguaggio. Leggere tutto quello che c'è dentro tramite while(!FileIsEnding(handle_log)) o c'è un modo più "diretto"?


FileSeek()
 
Vinin:

FileSeek()

Grazie.
 
yan720:

Hmmm... Ha senso... :) Grazie.

Ma come...? Non l'ho visto nella descrizione delle funzioni dei file del linguaggio. C'è un modo più "diretto" per leggere tutto quello che c'è dentro attraverso while(!FileIsEnding(handle_log)) o c'è?


Oh, fantastico... Sono certamente contento che il problema sia risolto, ma per qualche motivo non hai notato il mio messaggio, dove dicevo la stessa cosa, con parole leggermente diverse, e dicevo subito dei difetti, tranne la chiusura del file, non ho visto subito dove succede:)
Motivazione: