![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Проблема оказалась в неправильной передаче указателя на память при вызове функции из Form1.h, описанной в news.h . Вот что в конце вышло: http://forex-news.uuuq.com/DailyFXCalendar.zip
Кстати, на написание этого же кода с нуля на си шарпе ушло часа четыре и всего 200 строк кода.
P.S.Приятно было бы услышать любую критику по поводу интерфейса, за исключением заявлений вроде "вы это делаете себе же во вред".
Все Stream'ы нужно закрывать явно.
Поэтому в конце Download_Calendar нужно вызвать
Все Stream'ы нужно закрывать явно.
Поэтому в конце Download_Calendar нужно вызвать
Исправил, спасибо!
#include <string>
#include <vector>
//Объявлена структура
typedef struct
{
std::string Symbol;
std::string Day;
std::string Text;
} news;
std::vector<news> list;
//Далее ф-ция мейн, в которой идет вызов вот такой функции:
void AnalizeBuffer()
{
news n;
n.Text = "111111";
list.push_back(n);
//дальше по смыслу пиши что хочешь
}
int _tmain(int argc, _TCHAR* argv[])
{
AnalizeBuffer();
return 0;
}
Так будет безопасней и удобочитаемый код
std::string Prepare_News( int index)
{
std::string tmp_char;
tmp_char += (news_list[index].Time + " " );
tmp_char += (news_list[index].Text + " " );
tmp_char += (news_list[index].Previous + " " );
tmp_char += (news_list[index].Forecast + " " );
return tmp_char;
}
std::string Download_page( char * adress)
{
//Записываем страницу adress в буффер buffer
char buffer[500];
std::string reslt = std::string();
DWORD bytes_read;
HINTERNET h_inet=InternetOpenA( "Microsoft Internet Explorer",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,NULL);
HINTERNET h_file=InternetOpenUrlA(h_inet,adress,NULL,0,0,0);
do {
memset( buffer,0, sizeof (buffer) );
InternetReadFile(h_file,buffer, sizeof (buffer),&bytes_read);
if (bytes_read != 0)
reslt += buffer;
}
while (bytes_read != 0);
//Ф-ция вовращает буфер, содержащий веб-страницу
return reslt;
}
Это я думаю правельней
Наверно давно пора завести ветку по "сопутствующим" MQL языкам и вопросами по работе с ними.
У меня тоже воросец созрел: А не подскажет ли уважаемый коллективный разум, как будет правильно передать в ДЛЛ на Си массив таймсерию? Посредством кокого-то промежуточного массива? Передавать ссылку или сам массив? Как правильнее? Может кто схематично обрисует?
У меня тоже воросец созрел: А не подскажет ли уважаемый коллективный разум, как будет правильно передать в ДЛЛ на Си массив таймсерию? Посредством кокого-то промежуточного массива? Передавать ссылку или сам массив? Как правильнее? Может кто схематично обрисует?
Для чего? Спрашиваю, потому что от этого зависит ответ.
Для чего? Спрашиваю, потому что от этого зависит ответ.
Похоже я был прав, когда подумал что это не так просто)
Обрабатывать этот массив в этой самой ДЛЛ, грубо говоря, в ДЛЛ функция в которую надо передать все цены клоузе с сотворения мира, многократно их там обработать и вернуть в советник результат просто одно double....
Похоже я был прав, когда подумал что это не так просто)
Для ссылки на массив и просто массива разные способы передачи.
Обрабатывать этот массив в этой самой ДЛЛ, грубо говоря, в ДЛЛ функция в которую надо передать все цены клоузе с сотворения мира, многократно их там обработать и вернуть в советник результат просто одно double....
Проект для 2005 студии Вас устроит? Сейчас решения нет. Пороюсь дома или набросаю как появится время.
Проект для 2005 студии Вас устроит? Сейчас решения нет. Пороюсь дома или набросаю как появится время.
Однозначно учтроит. Спасибо.