Скачать MetaTrader 5

Импорт данных в текстовом формате в МТ4

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

Стоит задача написать индикатор для таймфрейма дневки, чтобы он брал значения из стороннего текстового файла, н-р, такого вида:

--

1.06.2010(разделитель)2.06.2010(разделитель)...

Значение1(разделитель)Значение2(разделитель)...

--


Т. о., можно было бы иметь индикаторы самых разных данных (н-р, СОТ, или опционные уровни, или еще много чего, что доступно в текстовом/табличном формате).


Как установить референцию к внешнему файлу в МТ, и как описать структуру внешнего файла в сорце индикатора, чтобы он «понимал», что откуда брать?


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

Forex Trader
114280
Forex Trader  

Точнее, такого вида:

--

Дата1(разделитель)Значение1(LF)

Дата2(разделитель)Значение2(LF)

...

ДатаN(разделитель)ЗначениеN(EOF)

--

Din-Dan
8
Din-Dan  

И никто не ответил.

Полезно было бы иметь такой индикатор для импорта данных в мт4 в виде индикатора.

Alexey Volchanskiy
19346
Alexey Volchanskiy  
Forex Trader:

Стоит задача написать индикатор для таймфрейма дневки, чтобы он брал значения из стороннего текстового файла, н-р, такого вида:

--

1.06.2010(разделитель)2.06.2010(разделитель)...

Значение1(разделитель)Значение2(разделитель)...

--


Т. о., можно было бы иметь индикаторы самых разных данных (н-р, СОТ, или опционные уровни, или еще много чего, что доступно в текстовом/табличном формате).


Как установить референцию к внешнему файлу в МТ, и как описать структуру внешнего файла в сорце индикатора, чтобы он «понимал», что откуда брать?


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

Так обычный файл в формате .csv, в чем трудности? Вот так открываем. Потом считываем строку, значения в ней должны быть разделены запятыми. Или задать другой разделитель вместо ','

        string FileName = MQLInfoString(MQL_PROGRAM_NAME) + "_AllOrders" + ".ord";
        int FileHandler = FileOpen(LogFileName, FILE_CSV | FILE_READ | FILE_SHARE_READ, ',');
        
        if(FileHandler == INVALID_HANDLE)
            Alert("Не могу открыть файл " + FileName);
        else    
        {
            Print(FileName + " is opened");
            FileSeek(FileHandler, 0, SEEK_END);
        }    
Din-Dan
8
Din-Dan  
Alexey Volchanskiy:

Так обычный файл в формате .csv, в чем трудности? Вот так открываем. Потом считываем строку, значения в ней должны быть разделены запятыми. Или задать другой разделитель вместо ','

Спасибо большое. Это хоть что-то.

Я так понимаю, это лишь часть кода и надо дописывать?

Я если честно, не имею опыта в программировании.

Alexey Volchanskiy
19346
Alexey Volchanskiy  
Din-Dan:

Спасибо большое. Это хоть что-то.

Я так понимаю, это лишь часть кода и надо дописывать?

Я если честно, не имею опыта в программировании.

Да, это часть кода. Раз нет опыта, кину побольше. В предыдущем примере открыли файл .csv на чтение, но я в попыхах допустил ошибку. Вот так правильно

//+------------------------------------------------------------------+
//|                                              TestReadCsvFile.mq4 |
//|                               Copyright 2015, Alexey Volchanskiy |
//| https://mql.gnomio.com/ - обучение программирования на MQL4, MQL5, для платформы cAlgo, Matlab |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Alexey Volchanskiy"
#property link      "https://mql.gnomio.com/"
#property version   "1.00"
#property strict
#property script_show_inputs

input string FileName = "EURUSD.csv";
int FileHandler = -1;

void OnStart()
{
    if(!OpenFile(FileName)) 
        return;   
    while(!FileIsEnding(FileHandler))    
    {
        datetime dt = FileReadDatetime(FileHandler);
        double bid = FileReadNumber(FileHandler);
        double ask = FileReadNumber(FileHandler);
        Print(TimeToString(dt, TIME_DATE | TIME_MINUTES | TIME_SECONDS), "  ", DoubleToString(bid, Digits()),  "  ", DoubleToString(ask, Digits()));
    }
    FileClose(FileHandler);
}

bool OpenFile(string fName)
{
    FileHandler = FileOpen(fName, FILE_CSV | FILE_READ | FILE_SHARE_READ, ',');
    if(FileHandler != INVALID_HANDLE)
    {
        Print(fName + " is opened");
        FileSeek(FileHandler, 0, SEEK_SET);
        return true;
    }    
    Alert("Can't open file " + fName);
    return false;
}

Блин!!!Ну почему нельзя прикрепить файл .csv, надо обязательно зиповать!! 

 Файлы положить по путям 

\MQL4\Scripts\TestReadCsvFile.mq4 

 \MQL4\Files\EURUSD.csv

Файлы:
EURUSD.zip 1 kb
Din-Dan
8
Din-Dan  
Alexey Volchanskiy:

Да, это часть кода. Раз нет опыта, кину побольше. В предыдущем примере открыли файл .csv на чтение, но я в попыхах допустил ошибку. Вот так правильно

Блин!!!Ну почему нельзя прикрепить файл .csv, надо обязательно зиповать!! 

 Файлы положить по путям 

\MQL4\Scripts\TestReadCsvFile.mq4 

 \MQL4\Files\EURUSD.csv

Добрый вечер.

Позвольте, спросить, предназначением данного кода является открытие файла EURUSD и всё? Я расположил оба файла так, как вы указали. Но в результате выполнения скрипта у меня ничего не происходит. Единственное, если я открою csv файл до выполнения скрипта, появляется алерт (см. прикрепленные рисунки).

Мне хотелось бы в результате получить гистограмму в отдельном окне индикатора под графиком цены. Значения каждого столбца гистограммы должны забираться из файла csv. 

Файлы:
Alexey Volchanskiy
19346
Alexey Volchanskiy  
Din-Dan:

Добрый вечер.

Позвольте, спросить, предназначением данного кода является открытие файла EURUSD и всё? Я расположил оба файла так, как вы указали. Но в результате выполнения скрипта у меня ничего не происходит. Единственное, если я открою csv файл до выполнения скрипта, появляется алерт (см. прикрепленные рисунки).

Мне хотелось бы в результате получить гистограмму в отдельном окне индикатора под графиком цены. Значения каждого столбца гистограммы должны забираться из файла csv. 

Вы во вкладке Журнал пытаетесь увидеть результаты вывода? Смотрите во вкладке Эксперты.

2015.11.07 20:47:58.262 Script TestReadCsvFile GBPUSD.e,M30: removed

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: uninit reason 0

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:41  1.08796  1.08805

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:37  1.08796  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:33  1.08796  1.08807

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:25  1.08797  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:24  1.08797  1.08805

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:23  1.08795  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:21  1.08795  1.08805

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:17  1.08795  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:16  1.08795  1.08805

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:15  1.08795  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:07  1.08796  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:02  1.08795  1.08805

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:01  1.08796  1.08807

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:30:00  1.08799  1.08808

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:29:53  1.08798  1.08808

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:29:51  1.08798  1.08809

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:29:50  1.08798  1.08807

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:29:49  1.08796  1.08807

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: 2015.11.06 13:29:42  1.08796  1.08806

2015.11.07 20:47:58.262 TestReadCsvFile GBPUSD.e,M30: EURUSD.csv is opened

2015.11.07 20:47:58.238 TestReadCsvFile GBPUSD.e,M30: initialized

2015.11.07 20:47:58.233 TestReadCsvFile GBPUSD.e,M30 inputs: FileName=EURUSD.csv; 

2015.11.07 20:47:50.961 Script Tests\TestReadCsvFile GBPUSD.e,M30: loaded successfully

По поводу дальнейших доработок обращайтесь в личку плз. 

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