Questions des débutants MQL5 MT5 MetaTrader 5 - page 1111

 
Roman Sharanov:

Rien n'a changé, il affiche toujours e+321.

Vous n'avez pas montré le code complet. Vous ne savez pas de quel type de tableau il s'agit et quelle est sa taille, dans lequel vous obtenez des données de l'indicateur.

 
J'ai été très stupide, j'ai fait une erreur stupide dans l'initialisation et c'est pourquoi tout n'a pas fonctionné, merci pour votre aide.
 
Vitaly Muzichenko:

Ça marche, c'est la solution la plus simple !

void OnStart()
{
  double d = 1.5;
  
  Print((long)d == d ? (string)(long)d : (string)d);
}
 
Roman Sharanov:

Voici un exemple : copie de trois éléments - de la barre 0, de la barre 1 et de la barre 2 - de tous les tampons d'indicateurs.

Imprime la valeur de la barre #0 de chaque tampon :

//+------------------------------------------------------------------+
//|                                           Simple Heiken_Ashi.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.025
*/
int    handle_iCustom;              // variable for storing the handle of the iCustom indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Period(),"Examples\\Heiken_Ashi");
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double heiken_ashi_open[],heiken_ashi_high[],heiken_ashi_low[],heiken_ashi_close[];
   ArraySetAsSeries(heiken_ashi_open,true);
   ArraySetAsSeries(heiken_ashi_high,true);
   ArraySetAsSeries(heiken_ashi_low,true);
   ArraySetAsSeries(heiken_ashi_close,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,0,start_pos,count,heiken_ashi_open) || 
      !iGetArray(handle_iCustom,1,start_pos,count,heiken_ashi_high) || 
      !iGetArray(handle_iCustom,2,start_pos,count,heiken_ashi_low) || 
      !iGetArray(handle_iCustom,3,start_pos,count,heiken_ashi_close))
     {
      return;
     }
   Comment(DoubleToString(heiken_ashi_open[0],Digits()),"\n",
           DoubleToString(heiken_ashi_high[0],Digits()),"\n",
           DoubleToString(heiken_ashi_low[0],Digits()),"\n",
           DoubleToString(heiken_ashi_close[0],Digits()));
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 

  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,
                 const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+
Dossiers :
 
fxsaber:

C'est juste ce dont vous avez besoin, très "léger". Merci !

 

Veuillez m'indiquer le chemin du dossier partagé pour les terminaux MT5.

//--- открытие файла для записи, с флагом совестного пользования для чтения
   int han=FileOpen(subfolder+"\\experts\\files\\"+folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,",");
   if(han!=INVALID_HANDLE)// если файл открыт удачно
     {
      //ЗДЕСЬ ПРОЦЕДУРА ЗАПИСИ В ФАЙЛ
     }
 
yiduwi:

Pouvez-vous m'indiquer le chemin du dossier partagé pour les terminaux MT5 ?

L'indicateur FILE_COMMON est responsable du dossier partagé de tous les terminaux clients.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...
 
yiduwi:

Indiquez-moi le chemin du dossier partagé pour les terminaux MT5.

Ajouter FILE_COMMON

https://www.mql5.com/ru/docs/constants/io_constants/fileflags

trouver le dossier : dans le terminal : fichier - ouvrir le répertoire de données - dans l'explorateur Windows, un niveau plus haut et ce sera le dossier \Common\Files

 
Merci.
 
Bonjour, chers collègues programmeurs ! Pardonnez-moi cette question stupide, mais elle me turlupine. Comment le programme est exécuté, ou plutôt comment le terminal lit les lignes, quelle est la séquence de leur exécution, ou y a-t-il une vidéo pour voir et comprendre comment tout cela se passe ? parce qu'apprendre un langage sans savoir comment il est lu par un programme est difficile !!!!
Raison: