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

 

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

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

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

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

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

 
sleaderxxl:

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

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

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

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

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

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

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

 
Читаем файл в строчный массив :
//+------------------------------------------------------------------+
//|                                 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);
}
 

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

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

 
По мейлу - нет, пишите в этой теме.
 

Хорошо!:)

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

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

Где взять данные СОТ мы знаем 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/ естественно все платное.:)

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

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

 

Вот мой код чтения котировок из файла 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);
}
 

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

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

Причина обращения: