Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1117

 

Una volta è stato menzionato sul forum che MT5 avrebbe aggiunto la possibilità di importare dati storici personalizzati, è stato implementato?

 
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

Ho capito cosa manca, la conversione inversa in un array 2D, ma non capisco come

A meno che, ovviamente, non l'abbia salvato correttamente.

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

Spero che anche queste corde siano presenti.

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

Comincia con uno facile. Scrivere il tutto in script. Uno per scrivere il file e uno per leggere e stampare ciò che si legge. Per la scrittura, fate un semplice array 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 rimuovi il numero di elementi che vuoi scrivere. In questo modo l'intero file sarà scritto dall'inizio alla fine. Controlla se il file appare nel percorso dato.

void WriteData() // здесь

FileWriteArray(handle,arr); // и здесь
Poi leggete e stampate quello che vedete. Se vedete 1 e 3, c'è un problema con l'array.
 
Top2n:

Ecco cosa si ottiene.

Scrivere il codice dello 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());
  }

Leggere il codice dello 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]);
    }
  }
}
//+------------------------------------------------------------------+

e questo è quello che viene stampato.

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

Quindi non hai bisogno di nessun espediente di conversione. Avete solo bisogno di impostare gli stessi array dall'inizio.

Non fate caso al fatto che si tratta di mql5, allo stesso modo in cui funzionerebbe in mql4.

 
Alexey Viktorov:
Poi leggete e stampate quello che avete. Se vedete 1 e 3 significa che il problema è nel riempimento dell'array.

Onestamente non so nemmeno cosa sia successo, ma ha funzionato tutto, devo solo aggiungere una linea ogni nuova barra, speriamo che non ci siano domande)))

Grazie!

 

Ciao a tutti!!! Per favore consigliatemi, voglio scaricare un MT4 pulito, ma non riesco a trovare da nessuna parte, dalle pompe off site solo MT5. Per favore datemi l'ultima build. Grazie mille!!!

 
stepan.brend:

Ciao a tutti!!! Per favore consigliatemi, voglio scaricare un MT4 pulito, ma non riesco a trovare da nessuna parte, dalle pompe fuori sito solo MT5. Per favore datemi l'ultima build. Grazie mille!!!

Puoi scaricare qualsiasi società di brokeraggio preferita e ottenere l'ultima versione. L'unica differenza è il logo nel collegamento.
 
Vitaly Muzichenko:
L'unica differenza è il logo nella scorciatoia.
Il problema è che il mercato non funziona, non posso installare alcuna utilità su MT4. Si prega di consigliare cosa fare) Hai davvero bisogno di installare l'utilità
 
stepan.brend:
Il problema è che il mercato non funziona, non posso installare alcuna utilità su MT4. Si prega di consigliare cosa fare) È davvero necessario installare l'utilità
Aprire un conto in un'altra società di intermediazione. O un altro tipo di conto. La presenza o l'assenza di un mercato dipende interamente dall'account.
 
Vitalie Postolache:
Aprire un conto in un'altra società di intermediazione. O un altro tipo di conto. La disponibilità o meno di un mercato dipende interamente dall'account
Vitalie Postolache:
Aprire un conto in un'altra società di intermediazione. O un altro tipo di conto. Se il mercato non funziona, dipende dal conto.

Ho provato con tre DC e diversi account, ma il mercato continua a non funzionare.

 
stepan.brend Hoprovato con tre DC e diversi account, ma il mercato continua a non funzionare.
Non c'è nessun miracolo. Qual è la versione del terminale? Ho visto conti senza scheda segnali, ma la maggior parte ha mercato.