Помогите прочитать .set файл - страница 3

 
Sergey Gritsay:
Извиняюсь не тот файл скинул, сами файлы кидаю сюда C:\Users\Aser\AppData\Roaming\MetaQuotes\Terminal\Common\Files

Что-то ни в одном коде я не нахожу флага FILE_COMMON кроме как в примерах Igor Zakharov

 
Sergey Gritsay:

При таком запросе

handle=FileOpen("your_name.set",FILE_COMMON|FILE_TXT|FILE_SHARE_READ|FILE_ANSI,"\r\n");


выдает ошибку.

Можно более точный пример

А при таком запросе не хватает флага FILE_READ.

 
Alexey Viktorov:

Что-то ни в одном коде я не нахожу флага FILE_COMMON кроме как в примерах Igor Zakharov

Если ставлю флаг FILE_COMMON то выдает ошибку 

2019.11.08 17:30:58.243 test (EURUSD_i,M30)     Не удалось открыть файл EURUSD_M30_10000_10_P.set, Код ошибки = 5004
 
Sergey Gritsay:

Если ставлю флаг FILE_COMMON то выдает ошибку 

Кроме FILE_COMMON нужен ещё флаг FILE_READ. Флаг FILE_SHARE_READ не заменяет его.

 
Alexey Viktorov:

Кроме FILE_COMMON нужен ещё флаг FILE_READ. Флаг FILE_SHARE_READ не заменяет его.

 не помогает 

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"

string InpFilter="*";
string Symbols[];
string TimeFrames[];
string Procent[];
double StartDepo=10000.0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   FileSeting();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void FileSeting()
  {
   string file_name;
   int    i=1;
   string to_split=""; // строка для разбивки на подстроки
   string sep="_";                  // разделитель в виде символа
   ushort u_sep;                    // код символа разделителя
   string result[];                 // массив для получения строк
   int file_handle;
   ulong pos[];
   int   size=0;



//--- получим код разделителя
   u_sep=StringGetCharacter(sep,0);

//--- получение хэндла поиска в корне локальной папки
   long search_handle=FileFindFirst(InpFilter,file_name,FILE_COMMON);
//--- проверим, успешно ли отработала функция FileFindFirst()
   if(search_handle!=INVALID_HANDLE)
     {
      //--- в цикле проверим являются ли переданные строки именами файлов или директорий
      do
        {
         ResetLastError();
         //--- если это файл, то функция вернет true, а если директория, то функция генерирует ошибку ERR_FILE_IS_DIRECTORY
         FileIsExist(file_name);
         PrintFormat("%d : %s name = %s",i,GetLastError()==ERR_FILE_IS_DIRECTORY ? "Directory" : "File",file_name);
         //--- разобьем строку на подстроки
         int k=StringSplit(file_name,u_sep,result);
         PrintFormat("Получено строк: %d. Использован разделитель '%s' с кодом %d",k,sep,u_sep);
         if(StartDepo==NormalizeDouble(StringToDouble(result[2]),0))
           {
            ArrayResize(Symbols,i);
            ArrayResize(TimeFrames,i);
            ArrayResize(Procent,i);
            Symbols[i-1]=result[0];
            TimeFrames[i-1]=result[1];
            Procent[i-1]=result[3];
            PrintFormat("Symbols[%d]=\"%s\"",i,Symbols[i-1]);
            PrintFormat("TimeFrames[%d]=\"%s\"",i,TimeFrames[i-1]);
            PrintFormat("StartDepo[%d]=\"%s\"",i,result[2]);
            PrintFormat("Procent[%d]=\"%s\"",i,result[3]);

            ResetLastError();
            file_handle=FileOpen(file_name+".set",FILE_COMMON|FILE_READ|FILE_TXT|FILE_SHARE_READ|FILE_ANSI,"\r\n");
            //file_handle=FileOpen(file_name+".set",FILE_SHARE_READ|FILE_CSV);

            if(file_handle!=INVALID_HANDLE)
              {
               PrintFormat("Файл %s открыт для чтения",file_name);

               int q=1;
               while(!FileIsEnding(file_handle))
                 {
                  string text = FileReadString(file_handle);
                  PrintFormat("Текст строки с номером %d: %s",q,text);
                  q++;
                 }
               //--- закроем файл
               FileClose(file_handle);
               PrintFormat("Файл %s закрыт",file_name);
              }
            else
               PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",file_name,GetLastError());

            i++;
           }
        }
      while(FileFindNext(search_handle,file_name));
      //--- закрываем хэндл поиска
      FileFindClose(search_handle);
     }
   else
      Print("Files not found!");
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Возвращает таймфрейм по строке                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(const string timeframe)
  {
   if(timeframe=="M1")
      return(PERIOD_M1);
   if(timeframe=="M2")
      return(PERIOD_M2);
   if(timeframe=="M3")
      return(PERIOD_M3);
   if(timeframe=="M4")
      return(PERIOD_M4);
   if(timeframe=="M5")
      return(PERIOD_M5);
   if(timeframe=="M6")
      return(PERIOD_M6);
   if(timeframe=="M10")
      return(PERIOD_M10);
   if(timeframe=="M12")
      return(PERIOD_M12);
   if(timeframe=="M15")
      return(PERIOD_M15);
   if(timeframe=="M20")
      return(PERIOD_M20);
   if(timeframe=="M30")
      return(PERIOD_M30);
   if(timeframe=="H1")
      return(PERIOD_H1);
   if(timeframe=="H2")
      return(PERIOD_H2);
   if(timeframe=="H3")
      return(PERIOD_H3);
   if(timeframe=="H4")
      return(PERIOD_H4);
   if(timeframe=="H6")
      return(PERIOD_H6);
   if(timeframe=="H8")
      return(PERIOD_H8);
   if(timeframe=="H12")
      return(PERIOD_H12);
   if(timeframe=="D1")
      return(PERIOD_D1);
   if(timeframe=="W1")
      return(PERIOD_W1);
   if(timeframe=="MN")
      return(PERIOD_MN1);
//--- Значение по умолчанию
   return((ENUM_TIMEFRAMES)::Period());
  }
//+------------------------------------------------------------------+

результат с флагом FILE_COMMON

2019.11.08 17:37:35.315 test (EURUSD_i,M30)     1 : File name = AUDCAD_M30_10000_13_P.set
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Получено строк: 5. Использован разделитель '_' с кодом 95
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Symbols[1]="AUDCAD"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     TimeFrames[1]="M30"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     StartDepo[1]="10000"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Procent[1]="13"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Не удалось открыть файл AUDCAD_M30_10000_13_P.set, Код ошибки = 5004
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     2 : File name = EURUSD_M30_10000_10_P.set
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Получено строк: 5. Использован разделитель '_' с кодом 95
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Symbols[2]="EURUSD"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     TimeFrames[2]="M30"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     StartDepo[2]="10000"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Procent[2]="10"
2019.11.08 17:37:35.315 test (EURUSD_i,M30)     Не удалось открыть файл EURUSD_M30_10000_10_P.set, Код ошибки = 5004

без него 

2019.11.08 17:39:25.265 test (EURUSD_i,M30)     1 : File name = AUDCAD_M30_10000_13_P.set
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Получено строк: 5. Использован разделитель '_' с кодом 95
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Symbols[1]="AUDCAD"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     TimeFrames[1]="M30"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     StartDepo[1]="10000"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Procent[1]="13"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Файл AUDCAD_M30_10000_13_P.set открыт для чтения
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Файл AUDCAD_M30_10000_13_P.set закрыт
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     2 : File name = EURUSD_M30_10000_10_P.set
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Получено строк: 5. Использован разделитель '_' с кодом 95
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Symbols[2]="EURUSD"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     TimeFrames[2]="M30"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     StartDepo[2]="10000"
2019.11.08 17:39:25.265 test (EURUSD_i,M30)     Procent[2]="10"
2019.11.08 17:39:25.266 test (EURUSD_i,M30)     Файл EURUSD_M30_10000_10_P.set открыт для чтения
2019.11.08 17:39:25.266 test (EURUSD_i,M30)     Файл EURUSD_M30_10000_10_P.set закрыт
 
Sergey Gritsay:

 не помогает 

результат с флагом FILE_COMMON

без него 

А сам файл тут точно есть? По указанному в этом сообщении пути.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Помогите прочитать .set файл

Sergey Gritsay, 2019.11.08 12:57

Извиняюсь не тот файл скинул, сами файлы кидаю сюда C:\Users\Aser\AppData\Roaming\MetaQuotes\Terminal\Common\Files

 
Alexey Viktorov:

А сам файл тут точно есть? По указанному в этом сообщении пути.


 да есть

 

Результат должен быть такой?

2019.11.08 17:59:27.276 00 (EURUSD,H1)  Файл EURUSD_M30_10000_10_P открыт для чтения
2019.11.08 17:59:41.346 00 (EURUSD,H1)  Текст строки с номером 1: ; saved on 2019.11.07 21:31:56
2019.11.08 17:59:46.977 00 (EURUSD,H1)  Текст строки с номером 2: ; this file contains input parameters for testing/optimizing Buldozer_v3.0 expert advisor
2019.11.08 17:59:56.017 00 (EURUSD,H1)  Текст строки с номером 3: ; to use it in the strategy tester, click Load in the context menu of the Inputs tab
2019.11.08 18:00:00.527 00 (EURUSD,H1)  Текст строки с номером 4: ;
2019.11.08 18:00:11.634 00 (EURUSD,H1)  Текст строки с номером 5: Magic=1||0||1||10||N
2019.11.08 18:00:29.104 00 (EURUSD,H1)  Текст строки с номером 6: CommentDeals=Buldozer_v3.0
2019.11.08 18:00:33.364 00 (EURUSD,H1)  Текст строки с номером 7: Deposit_Load=50||0.0||0.000000||0.000000||N
2019.11.08 18:00:34.714 00 (EURUSD,H1)  Текст строки с номером 8: Risk=0.01||0.0||0.000000||0.000000||N
2019.11.08 18:00:36.034 00 (EURUSD,H1)  Текст строки с номером 9: Ret=15||0.0||0.000000||0.000000||N
2019.11.08 18:00:37.264 00 (EURUSD,H1)  Текст строки с номером 10: s1=
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 11: ma_of_on=false||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 12: ma_revers=true||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 13: ma_type_signal=3||0||1||6||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 14: ma_period_slow=32||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 15: ma_period_fast=16||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 16: ma_method=0||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 17: ma_price=1||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 18: s2=
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 19: bb_of_on=true||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 20: bb_revers=false||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 21: bb_type_signal=0||0||1||7||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 22: bb_period=20||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 23: bb_deviation=2||0.0||0.000000||0.000000||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 24: bb_price=1||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 25: s3=
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 26: st_of_on=false||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 27: st_revers=false||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 28: st_type_signal=2||0||1||9||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 29: st_k_period=5||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 30: st_d_period=3||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 31: st_slowing=2||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 32: st_method=0||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 33: st_price=0||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 34: st_level_up=80||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 35: st_level_dw=20||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 36: s4=
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 37: rsi_of_on=false||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 38: rsi_revers=false||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 39: rsi_type_signal=0||0||1||3||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 40: rsi_period=14||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 41: rsi_applied_price=1||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 42: rsi_level_up=70||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 43: rsi_level_dw=30||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 44: s5=
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 45: cci_of_on=true||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 46: cci_revers=true||false||0||true||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 47: cci_type_signal=2||0||1||3||Y
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 48: cci_period=13||0||1||10||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 49: cci_price=1||0||0||0||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 50: cci_level_up=100||0.0||0.000000||0.000000||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Текст строки с номером 51: cci_level_dw=-100||0.0||0.000000||0.000000||N
2019.11.08 18:00:39.034 00 (EURUSD,H1)  Файл EURUSD_M30_10000_10_P закрыт
 
Alexey Viktorov:

Результат должен быть такой?

да

 
Скажи, в 2009-2010 годах ты был на форуме альпарей? Не ты-ли помогал, отвечал на мои вопросы?
Файлы:
00.mq5  3 kb