Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 410

 
Trader7777:
Autre question, le testeur affiche l'erreur 138 (ERR_REQUOTE), qu'est-ce que cela signifie ?
Cela signifie qu'il n'y a pas de requêtes dans le testeur. Cela signifie qu'il y a une erreur dans l'ordre de transaction. Le plus probable est que vous essayez d'ouvrir le marché un en tant que marché en attente.
 
artmedia70:
Cela signifie qu'il n'y a pas de requêtes dans le testeur. Cela signifie qu'il y a une erreur dans l'ordre de transaction. Le plus souvent, vous essayez d'ouvrir un ordre au marché comme un ordre en attente.

Non, il n'y a pas de commandes en cours. Qu'est-ce qu'une requote ?
 
Trader7777:
Non, il n'y a pas de commandes en cours. Qu'est-ce qu'une requote ?
C'est lorsque le prix se déplace au-delà du slippage autorisé lors d'une tentative d'ouverture d'une position sur le marché. Le testeur ne le montre pas, ce qui signifie que nous essayons d'ouvrir une position non pas à l'offre ou à la demande, mais à un prix inconnu.
 

Bonjour, j'ai une question sur l'écriture de données dans des fichiers.

Pouvez-vous me dire pourquoi, en mode FILE_READ|FILE_WRITE, lorsque j'essaie d'écrire dans un fichier, le système écrit par-dessus l'ancien fichier, mais ne l'ajoute pas ?

Notez qu'il ne s'agit pas d'ouvrir un nouveau fichier vide et de le remplir (comme en mode FILE_WRITE), mais de l'écraser - c'est-à-dire que si moins d'événements à écrire se sont produits pendant le dernier cycle soviétique que pendant l'avant-dernier, les restes de l'avant-dernier cycle se retrouveront à la fin du fichier.

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");
  }
}

Le fichier est ouvert et le premier enregistrement (illustré ci-dessus) est effectué dans init. Au départ, des enregistrements de travail sont ajoutés au fichier en fonction des événements qui se succèdent. Le fichier est fermé dans deinit.

 
yan720:

Bonjour, j'ai une question sur l'écriture de données dans des fichiers.

Dites-moi pourquoi en mode FILE_READ|FILE_WRITE, lorsque vous essayez d'écrire dans un fichier, il écrit sur l'ancien fichier, mais ne l'ajoute pas ?

Notez qu'il ne s'agit pas d'ouvrir un nouveau fichier vide et de le remplir (comme en mode FILE_WRITE), mais de l'écraser - c'est-à-dire que si moins d'événements à écrire se sont produits pendant le dernier cycle soviétique que pendant l'avant-dernier, les restes de l'avant-dernier cycle se retrouveront à la fin du fichier.

Le fichier est ouvert et le premier enregistrement (illustré ci-dessus) est effectué dans init. Au départ, les enregistrements de travail sont ajoutés au fichier en fonction des événements qui se succèdent. Le fichier est fermé dans deinit.

Si je ne me trompe pas, il ne devrait y avoir que deux options dans la fonction d'ouverture de fichier, mais vous en avez trois : "FILE_CSV|FILE_READ|FILE_WRITE".

Vous n'avez pas de fonction qui ferme le fichier, donc les données ne sont pas sauvegardées.

Et à la fin, vous pouvez ajouter un curseur d'enregistrement pour aller à la toute fin lors de l'ajout d'un nouvel enregistrement.

 
yan720:

Bonjour, j'ai une question sur l'écriture de données dans des fichiers.

Pouvez-vous me dire pourquoi, en mode FILE_READ|FILE_WRITE, lorsque j'essaie d'écrire dans un fichier, le système écrit par-dessus l'ancien fichier, mais ne l'ajoute pas ?

Notez qu'il ne s'agit pas d'ouvrir un nouveau fichier vide et de le remplir (comme en mode FILE_WRITE), mais de l'écraser - c'est-à-dire que si moins d'événements à écrire se sont produits pendant le dernier cycle soviétique que pendant l'avant-dernier, les restes de l'avant-dernier cycle se retrouveront à la fin du fichier.

Le fichier est ouvert et le premier enregistrement (illustré ci-dessus) est effectué dans init. Au départ, des enregistrements de travail sont ajoutés au fichier en fonction des événements qui se succèdent. Le fichier est fermé dans deinit.


Avez-vous essayé d'aller jusqu'à la fin du fichier pour écrire ?
 
Vinin:

Avez-vous essayé d'aller à la fin du fichier pour l'écrire ?

Hmmm... C'est logique... :) Merci.

Mais comment... ? Je n'ai pas vu cela dans la description des fonctions de fichier du langage. Lisez tout ce que vous avez dedans à travers while(!FileIsEnding(handle_log)) ou existe-t-il un moyen plus "direct" ?

 
yan720:

Hmmm... C'est logique... :) Merci.

Comment... ? Je n'ai rien vu de tel dans la description des fonctions de fichier du langage. Lire tout ce qu'il contient via while(!FileIsEnding(handle_log)) ou existe-t-il un moyen plus "direct" ?


FileSeek()
 
Vinin:

FileSeek()

Merci.
 
yan720:

Hmmm... C'est logique... :) Merci.

Mais comment... ? Je n'ai pas vu cela dans la description des fonctions de fichier du langage. Existe-t-il un moyen plus "direct" de lire tout ce qu'il contient à travers while(!FileIsEnding(handle_log)) ou non ?


Oh, génial... Je suis certainement heureux que le problème soit résolu, mais pour une raison quelconque, vous n'avez pas remarqué mon message, où j'ai dit la même chose, avec des mots légèrement différents, et j'ai immédiatement parlé de défauts, sauf pour fermer le fichier, je n'ai pas vu immédiatement où cela se passe :)