Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1219

 

Lesvariables statiques déclarées dans une fonction de classe sont transmises à toutes les instances de cette classe ?

Pour une raison quelconque, je m'attendais à ce que ce soit différent pour chaque cas.

L'alternative consiste-t-elle uniquement en des variables au niveau de la classe ou existe-t-il d'autres moyens délicats ?

 

Bonjour, j'ai besoin de spécifier le chemin pour enregistrer le fichier, plus précisément l'historique des tics. Aidez-nous à résoudre ce problème)

//------------------------------------------------------------------
#property copyright "www.forex-tsd.com"
#property link      "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window

//
//
//
//
//

extern string FileName   = "Ticks.csv";
extern bool   SaveVolume = true; 
int fileHandle;

MqlBookInfo book[];

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int  OnInit()                   
{ 
   MarketBookAdd(_Symbol); 
      fileHandle = FileOpen(Symbol()+" - "+FileName,FILE_WRITE|FILE_SHARE_READ|FILE_ANSI|FILE_CSV); 
      return(0); 
}
void OnDeinit(const int reason) 
{
   MarketBookRelease(_Symbol);
   FileClose(fileHandle);
}

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[],
                const double &Open[], const double &High[], const double &Low[], const double &Close[],
                const long &TickVolume[], const long &Volume[], const int &Spread[])
{                
   if (fileHandle <0)
   {
      static bool alerted = false;
         if (!alerted)
         {
            Alert("File : "+Symbol()+" - "+FileName+" could not be opened"); alerted = true;
         }
         return(0);
   }         

   //
   //
   //
   //
   //
   
   bool bget = MarketBookGet(_Symbol,book);
   int bidVolume = 0;
   int askVolume = 0;

      if (bget)
      {
         int    size = ArraySize(book);
         string info = "\n";
            for (int i=0; i<size; i++)
               {
                  if (book[i].type==BOOK_TYPE_SELL) askVolume += (int)book[i].volume;
                  if (book[i].type==BOOK_TYPE_BUY)  bidVolume += (int)book[i].volume;
               }                  
      }            
      
   if (FileSize(fileHandle) == 0)
         FileWriteString(fileHandle,"date and time,bid,ask,bid volume,ask volume\n");
         if (SaveVolume)
               FileWriteString(fileHandle,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)+","+DoubleToString(bidVolume,0)+","+DoubleToString(askVolume,0)+"\n");
         else  FileWriteString(fileHandle,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)+"\n");
         FileFlush(fileHandle);
   return(0);
}
 

@NeuralNetwork

FileOpen

Le fichier est ouvert dans le dossier du terminal client dans le sous-dossier MQL5\Files (ou agent_folder\MQL5\Files en cas de test).

Si FILE_COMMON est spécifié parmi les indicateurs, le fichier est ouvert dans le dossier commun de tous les terminaux clients : \Terminal\Common\Files.

--

vers un autre emplacement uniquement via un "lien symbolique".

      fileHandle = FileOpen(Symbol()+" - "+FileName,FILE_WRITE|FILE_SHARE_READ|FILE_ANSI|FILE_CSV);    // FILE_COMMON 



 
NeuralNetwork:
Merci beaucoup ! Mais je veux définir le chemin d'accès pour enregistrer le fichier en spécifiant un autre lecteur ou dossier. Je ne peux pas le faire...

https://www.mql5.com/ru/docs/files

3 lignes

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Fast235:

@NeuralNetwork

FileOpen

Le fichier est ouvert dans le dossier du terminal client dans le sous-dossier MQL5\Files (ou agent_folder\MQL5\Files en cas de test).

Si FILE_COMMON est spécifié parmi les indicateurs, le fichier est ouvert dans le dossier commun de tous les terminaux clients : \Terminal\Common\Files.

--

vers un autre emplacement uniquement via un "lien symbolique".



Merci beaucoup !
 
Roman Shiredchenko:


comment les admins et les modérateurs vont-ils résoudre le problème d'un robot écrit de travers ?

 

Veuillez m'indiquer s'il est possible d'obtenir des valeurs RSI pour une période hebdomadaire dans le code du conseiller expert, mais de calculer les valeurs pour la semaine, en commençant non pas à partir du lundi, mais par exemple à partir du mercredi (c'est-à-dire pour la semaine de mercredi à mercredi prochain). Je comprends que cela ne fonctionnera pas avec l'iRSI, car il prend des barres hebdomadaires, et elles commencent le lundi.

Pour l'instant, je ne vois qu'une seule façon de le calculer. Existe-t-il une solution plus simple ou une solution toute prête ?

 
Roman Shiredchenko:

Crier, hurler, maudire, ne pas vouloir faire fonctionner son propre code, blâmer les modérateurs et les admins, insulter les modérateurs et les admins...

En général - tout le paquet. Je vous donne une semaine pour vous calmer et corriger vos erreurs. Réfléchi !

 
Valeriy Yastremskiy:

Pour comptabiliser un billet.

Lors de l'ouverture d'une commande, le ticket doit être mémorisé.

Merci.
 
Valeriy Yastremskiy:

Les drapeaux contrôlent soit le nombre de types d'ordres, soit, s'il y a un ticket, l'heure de clôture de l'ordre au marché. S'il n'est pas égal à zéro, l'ordre a été clôturé et le drapeau d'ouverture d'ordre est faux.

Merci, c'est déjà fait, les gens l'ont suggéré )))))))😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃