//--- путь к файлу 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.0917:20:40.609 TorFid_v02 (EURUSD,H1) = 0.0 = 0.0 = 0.0 2017.01.0917: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(constint 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()); }
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];
voidOnStart() { 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.
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!!!
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
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(
Era uma vez mencionado no fórum que o MT5 adicionaria a capacidade de importar dados históricos personalizados, isso foi implementado?
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) 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 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
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.
FileWriteArray(handle,arr); // и здесь
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][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.
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!!!
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!!!
Sua única diferença é o logotipo no atalho.
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
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(