Тихая Гавань
Тихая Гавань личный блог
07 июня 2014, 12:50

вопрос к программистам MQL4

всем привет, появилось немного свободного времени, решил переписать свои индикаторы. 
в МКЛ4 перемены там появился ООП
собсно вопрос:

помогите создать массив массивов и как обращаться к нему?

пример на волнах:

есть класс ВОЛНА, в нем соответственно есть подволны

как создать массив экземпляров класса ВОЛНА чтобы в каждом экземпляре этого класса был доп массив с подволнами, и как обращаться к определенной подволне определенной волны? 

заранее благодарен! 
6 Комментариев
  • Vadynik
    07 июня 2014, 12:59
    Создай тему на оф форуме, там точно помогут forum.mql4.com/ru
  • Spekyl
    07 июня 2014, 13:26
  • 0KDQuNC90LDRgg==
    07 июня 2014, 14:25
    Создать так docs.mql4.com/ru/basis/types/dynamic_array
    Обращаться как с обычными массивами, плюс свои операции docs.mql4.com/ru/array
    А вообще там доки не ахти, хрен что найдешь. Рекомендую найти готовый индикатор и смотреть как в нем что реализовано.
  • Redline
    07 июня 2014, 23:19
    >>в МКЛ4 перемены там появился ООП

    Вероятнее всего в MQL5. Именно там, насколько мне известно, появились объекты.

    Посмотрите в папку "\MQL5\Include\Arrays\" терминала.
    Там есть несколько файлов с реализациями массивов различных типов. В том числе там есть файл ArrObj, который реализует массив объектов.

    Если пройтись поиском по исходникам, которые идут с терминалом, то сможете найти примеры применения, ну или на форумах глянуть.

    Вот мой пример, который примерно похож на вашу задачу:

    #include <Object.mqh>
    #include <Arrays\ArrayObj.mqh>

    class CLeg: public CObject
    {
    private:
    long _digits;
    double _ticksize;
    void Deinit();
    public:
    CLeg(JSONObject *obj);
    ~CLeg(void);
    double Size;
    string Symbol;
    double LastPrice();
    double Normalize(const double price) const;
    };

    class CLegs: public CArrayObj
    {
    public:
    CLegs(JSONArray *obj);
    ~CLegs(void);
    CLeg* operator[](const int index) const { return((CLeg*)CArrayObj::At(index)); }
    };

    CLeg в вашем случае — это волна CWave
    СLegs в вашем случае — это волны CWaves.

    Новая волна добавляем в список например так:

    //Constructor
    CLegs::CLegs(JSONArray *obj)
    {
    FreeMode(true);
    for(int i = 0; i < obj.size(); i++)
    Add(new CLeg(obj.getObject(i)));
    }

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн