포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1117

 

포럼에서 그들은 MT5가 사용자 기록 데이터를 가져오는 기능을 추가할 것이라고 썼습니다. 이것이 이미 구현되었습니까?

 
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

누락된 것, 2차원 배열로의 역변환을 이해하지만 어떻게

물론 내가 저장했다면

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

이 라인도 있기를 바랍니다.

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

간단하게 시작하세요. 스크립트에서 모두 다시 작성하십시오. 하나는 파일을 쓰기 위한 것이고 다른 하나는 읽은 것을 읽고 인쇄하기 위한 것입니다. 기록을 위해 간단한 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();
}

기록된 요소의 수를 제거합니다. 이것은 처음부터 끝까지 전체 파일을 씁니다 . 파일이 지정된 경로에 나타나는지 확인합니다.

void WriteData() // здесь

FileWriteArray (handle,arr); // и здесь
그런 다음 무슨 일이 있었는지 읽고 인쇄하십시오. 1과 3이 보이면 배열을 채우는 데 문제가 있는 것입니다.
 
Top2n :

자, 무슨 일이 일어나는지 보세요.

스크립트 코드를 작성합니다.

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

스크립트 코드를 읽습니다.

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

그리고 이것이 인쇄된 것입니다.

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

따라서 전환을 위해 종소리와 휘파람이 필요하지 않습니다. 초기에 동일한 어레이를 설정하기만 하면 됩니다.

이것이 mql5라는 사실에 주의하지 마십시오. mql4에서도 같은 방식으로 작동합니다.

 
Alexey Viktorov :
그런 다음 무슨 일이 있었는지 읽고 인쇄하십시오. 1과 3이 보이면 배열을 채우는 데 문제가 있는 것입니다.

솔직히, 나는 무슨 일이 일어 났는지조차 모르지만 모든 것이 잘 작동했습니다. 각 새 막대 에 한 줄을 추가하는 것이 남아 있습니다. 질문이 없기를 바랍니다.)))

고맙습니다!

 

여보세요!!! 말해 주세요. 깨끗한 MT4를 다운로드하고 싶은데 어디에서도 찾을 수 없고 사이트에서 MT5만 다운로드합니다. 깨끗한 최신 빌드를 누군가에게 던져주세요. 미리 감사드립니다!!!

 
stepan.brend :

여보세요!!! 말해 주세요. 깨끗한 MT4를 다운로드하고 싶은데 어디에서도 찾을 수 없고 사이트에서 MT5만 다운로드합니다. 깨끗한 최신 빌드를 누군가에게 던져주세요. 미리 감사드립니다!!!

원하는 DC에서 다운로드하면 레이블의 로고만 다를 뿐 깨끗한 최신 버전을 갖게 됩니다.
 
Vitaly Muzichenko :
원하는 DC에서 다운로드하면 레이블의 로고만 다를 뿐 깨끗한 최신 버전을 갖게 됩니다.
문제는 시장이 작동하지 않는다는 것입니다. MT4에 하나 이상의 유틸리티를 설치할 수 없습니다. 어떻게 해야할지 알려주세요) 유틸리티를 설치하는 것이 매우 필요합니다
 
stepan.brend :
문제는 시장이 작동하지 않는다는 것입니다. MT4에 하나 이상의 유틸리티를 설치할 수 없습니다. 어떻게 해야할지 알려주세요) 유틸리티를 설치하는 것이 매우 필요합니다
다른 DC에서 계정을 엽니다. 또는 다른 유형의 계정. 시장의 존재 여부는 전적으로 계정에 달려 있습니다.
 
Vitalie Postolache :
다른 DC에서 계정을 엽니다. 또는 다른 유형의 계정. 시장의 존재 여부는 전적으로 계정에 달려 있습니다.
비탈리 포스톨라케 :
다른 DC에서 계정을 엽니다. 또는 다른 유형의 계정. 시장의 존재 여부는 전적으로 계정에 달려 있습니다.

3개의 DC와 다른 계정을 시도했지만 시장이 여전히 작동하지 않습니다(

 
stepan.brend : 세 개의 DC와 다른 계정을 시도했지만 시장이 여전히 작동하지 않습니다(
기적은 일어나지 않습니다. 터미널 버전은 무엇입니까? 신호 탭이 없는 계정을 보았지만 대부분 시장이 있습니다.