Вопросы от "чайника" - страница 138

 
joo:
Если не скрипт, то всю логику выполнять/вызывать в/из OnChartEvent()?

ну где угодно можешь. есть ведь еще таймер.

если надо логику цикличную, то можно в таймер

если логика событийная, то в chartevent.

 
sergeev:

ну где угодно можешь. есть ведь еще таймер.

если надо логику цикличную, то можно в таймер

если логика событийная, то в chartevent.

Такая логика:

1. Запуск программы (кинули на чарт).

2. Из диалогового окна (листинг файлов) получили  имя файла.

3. По имени файла открыли файл, получили данные, обработали.

4. Вышли из программы.

Собственно всё. Как это дело можно организовать, покажите, пожалуйста, хотя бы схематично.

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
joo:

Такая логика:

1. Запуск программы (кинули на чарт).

OnInit.  Прошерстили диск, нашли файлы, создали окно со списком (Controls)

2. Из диалогового окна (листинг файлов) получили  имя файла.

OnChartEvent. Обработали клики мышки, на каком конкретно строке списка был клик, соответственно знаем файл.

3. По имени файла открыли файл, получили данные, обработали.

OnChartEvent. Обработали клики мышки на кнопке "ПОЕХАЛИ". Получили запомненное имя файла из списка. Далее чисто ваша обработка данных этого файла.

4. Вышли из программы.

ExpertRemove()

 
sergeev:
...

вот, теперь что то проясняется, спасибо.

но, вот для пробы, забацал эксперт. он принтует даже когда ничего не происходит на чарте - а так быть не должно:

#include <Controls\ControlsDialog.mqh>
CControlsDialog ExtDialog;

int OnInit()
{
//--- create application dialog
  if(!ExtDialog.Create(0,"Controls",0,20,20,360,324))
    return(-1);
//--- run application
  ExtDialog.Run();
  return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy dialog
  ExtDialog.Destroy();
}
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
{
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  Print("dsfsdfsdfsdf");
}
//+------------------------------------------------------------------+
 
Yedelkin:

Ну, любой метод класса - это обычный код. Попробуйте разобрать вот этот код:

Спасибо! Принял в работу.
 
joo:

вот, теперь что то проясняется, спасибо.

но, вот для пробы, забацал эксперт. он принтует даже когда ничего не происходит на чарте - а так быть не должно:

не не, там принт идет, потому что ты по чарту мышкой водишь.

 
sergeev:

не не, там принт идет, потому что ты по чарту мышкой водишь.

Действительно, грешен - шевелил мышой по чарту, потому и принтует.
 

Добрый день.

Вопрос из любопытства. Такой код:

class cl2;

class cl1
{
public:
        int q;
        void fn2(cl2 &t){t.i = 87;}
};


class cl2
{
public:
        int i;
        void fn(cl1 &w){w.q = 9;}
};

Идея следующая: 

  • Есть два класса (№1 и №2)
  • Класс №1 ковыряется в классе №2
  •  Класс №2 ковыряется в классе №1

В MQL компилируется без ошибок, в VS не хочет (говорить что нельзя использывать класс без определения). Почему?

 
220Volt:

В MQL компилируется без ошибок, в VS не хочет (говорить что нельзя использывать класс без определения). Почему?

Патамушта mql5 - лучше!

;)

 
MetaDriver:

Патамушта mql5 - лучше!

;)

Да, видимо надо поставить плюсик ))
Причина обращения: