Questions d'un "mannequin - page 85

 
AUser:

J'essaie de comprendre comment enregistrer des données dans un fichier. J'ai écrit le code suivant :

Seule la dernière valeur du prix est enregistrée dans un fichier. Je veux la valeur des prix dans une colonne. Où ai-je fait fausse route ?

Voir "Particularités de fonctionnement lors de la spécification des drapeaux de lecture et d'écriture" dans MQL5 Reference / Constantes, énumérations et structures standard / Constantes d'entrée/sortie / Drapeaux d'ouverture de fichier
 

Je suis vraiment stupide)) J'ai écouté les conseils donnés précédemment et j'ai réécrit le code, bien que je ne comprenne pas pourquoi il était comme ça... de toute façon, rien n'a changé. En idée c'est le programme le plus élémentaire pour écrire quelque chose dans un fichier, et je suis tellement bête...))

void OnInit()
{
double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileIsEnding(FILE);
FileWrite(FILE,BID);
}
void OnDeinit(const int reason)
{
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileClose(FILE);
}

Pour rappel, j'essaie d'écrire un programme pour sauvegarder les ticks dans un fichier. Pour une raison quelconque, il n'enregistre que le dernier tick.

 
AUser:

Je suis vraiment stupide)) J'ai écouté les conseils donnés précédemment et j'ai réécrit le code, bien que je ne comprenne pas pourquoi il était comme ça... de toute façon, rien n'a changé. En idée c'est le programme le plus élémentaire pour écrire quelque chose dans un fichier, et je suis tellement bête...))

Pour rappel, j'essaie d'écrire un programme pour sauvegarder les ticks dans un fichier. Pour une raison quelconque, il ne sauvegarde que le dernier tick.

Fonction
FileIsEnding(FILE);

Ne place pas du tout le curseur du fichier à la fin du fichier, comme vous l'aviez probablement prévu.

Arrangez-vous et vous serez heureux. :)

 
AUser:

Je suis vraiment stupide)) J'ai écouté les conseils donnés précédemment et j'ai réécrit le code, bien que je ne comprenne pas pourquoi il était comme ça... de toute façon, rien n'a changé. En idée c'est le programme le plus élémentaire pour écrire quelque chose dans un fichier, et je suis tellement bête...))

Pour rappel, j'essaie d'écrire un programme pour sauvegarder les ticks dans un fichier. Pour une raison quelconque, il n'enregistre que le dernier tick.

C'est à peu près la bonne façon de faire.

int FILE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(FILE);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
   FileWrite(FILE,BID);
  }
//+------------------------------------------------------------------+
 
sergey1294:

que c'est comme ça que ça devrait être

Exactement, merci))
 
ZahvatkiN:

J'ai remarqué que dans MT4, avant d'ouvrir une transaction, vous pouvez définir les niveaux stop-loss et take-profit, mais pas dans MT5, ou est-ce possible, mais d'une manière différente ?

 
sergeev:

ZahvatkiN:

J'ai remarqué que dans MT4, avant d'ouvrir une transaction, vous pouviez définir les niveaux de stoploss et de takeprofit, mais MT5 n'en dispose pas ou est-ce possible, mais d'une manière différente ?


C'est ici que le sujet a été abordé https://www.mql5.com/ru/forum/1111/page561
 

Bonjour.Code.Working TF M15.La transition vers le bloc Open-Close se produit sur une nouvelle barre.

Si, en raison d'une requote (par exemple), la position ne s'ouvre pas, elle sera rouverte sur la barre suivante.

Et si le critère d'entrée (en regardant l'OHLC de la barre précédente) a disparu, la position ne s'ouvrira pas.

Est-ce que je comprends bien ?

ZS. Il est probablement judicieux d'entrer au moins sur une nouvelle minute.

void OnTick()
  {CopyTime (_Symbol,PERIOD_M15,0,1,time);
   if (lastbar==time[0]) return;
   lastbar=time[0];
   
  SearchForExit();
  SearchForEnter();
 
   return;
  }
 

Chers collègues, pouvez-vous dire d'un coup d'œil, sans faire de benchmarking, ce qui est le plus rapide : exécuter CopyTime() de tout l'historique une fois ou l'appeler à chaque fois seulement pour certaines barres (qui peuvent être moins que Bars() de tout l'historique) et copier le temps d'une seule - la barre actuelle - dans Arr ?

Si vous ne regardez pas le repère, mais raisonnez logiquement, sur la base de vos connaissances, comment pouvez-vous justifier votre réponse ? ...Bien que je comprenne que cela va déjà dans le sens de C/C++...

 
L'approche correcte consiste à demander une profondeur raisonnablement appropriée pour chaque défi. Et il n'est pas nécessaire d'effectuer des recherches approfondies. Le point important est que l'historique peut être téléchargé de manière asynchrone à tout moment.