Скачать MetaTrader 5

Как научить индикатор читать данные из csv файла?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Юрий
14
Юрий  

Надеюсь каритнка всем знакома, кто читал Л. Уильямса.

Так вот до меня ни как не дойдет, как научить индикатор читать данные из csv файла?

Я уже и инет гуглил и по форумам ходил - как записать данные в файл расписано, а как считывать данные из файла для работы индикатора ни чего не нашел.

Подскажите, пожалуйста, как это сделать или где поискать.

Заранее спасибо!

Alexandr Bryzgalov
29581
Alexandr Bryzgalov  
sleaderxxl:

Надеюсь каритнка всем знакома, кто читал Л. Уильямса.

Так вот до меня ни как не дойдет, как научить индикатор читать данные из csv файла?

Я уже и инет гуглил и по форумам ходил - как записать данные в файл расписано, а как считывать данные из файла для работы индикатора ни чего не нашел.

Подскажите, пожалуйста, как это сделать или где поискать.

Заранее спасибо!

https://www.mql5.com/ru/job/4686

по сути чтение из csv файла получилось

Рустам
3597
Рустам  
Читаем файл в строчный массив :
//+------------------------------------------------------------------+
//|                                 Function  :                  ReadFileToArr |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
int ReadFileToArray(string fn, string &in[],string del="^"){int i,x,y,hd,res=0;
        x  = ArraySize(in);
        hd = FileOpen(fn,FILE_READ|FILE_CSV,del);
        if(hd<1){return(-GetLastError());}
        while(!FileIsEnding(hd)){
                in[i] = FileReadString(hd);
                i++;
                if(i>=x){
                        FileClose(hd);
                        return(-4002);
                        break;
                }
        }
        FileClose(hd);
        ArrayResize(in,i-1);
        return(i);
}
Разбиваем строки массива по ячейкам :
//+------------------------------------------------------------------+
//|                                 Function  :GetContentFromScvCell |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
string GetContentFromScvCell(string in,int pos,string del){int i=-1,x,y;
        string det=";",out="";
        while(i<pos){
                x   = StringFind(in,del,0);
                out = StringSubstr(in,0,x);
                in  = StringSubstr(in,x+1);
                i++;
                if(x<0){break;}
        }
        if(StringFind(out,del)>=0){out="";}
        return(out);
}
Юрий
14
Юрий  

Спасибо Модератор!:)

Если сам не смогу разобраться с индикатором можно списаться по мылу?

Рустам
3597
Рустам  
По мейлу - нет, пишите в этой теме.
Юрий
14
Юрий  

Хорошо!:)

Идея такая сделать индикатор открытых позиций операторов.

Как пишет Ларри Уильямс нижний индикатор показывает фактическую чистую разность между длинными и короткими позициями операторов.

Где взять данные СОТ мы знаем http://www.cftc.gov/MarketReports/CommitmentsofTraders/HistoricalCompressed/index.htm

ДЦ который может представить недельный график http://www.gcitrading.com/ с 2001 года, был Broco, но похоже их закрыли, а у них были котироаки на по всем фьючерсам.

Значит скачиваем данные с сайта www.cftc.gov в Exel, берем из них дату и длинные и корткие позиции операторов, которые записать в csv файл не составит труда.

(Кстати, как его сюда прикрепить?)

А вот как сделать индикатор (либо линия либо гистограмма) для наглядности.

В Exel я составил таблицу показывающую в процентном отношении короткие и длинные позиции оператров и в противовес им позиции публики.

А вот как сделать индикатор ни как не врублюсь.:)

А на сайте Ларри Вильямса http://www.ireallytrade.com/ естественно все платное.:)

Денег то конечно можно заплатить, но будет ли от этого толк? И хотелось бы так сказать своими руками это все пощупать.:)

У меня данные собраны по серебру. Можно помочь? По образцу я и по другим иструментам индикаторов наделаю.:)

Murad Ismayilov
1810
Murad Ismayilov  

Вот мой код чтения котировок из файла csv (MT4/Сервис/Архив котировок/Экспорт):

//+------------------------------------------------------------------+
//| Загрузка истории котировок из файла                              |
//| (c) Murad Ismayilov (https://www.mql5.com/ru/users/wmlab)         |
//+------------------------------------------------------------------+

void LoadHistoryFromCsvFile(string filename)
{
   HistoryBars = -1;
   int handleCsv = FileOpen(filename, FILE_CSV | FILE_READ, ',');
   if (handleCsv < 1)
   {
      return;
   }
   
   HistoryBars = 0;
   while (!FileIsEnding(handleCsv))
   {
      FileReadString(handleCsv);
      HistoryBars++;     
   }
   
   HistoryBars /= 7;
   
   ArrayResize(HistoryTime, HistoryBars);
   ArrayResize(HistoryHigh, HistoryBars);
   ArrayResize(HistoryLow, HistoryBars);
   ArrayResize(HistoryMiddle, HistoryBars);
   
   FileSeek(handleCsv, 0, SEEK_SET);
   for (int index = (HistoryBars - 1); index >= 0; index--)
   {
      string csvDate = FileReadString(handleCsv);
      string csvTime = FileReadString(handleCsv);
      HistoryTime[index] = StrToTime(csvDate + " " + csvTime);
      string csvOpen = FileReadString(handleCsv);
      string csvHigh = FileReadString(handleCsv);
      HistoryHigh[index] = StrToDouble(csvHigh);
      string csvLow = FileReadString(handleCsv);
      HistoryLow[index] = StrToDouble(csvLow);
      string csvClose = FileReadString(handleCsv);
      string csvVolume = FileReadString(handleCsv);
      HistoryMiddle[index] = NormalizeDouble((HistoryHigh[index] + HistoryLow[index]) / 2.0, Digits);
   }
   
   FileClose(handleCsv);
}
Юрий
14
Юрий  

Люди спасибо!!!:)

Осталось на практике испытать!:)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий