Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1117

 

Es wurde einmal im Forum erwähnt, dass MT5 die Möglichkeit bieten würde, benutzerdefinierte historische Daten zu importieren, wurde dies umgesetzt?

 
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

Ich verstehe, was fehlt, nämlich die umgekehrte Konvertierung in ein 2D-Array, aber ich verstehe nicht, wie

Es sei denn, ich habe sie richtig gespeichert.

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

Ich hoffe, dass diese Zeilen auch vorhanden sind.

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

Beginnen Sie mit einer einfachen Aufgabe. Schreiben Sie das alles in Skripten. Eine, um die Datei zu schreiben, und eine, um zu lesen und zu drucken, was Sie lesen. Zum Schreiben erstellen Sie ein einfaches 2x2-Array

int arr[2][2];

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

und entfernen Sie die Anzahl der Elemente, die Sie schreiben möchten. Auf diese Weise wird die gesamte Datei von Anfang bis Ende geschrieben. Überprüfen Sie, ob die Datei im angegebenen Pfad enthalten ist.

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
Dann lesen und drucken Sie, was Sie sehen. Wenn Sie 1 und 3 sehen, gibt es ein Problem mit dem Array.
 
Top2n:

Das bekommen Sie.

Schreiben Sie Skriptcode.

//+------------------------------------------------------------------+
//|                                                   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());
  }

Skriptcode lesen.

//+------------------------------------------------------------------+
//|                                                    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]);
    }
  }
}
//+------------------------------------------------------------------+

und das ist, was gedruckt wird.

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

Sie brauchen also keine Bekehrungstaktiken. Sie müssen nur die gleichen Arrays von Anfang an einstellen.

Machen Sie sich nichts daraus, dass es sich um mql5 handelt, so wie es auch in mql4 funktionieren würde.

 
Alexey Viktorov:
Dann lesen und drucken Sie aus, was Sie bekommen haben. Wenn Sie 1 und 3 sehen, bedeutet dies, dass das Problem beim Füllen des Feldes liegt.

Ehrlich gesagt weiß ich nicht einmal, was passiert ist, aber es hat alles funktioniert, ich muss nur für jeden neuen Takt eine Zeile hinzufügen, hoffentlich gibt es keine Fragen)))

Ich danke Ihnen!

 

Hallo zusammen!!! Bitte beraten Sie mich, ich möchte eine saubere MT4 herunterladen, kann aber nirgends finden, von der Off-Site-Pumpen nur MT5. Bitte geben Sie mir den neuesten Build. Herzlichen Dank!!!

 
stepan.brend:

Hallo zusammen!!! Bitte beraten Sie mich, ich möchte eine saubere MT4 herunterladen, kann aber nirgends finden, von der Off-Site-Pumpen nur MT5. Bitte geben Sie mir den neuesten Build. Herzlichen Dank!!!

Sie können jedes beliebige Maklerunternehmen herunterladen und die neueste Version erhalten. Der einzige Unterschied ist das Logo in der Verknüpfung.
 
Vitaly Muzichenko:
Der einzige Unterschied ist das Logo in der Abkürzung.
Das Problem ist, dass der Markt nicht funktioniert, kann ich nicht installieren jedes Dienstprogramm auf MT4. Bitte um Rat, was zu tun ist) Sie müssen unbedingt das Dienstprogramm
 
stepan.brend:
Das Problem ist, dass der Markt nicht funktioniert, kann ich nicht installieren jedes Dienstprogramm auf MT4. Bitte um Rat, was zu tun ist) Sie müssen das Dienstprogramm wirklich installieren
Eröffnen Sie ein Konto bei einem anderen Maklerunternehmen. Oder eine andere Art von Konto. Ob ein Marktplatz vorhanden ist oder nicht, hängt ganz vom Konto ab.
 
Vitalie Postolache:
Eröffnen Sie ein Konto bei einem anderen Maklerunternehmen. Oder eine andere Art von Konto. Ob ein Marktplatz verfügbar ist oder nicht, hängt ganz vom Konto ab
Vitalie Postolache:
Eröffnen Sie ein Konto bei einem anderen Maklerunternehmen. Oder eine andere Art von Konto. Wenn der Markt nicht funktioniert, hängt es vom Konto ab.

Ich habe drei DCs und verschiedene Konten ausprobiert, der Markt funktioniert immer noch nicht(

 
stepan.brend Ichhabe drei DCs und verschiedene Konten ausprobiert, aber der Markt funktioniert immer noch nicht (
Es gibt kein Wunder. Wie lautet die Version des Terminals? Ich habe Konten gesehen, die keine Signale hatten, aber die meisten haben einen Markt.
Grund der Beschwerde: