Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1117

 

Hace tiempo se mencionó en el foro que MT5 añadiría la posibilidad de importar datos históricos personalizados, ¿se ha implementado esto?

 
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

Entiendo lo que falta, la conversión inversa a un array 2D, pero no entiendo cómo

A menos que, por supuesto, lo haya guardado correctamente.

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

Espero que esas líneas también estén presentes.

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

Empieza con uno fácil. Escriba todo en los guiones. Uno para escribir el archivo y otro para leer e imprimir lo que se lee. Para la escritura, haz un simple array de 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();
}

y elimine el número de elementos que desea escribir. De este modo, se escribirá todo el archivo de principio a fin. Comprueba si el archivo aparece en la ruta dada.

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
A continuación, lea e imprima lo que vea. Si ves 1 y 3, hay un problema con la matriz.
 
Top2n:

Esto es lo que obtienes.

Escriba el código de la secuencia de comandos.

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

Leer el código de la secuencia de comandos.

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

y esto es lo que se imprime.

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

Así que no necesitas ningún truco de conversión. Sólo es necesario establecer las mismas matrices desde el principio.

No importa que sea mql5, igual que funcionaría en mql4.

 
Alexey Viktorov:
Luego lee e imprime lo que tienes. Si ves 1 y 3 significa que el problema está en llenar la matriz.

Sinceramente ni siquiera sé lo que pasó, pero todo funcionó, sólo tengo que añadir una línea cada nueva barra, espero que no habrá ninguna pregunta)))

Gracias.

 

¡¡¡Hola a todos!!! Por favor, aconséjeme, quiero descargar una MT4 limpia, pero no puedo encontrar en cualquier lugar, de las bombas fuera del sitio sólo MT5. Por favor, dame la última versión. ¡¡¡Muchas gracias!!!

 
stepan.brend:

¡¡¡Hola a todos!!! Por favor, aconséjeme, quiero descargar una MT4 limpia, pero no puedo encontrar en cualquier lugar, de las bombas fuera del sitio sólo MT5. Por favor, dame la última versión. ¡¡¡Muchas gracias!!!

La única diferencia es el logotipo en el acceso directo.
 
Vitaly Muzichenko:
Su única diferencia es el logotipo en el acceso directo.
El problema es que el mercado no funciona, no puedo instalar ninguna utilidad en MT4. Por favor, aconséjeme qué hacer) Realmente necesitas instalar la utilidad
 
stepan.brend:
El problema es que el mercado no funciona, no puedo instalar ninguna utilidad en MT4. Por favor, aconséjeme qué hacer) Realmente necesito instalar una utilidad
Abra una cuenta en otra empresa de corretaje. u otro tipo de cuenta. La presencia o ausencia de un mercado depende totalmente de la cuenta.
 
Vitalie Postolache:
Abra una cuenta en otra empresa de corretaje. U otro tipo de cuenta. La disponibilidad de un mercado depende totalmente de la cuenta
Vitalie Postolache:
Abra una cuenta en otra empresa de corretaje. U otro tipo de cuenta. Si el mercado no funciona, depende de la cuenta.

He probado con tres DCs y diferentes cuentas, el mercado sigue sin funcionar(

 
stepan.brendHe probado con tres DCs y diferentes cuentas, el mercado sigue sin funcionar (
No hay ningún milagro. ¿Cuál es la versión del terminal? He visto cuentas sin pestaña de señales, pero la mayoría tienen mercado.