Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1117

 

Era uma vez mencionado no fórum que o MT5 adicionaria a capacidade de importar dados históricos personalizados, isso foi implementado?

 
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

Entendo o que falta, a conversão inversa para uma matriz 2D, mas não entendo como

A menos, é claro, que eu o tenha guardado corretamente.

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 essas linhas também estejam presentes.

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

Comece com uma fácil. Escreva tudo isso em roteiros. Um para escrever o arquivo e outro para ler e imprimir o que você lê. Para escrever, faça uma simples matriz 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();
}

e remova o número de elementos que você deseja escrever. Desta forma, o arquivo inteiro será escrito do início ao fim. Verifique se o arquivo aparece no caminho dado.

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
Em seguida, leia e imprima o que você vê. Se você vir 1 e 3, há um problema com a matriz.
 
Top2n:

Aqui está o que você recebe.

Escreva o código do roteiro.

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

Leia o código do roteiro.

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

e isto é o que está impresso.

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

Portanto, você não precisa de nenhum artifício de conversão. Você só precisa definir as mesmas matrizes desde o início.

Não se importe que seja mql5, da mesma forma que funcionaria em mql4.

 
Alexey Viktorov:
Em seguida, leia e imprima o que você tem. Se você vir 1 e 3, significa que o problema está no preenchimento da matriz.

Honestamente nem sei o que aconteceu, mas tudo funcionou, só tenho que acrescentar uma linha a cada nova barra, espero que não haja dúvidas))))

Obrigado!

 

Olá a todos!!! Por favor, me avise, eu quero baixar um MT4 limpo, mas não consigo encontrar em nenhum lugar, a partir das bombas fora do local apenas o MT5. Por favor, me dê a última construção. Muito obrigado!!!

 
stepan.brend:

Olá a todos!!! Por favor, me avise, eu quero baixar um MT4 limpo, mas não consigo encontrar em nenhum lugar, a partir das bombas fora do local apenas o MT5. Por favor, me dê a última construção. Muito obrigado!!!

Você pode baixar qualquer empresa de corretagem favorita e obter a última versão. A única diferença é o logotipo no atalho.
 
Vitaly Muzichenko:
Sua única diferença é o logotipo no atalho.
O problema é que o mercado não está funcionando, não consigo instalar nenhuma utilidade no MT4. Por favor, informe o que fazer) Você realmente precisa instalar o utilitário
 
stepan.brend:
O problema é que o mercado não está funcionando, eu não posso instalar nenhuma utilidade no MT4. Por favor, informe o que fazer) Eu realmente preciso instalar um utilitário
Abrir uma conta em outra empresa de corretagem. Ou outro tipo de conta. A presença ou ausência de um mercado depende inteiramente da conta.
 
Vitalie Postolache:
Abrir uma conta em outra empresa de corretagem. Ou outro tipo de conta. Se um mercado está ou não disponível depende inteiramente da conta
Vitalie Postolache:
Abrir uma conta em outra empresa de corretagem. Ou outro tipo de conta. Se o mercado não funciona, depende da conta.

Tentei três CDs e diferentes contas, o mercado ainda não funciona(

 
stepan.brendTentei três CDs e diferentes contas, o mercado ainda não funciona (
Não há milagre. Qual é a versão do terminal? Eu já vi contas sem tabulação de sinais, mas a maioria tem mercado.