Блог им. Crazy_Trading

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

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

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

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

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

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

заранее благодарен! 
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
87 | ★1
6 комментариев
Создай тему на оф форуме, там точно помогут forum.mql4.com/ru
avatar
Создать так docs.mql4.com/ru/basis/types/dynamic_array
Обращаться как с обычными массивами, плюс свои операции docs.mql4.com/ru/array
А вообще там доки не ахти, хрен что найдешь. Рекомендую найти готовый индикатор и смотреть как в нем что реализовано.
avatar
дык вот ищу и никак ((
загвоздка во вложенности объекта в объект ((
волна имеет подволны которые в свою очередь на меньшем тф становятся сами волнами в которых свои подволны которые на еще меньшем тф становятся волнами со своими подволнами и так до минутного тф…
в итоге получаем кучу объектов вложенных друг в друга с заранее неизвестным их количеством…
вот и ломаю голову
Crazy Trading,
avatar
>>в МКЛ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)));
}
avatar

Читайте на SMART-LAB:
Фото
HRTech и ИИ-инструменты повышают ценность платформы для работодателей
Продолжаем отвечать на вопросы инвесторов.   🗣 «Зачем вы инвестируете в HRTech-инструменты, если основа выручки компании — платная публикация...
Фото
Почему стратегия работает на истории, но теряет деньги в реальности
Как сделать количественную торговлю эффективной? Не каждый аналитик может дать ответ на этот вопрос, но эффективная алгоритмическая...
Фото
Обновили раздел корпоративного сайта для инвесторов
⚡️ Обновили раздел корпоративного сайта для инвесторов Теперь еще проще и удобнее быть в курсе всей актуальной информации об...
Фото
Идеи ПИФ Аленка капитал - изменения за август 26: Элвис в здании и успел выйти из Башнефти
Традиционно продолжаем следить за ПИФ Аленка Капитал от Элвиса Марламова Предыдущий пост про ПИФ Alenka Capital был месяц назад тут...

теги блога Тихая Гавань

....все тэги



UPDONW
Новый дизайн