Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MQL5 Cloud Network ускоряет расчеты. Попробуй сам!
Юрий
14
Юрий 2012.09.05 16:52 

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

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

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

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

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

Alexandr Bryzgalov
23839
Alexandr Bryzgalov 2012.09.05 16:55  
sleaderxxl:

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

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

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

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

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

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

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

Рустам
3602
Рустам 2012.09.05 17:48  
Читаем файл в строчный массив :
//+------------------------------------------------------------------+
//|                                 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
Юрий 2012.09.06 15:33  

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

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

Рустам
3602
Рустам 2012.09.06 15:35  
По мейлу - нет, пишите в этой теме.
Юрий
14
Юрий 2012.09.08 05:38  

Хорошо!:)

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

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

Где взять данные СОТ мы знаем 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
1814
Murad Ismayilov 2012.09.08 05:49  

Вот мой код чтения котировок из файла 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
Юрий 2012.09.11 14:55  

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

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

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