Библиотеки: Кортеж

 

Кортеж:

Реализация кортежа

Автор: Vladimir Simakov

 

Приветствую Владимир!
Хорошая идея, реализовать кортежи в MQL,
после отладки и добавления новых методов,
можно претендовать, что библиотеку включат в стандартный набор.

Есть вопрос.
Сейчас элементы добавляются в кортеж, на этапе объявления кортежа. 

tuple_value(3)<int, string, double> _test = {15, "iiii", 5.89};

Возможно пока не до конца понял как с ним работать
но планируется ли расширять библиотеку новыми методами?
Добавление, удаление элементов, возможно итераторы и т.д.


По текущей реализации.
После запуска скрипта, библиотека где то течёт.

2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   Alert: true
2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   Alert: 15
2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   Alert: iiii
2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   Alert: 5.89
2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   1 undeleted objects left
2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   1 object of type CTuple3<int,string,double> left
2019.11.16 16:30:49.568 TestTuple (EURUSD,M1)   40 bytes of leaked memory
 
Roman:

Приветствую Владимир!
Хорошая идея, реализовать кортежи в MQL,
после отладки и добавления новых методов,
можно претендовать, что библиотеку включат в стандартный набор.

Есть вопрос.
Сейчас элементы добавляются в кортеж, на этапе объявления кортежа. 

Возможно пока не до конца понял как с ним работать
но планируется ли расширять библиотеку новыми методами?
Добавление, удаление элементов, возможно итераторы и т.д.


По текущей реализации.
После запуска скрипта, библиотека где то течёт.

Любой элемент меняй test.Item2="asdfg"
Менять количество элементов нельзя.
Библиотека не течет - это в скрипте память не чистится)) Поправил.
 
struct S{
   int i;
   string s;
   double d;
};

...и не болит голова у дятла.

Если же действительно в один массив надо собрать разнотипные элементы, используется класс CArrayObj, а элементы, собираемые в массив, делаются потомками класса CObject. 

 
Не подскажете ( для НЕпрограмиста и НЕматематика) в каком ключе можно использовать кортеж ( почитал немного о нем :)) применительно к торговле ? Хотя бы теоретически ?
 
ilmel:
Не подскажете ( для НЕпрограмиста и НЕматематика) в каком ключе можно использовать кортеж ( почитал немного о нем :)) применительно к торговле ? Хотя бы теоретически ?
Это именно для программистов ), и то, больше из спортивного интереса сделано. Если нужда будет, то, если определенные тесты положительные будут, и небольших доработок, возможно будет в dll передавать и принимать с той стороны как std::tuple<>
 

Пример реального использования:

#define fractal tuple(2)<int,double>

...

void CNushaData::Tick(){
   CheckData();
   if (!cChart.IsNewBar()) return;
   if (Bars<6) return;
   fractal* _fractal=CheckFractal();
   if (_fractal.Item1!=0) cData.PushBack(new CData(_fractal));
   delete _fractal;
}
//---------------------------------------------------------
fractal* CNushaData::CheckFractal(){
   fractal* res=new fractal;
   double value=iFractals(NULL,PERIOD_CURRENT,MODE_UPPER,3),
   if (value>0.0) res.Set(1,value);
   else if((value=iFractals(NULL,PERIOD_CURRENT,MODE_LOWER,3))>0.0) res.Set(-1,value);
   return res;}
 
Vladimir Simakov:

Пример реального использования:

Ну нафик такую реальность

Причина обращения: