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

 

Il y a un temps, il a été mentionné sur le forum que MT5 ajouterait la possibilité d'importer des données historiques personnalisées, cela a-t-il été mis en œuvre ?

 
Top2n:

//--- путь к файлу
   string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
   ResetLastError();
   int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- прочитаем все данные из файла в массив
      FileReadArray(file_handle,arr);
      //--- получим размер массива
      int size=ArraySize(arr);
      //--- распечатаем данные из массива
         Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]);
      Print("Total data = ",size);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      Print("File open failed, error ",GetLastError());
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  = 0.0  = 0.0  = 0.0
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  Total data = 1020100

Je comprends ce qui manque, la conversion inverse en un tableau 2D, mais je ne comprends pas comment

Sauf si, bien sûr, je l'ai sauvegardé correctement.

for(int z=1; z<=ARRAY_SIZE_Y; z++) // Перебор по барам, колонка Y
        {
         for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X
           {
            arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5);                // M(I) SMA
           }
        }
      WriteData(1000);
//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

J'espère que ces lignes sont présentes, elles aussi.

//--- входные параметры
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";

Commencez par une facile. Écrire le tout en scripts. Un pour écrire le fichier et un pour lire et imprimer ce que vous lisez. Pour l'écriture, faites un simple tableau 2x2

int arr[2][2];

void OnStart()
{
int z = 0;
for(int i = 0; i < 2; i++)
  {
   arr[i][z] = i+z+1;
    z++;
  }
WriteData();
}

et retirez le nombre d'éléments que vous voulez écrire. De cette façon, le fichier entier sera écrit du début à la fin. Vérifie si le fichier figure dans le chemin d'accès donné.

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
Ensuite, lisez et imprimez ce que vous voyez. Si vous voyez 1 et 3, il y a un problème avec le tableau.
 
Top2n:

Voici ce que vous obtenez.

Écrire du code de script.

//+------------------------------------------------------------------+
//|                                                   WriteArray.mq5 |
//|                                                         Viktorov |
//|                                                v4forex@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string InpFileName = "data.bin";
string InpDirectoryName = "SomeFolder";  
string path=InpDirectoryName+"//"+InpFileName;
int arr[3][3];
int handle;
void OnStart()
{
int i = 0, z = 0;
for(i = 0; i < 3; i++)
  {
   for(z = 0; z < 3; z++)
    {
     arr[i][z] = i*z+1;
    }
  }
  WriteData();
}
//+------------------------------------------------------------------+
void WriteData()
  {
//--- откроем файл
   ResetLastError();
   handle=FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

Lire le code du script.

//+------------------------------------------------------------------+
//|                                                    ReadArray.mq5 |
//|                                                         Viktorov |
//|                                                v4forex@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string InpFileName = "data.bin";
string InpDirectoryName = "SomeFolder";  
string path=InpDirectoryName+"//"+InpFileName;
int handle;
void OnStart()
{
int arr[3][3];
int i = 0, z = 0;
handle = FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
FileReadArray(handle, arr);
for(i = 0; i < 3; i++)
  {
   for(z = 0; z < 3; z++)
    {
     Print("arr[", i, "][", z, "]", arr[i][z]);
    }
  }
}
//+------------------------------------------------------------------+

et c'est ce qui est imprimé.

2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[0][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[0][1]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[0][2]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[1][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[1][1]2
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[1][2]3
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[2][0]1
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[2][1]3
2017.01.09 12:46:22.979 ReadArray (EURUSD,M1)   arr[2][2]5

Vous n'avez donc pas besoin de gadgets de conversion. Il suffit de définir les mêmes tableaux depuis le début.

Ne vous souciez pas du fait que c'est mql5, de la même manière que cela fonctionnerait dans mql4.

 
Alexey Viktorov:
Puis lisez et imprimez ce que vous avez obtenu. Si vous voyez 1 et 3, cela signifie que le problème se situe au niveau du remplissage du tableau.

Honnêtement, je ne sais même pas ce qui s'est passé, mais tout a fonctionné, je dois juste ajouter une ligne à chaque nouvelle barre, en espérant qu'il n'y aura pas de questions))).

Merci !

 

Salut à tous ! !! S'il vous plaît me conseiller, je veux télécharger un MT4 propre, mais ne peut pas trouver n'importe où, de la pompe hors site que MT5. S'il vous plaît, donnez-moi la dernière version. Merci beaucoup ! !!

 
stepan.brend:

Salut à tous ! !! S'il vous plaît me conseiller, je veux télécharger un MT4 propre, mais ne peut pas trouver n'importe où, de la pompe hors site que MT5. S'il vous plaît, donnez-moi la dernière version. Merci beaucoup ! !!

Vous pouvez télécharger n'importe quelle société de courtage favorite et obtenir la dernière version. La seule différence est le logo dans le raccourci.
 
Vitaly Muzichenko:
Votre seule différence est le logo dans le raccourci.
Le problème est que le marché ne fonctionne pas, je ne peux installer aucun utilitaire sur MT4. Veuillez me conseiller sur ce qu'il faut faire) Vous devez vraiment installer l'utilitaire
 
stepan.brend:
Le problème est que le marché ne fonctionne pas, je ne peux installer aucun utilitaire sur MT4. Veuillez me conseiller sur ce qu'il faut faire) Il faut vraiment installer l'utilitaire
Ouvrez un compte dans une autre société de courtage. Ou autre type de compte. La présence ou l'absence d'une place de marché dépend entièrement du compte.
 
Vitalie Postolache:
Ouvrez un compte dans une autre société de courtage. Ou un autre type de compte. La disponibilité ou non d'une place de marché dépend entièrement du compte.
Vitalie Postolache:
Ouvrez un compte dans une autre société de courtage. Ou un autre type de compte. Si le marché ne fonctionne pas, cela dépend du compte.

J'ai essayé trois DC et différents comptes, le marché ne fonctionne toujours pas(

 
stepan.brendJ'ai essayé trois DCs et différents comptes, le marché ne fonctionne toujours pas(
Il n'y a pas de miracle. Quelle est la version du terminal ? J'ai vu des comptes sans onglet de signaux, mais la plupart ont un marché.
Raison: