Программирование на MQL4 - это очень просто! - Страница 202
Страница 202 из 204 ПерваяПервая ... 102 152 192 198 199 200 201 202 203 204 ПоследняяПоследняя
Показано с 2,011 по 2,020 из 2033

Тема: Программирование на MQL4 - это очень просто!

  1. #2011
    Местный
    Регистрация
    27.12.2018
    Сообщений
    188
    Благодарности
    Получено: 0
    Отправлено: 92
    Возможноли указать дату только месяцы и дни? без годов?

    Вы не можете благодарить!

  2. #2012
    Эксперт
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,934
    Благодарности
    Получено: 713
    Отправлено: 73
    Цитата Сообщение от raboco Посмотреть сообщение
    Возможноли указать дату только месяцы и дни? без годов?
    Если обрезать самостоятельно то - да.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  3. #2013
    Местный
    Регистрация
    27.12.2018
    Сообщений
    188
    Благодарности
    Получено: 0
    Отправлено: 92
    Цитата Сообщение от wayfarer Посмотреть сообщение
    Если обрезать самостоятельно то - да.
    как это сделать?,

    - - - Добавлено - - -

    все таки удалось, пропустить через нейросеть выборки, предсказание, совпадают при ошибке+- в 100пунктов почти 99%, при 50п 50%,при 5п 20%,
    временные ряды не удалось пропустить, так как формат гггг.мм.дд, не нормализовать, но, мм и дд отдельно можно,

    Вы не можете благодарить!

  4. #2014
    Эксперт
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,934
    Благодарности
    Получено: 713
    Отправлено: 73
    Цитата Сообщение от raboco Посмотреть сообщение
    как это сделать?
    Использовать функции работы со строковыми, см. Строковые функции F1:
    PHP код:
    StringSubstr

    Извлекает подстроку из текстовой строки
    начинающейся c указанной позиции.


    string  StringSubstr
       
    string  string_value,     // строка 
       
    int     start_pos,        // с какой позиции начать 
       
    int     length=0          // длина извлекаемой строки 
       
    );
     

    Параметры

    string_value

    [in]  Строкаиз которой должна быть извлечена подстрока.

    start_pos

    [in]  Начальная позиция подстрокиМожет быть от 0 до StringLen(text) -1.

    length
    =0

    [in]  Длина извлекаемой подстрокиЕсли значение параметра меньше или равно 0либо параметр не заданто будет извлекаться подстроканачиная с указанной позиции и до конца строки.

    Возвращаемое значение

    Копия извлеченной подстроки
    если возможноиначе возвращается пустая строка

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  5. #2015
    Местный
    Регистрация
    27.12.2018
    Сообщений
    188
    Благодарности
    Получено: 0
    Отправлено: 92
    StringSubstr

    Спасибо то что надо

    Вы не можете благодарить!

  6. #2016
    Местный
    Регистрация
    27.12.2018
    Сообщений
    188
    Благодарности
    Получено: 0
    Отправлено: 92
    PHP код:
    datetime        masiv_time[11]={0}; 

    PHP код:
       if(SFORMIROVAN_TREND_VERX()== true)
            {
             
    RISUEM_TREND_VERX();
             
    YCHET_TREND_VERX();
              
             
    ZAPIS_VECTORA_V_MASIV(masiv_timemasiv_cena,  vrema_max_cenamax_cena);
                 
           
    string ggggg "ttt.csv";
                 
    log_handle FileOpen(ggggg,FILE_CSV |FILE_READ FILE_WRITE);
                
                
                 
    FileSeek log_handle,0SEEK_END);//Перемещаем файловый указатель в конец файла
                 
    FileWrite(log_handle
                 
    ,TimeToStr(masiv_time[0] ,TIME_DATE) ,NormalizeDouble (masiv_cena[0],Digits)
                 ,
    TimeToStr(masiv_time[1] ,TIME_DATE) ,NormalizeDouble (masiv_cena[1],Digits)
                 ,
    TimeToStr(masiv_time[2] ,TIME_DATE) ,NormalizeDouble (masiv_cena[2],Digits)
                 ,
    TimeToStr(masiv_time[3] ,TIME_DATE) ,NormalizeDouble (masiv_cena[3],Digits)
                 ,
    TimeToStr(masiv_time[4] ,TIME_DATE) ,NormalizeDouble (masiv_cena[4],Digits)
                 ,
    TimeToStr(masiv_time[5] ,TIME_DATE) ,NormalizeDouble (masiv_cena[5],Digits)
                 ,
    TimeToStr(masiv_time[6] ,TIME_DATE) ,NormalizeDouble (masiv_cena[6],Digits)
                 ,
    TimeToStr(masiv_time[7] ,TIME_DATE) ,NormalizeDouble (masiv_cena[7],Digits)
                 ,
    TimeToStr(masiv_time[8] ,TIME_DATE) ,NormalizeDouble (masiv_cena[8],Digits)
                 ,
    TimeToStr(masiv_time[9] ,TIME_DATE) ,NormalizeDouble (masiv_cena[9],Digits)
                 ,
    TimeToStr(masiv_time[10] ,TIME_DATE) ,NormalizeDouble (masiv_cena[10],Digits)
          
                 ); 
    а тут как можно решить вопрос?
    при объявлении массива masiv_time[11], если вдруг нужно masiv_time[20]

    Вы не можете благодарить!

  7. #2017
    Эксперт
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,934
    Благодарности
    Получено: 713
    Отправлено: 73
    Цитата Сообщение от raboco Посмотреть сообщение
    а тут как можно решить вопрос при объявлении массива masiv_time[11], если вдруг нужно masiv_time[20] ?
    Я уже писал вам об этом, кажется, собрать строку значений и сохранить в файл, вот так:
    PHP код:

       
    if(SFORMIROVAN_TREND_VERX()== true
       { 
          
    RISUEM_TREND_VERX(); 
          
    YCHET_TREND_VERX(); 
              
          
    ZAPIS_VECTORA_V_MASIV(masiv_timemasiv_cena,  vrema_max_cenamax_cena); 
                  
          
    string ggggg "ttt.csv"
          
    log_handle FileOpen(ggggg,FILE_CSV |FILE_READ FILE_WRITE);        
          
    //Перемещаем файловый указатель в конец файла 
          
    FileSeek(log_handle,0SEEK_END);
          
    // Определяем размер массива
          
    int Size=ArraySize(masiv_time);
          if (
    Size>0)
          {
             
    // собираем строку для записи в файл
             
    string Txt="";
             for (
    int i=0i<Sizei++)
             {
                
    // "здесь нужный разделитель значений" - заменить на требуемое
                
    Txt+=TimeToStr(masiv_time[i] ,TIME_DATE)+"здесь нужный разделитель значений"+NormalizeDouble (masiv_cena[i],Digits);
             }
             
    // пишем в файл
             
    FileWrite(log_handle,Txt);
          }
       } 

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  8. #2018
    Местный
    Регистрация
    27.12.2018
    Сообщений
    188
    Благодарности
    Получено: 0
    Отправлено: 92
    Я уже писал вам об этом, кажется, собрать строку значений и сохранить в файл, вот так:
    да писали вроде, но вот с таким примером все понятно, спасибо!
    PHP код:
      Txt+=TimeToStr(masiv_time[i] ,TIME_DATE)+"здесь нужный разделитель значений"+NormalizeDouble (masiv_cena[i],Digits
    счас стоит задача построить линии по предсказанным сетью координатам взятым с csv файла
    Изображения Изображения

    Вы не можете благодарить!

  9. #2019
    Эксперт
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,934
    Благодарности
    Получено: 713
    Отправлено: 73
    Цитата Сообщение от raboco Посмотреть сообщение
    стоит задача построить линии по предсказанным сетью координатам взятым с csv файла
    Понадобятся такие функции:
    1. Чтение из файла и заполнение массива(ов)
    2. Процедура построения линии по времени(нужно дополнить дату часом и минутой) и цене.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  10. #2020
    Местный
    Регистрация
    27.12.2018
    Сообщений
    188
    Благодарности
    Получено: 0
    Отправлено: 92
    Чтение файла с разделителями в массив
    Разобравшись в особенностях работы с csv-файлами, напишем еще одну практически полезную функцию для чтения csv-файла в массив. Чтение будет выполняться в массив структур, где каждый элемент будет соответствовать одной строке файла. В структуре будет находиться строковый массив, каждый элемент которого будет соответствовать одному полю строки.

    Описание структуры:

    PHP код:
    struct SLine{
       
    string field[];
    }; 
    Функция:

    PHP код:
    bool ReadFileToArrayCSV(string FileName,SLine Lines[]){
       
    ResetLastError();
       
    int h=FileOpen(FileName,FILE_READ|FILE_ANSI|FILE_CSV,";");
       if(
    h==INVALID_HANDLE){
          
    int ErrNum=GetLastError();
          
    printf("Ошибка открытия файла %s # %i",FileName,ErrNum);
          return(
    false);
       }   
       
    int lcnt=0// переменная для подсчета строк 
       
    int fcnt=0// переменная для подсчета полей строки    
       
    while(!FileIsEnding(h)){
          
    string str=FileReadString(h);
          
    // новая строка (новый элемент массива структур)
          
    if(lcnt>=ArraySize(Lines)){ // массив структур полностью заполнен
             
    ArrayResize(Lines,ArraySize(Lines)+1024); // увеличиваем размер массива на 1024 элемента
          
    }
          
    ArrayResize(Lines[lcnt].field,64);// изменяем размер массива в структуре
          
    Lines[lcnt].field[0]=str// присваиваем значение первого поля
          // начинаем читать остальные поля в строке
          
    fcnt=1// пока занят один элемент в массиве полей
             
    while(!FileIsLineEnding(h)){ // читаем остальные поля в строке
                
    str=FileReadString(h);
                if(
    fcnt>=ArraySize(Lines[lcnt].field)){ // массив полей полностью заполнен
                   
    ArrayResize(Lines[lcnt].field,ArraySize(Lines[lcnt].field)+64); // увеличиваем размер массива на 64 элемента
                
    }     
                
    Lines[lcnt].field[fcnt]=str// присваиваем значение очередного поля
                
    fcnt++; // увеличиваем счетчик полей
             
    }
          
    ArrayResize(Lines[lcnt].field,fcnt); // изменяем размер массива полей в соответствии с фактическим количеством полей
          
    lcnt++; // увеличиваем счетчик строк
       
    }
       
    ArrayResize(Lines,lcnt); // изменяем массив структур (строк) в соответствии с фактическим количеством строк
       
    FileClose(h);
       return(
    true);

    Подробно разбирать эту функцию не будем, остановимся только на основных принципиальных моментах. В начале цикла while(!FileIsEnding(h)) выполняется чтение одного поля. Здесь становится известно, что в массив структур добавляется элемент. Проверяем размер массива, и, если надо, увеличиваем его размер на 1024 элемента. Сразу же изменяем размер массива для полей. Ему сразу задается размер в 64 элемента, и элементу с индексом 0 присваивается значение прочитанного из файла первого поля строки. После этого в цикле while(!FileIsLineEnding(h)) прочитываем все остальные поля. Прочитав очередное поле, проверяем размер массива, и если надо, то увеличиваем его, затем отправляем прочитанное из файла строку в массив. Дочитав строку до конца (выйдя из цикла while(!FileIsLineEnding(h)) ), изменяем размер массива полей в соответствии с фактическим количеством полей. В самом конце изменяем размер массива строк в соответствии с фактическим количеством прочитанных строк.

    В приложении данная функция находится в скрипте "sTestFileReadFileToArrayCSV". Скрипт читает файл "test.csv" в массив и выводит этот массив в окно сообщений. Результат точно такой же, как на рис. 8.

    Тут я как понимаю получаем массив
    field[0];= месяц; день; цена;месяц; день; цена;
    field[1];= месяц; день; цена;месяц; день; цена;
    field[2];= месяц; день; цена;месяц; день; цена;
    field[n];= месяц; день; цена;месяц; день; цена;
    то есть в одной ячейке сохраняем все строку с 6-ю значениями

    получив такую строку объеденяем месяц дату добавляем год(нужно?) часы и минуты
    и сохраняем в другой массив,или думаю лучше будет это все перед сохранением в массив, превратить в дату и сохранить

    типо field[n];= дата; цена;дата; цена;
    вашпе запутался там что то не то, как то по другому нужно ,,вечером надо подумать,

    Вы не можете благодарить!
    Последний раз редактировалось raboco; 15.02.2020 в 12:32.

Страница 202 из 204 ПерваяПервая ... 102 152 192 198 199 200 201 202 203 204 ПоследняяПоследняя

Похожие темы

  1. Всё очень просто 123 (Pattern 123)
    от Sergey3011 в разделе Индикаторные торговые стратегии
    Ответов: 33
    Последнее сообщение: 21.11.2017, 06:05
  2. Очень личное о трейдинге внутри дня
    от ADler 88 в разделе Разговоры о трейдинге
    Ответов: 14
    Последнее сообщение: 10.07.2015, 18:36
  3. Экспресс-курс "Программирование советников на языке MQL4"
    от Антонина Бойкова в разделе Открытый учебный центр
    Ответов: 14
    Последнее сообщение: 22.11.2012, 14:35

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •