торговая стратегия на базе Волновой теории Эллиота - страница 296

 
Andre69

Вы не пробовали проводить дополнительные манипуляции с коэффициентами вейвлет преобразования.
В итоге получать что-то вроде этого:
 
Парни, работали бы на благо родины, занимались бы наукой, че-то полезное придумали бы, амбиции свои, наконец проявили
 
Коллеги, есть маленький вопрос. Как бы корректно выразиться – есть ли возможность динамически расширять количество элементов в массиве. Например, ищу стабильные каналы, на какой то области от нулевого бара. С начала поиска их количество мне не известно, возможно, что ни одного и не найду. Из прочитанной документации, вроде сообразил, что нельзя. Это так или все же есть, какой ни будь более хитрый способ?

PS: Пока придумал несколько вариантов в MT (в MathCAD такой проблемы нет):

(1). Создаю параметр (int count=0;) В цикле прохожу по диапазону, проверяю критерии, если удовлетворяет, то count=count+1. Далее, создаю массив с полученным count, и повторяю все заново: рассчитанные параметры записываю в массив, выбираю оптимальный канал.

(2) Создаю массив для параметров каналов в соответствии с первоначальной длиной диапазона.
 
grasn
... Как бы корректно выразиться – есть ли возможность динамически расширять количество элементов в массиве. Например, ищу стабильные каналы, на какой то области от нулевого бара. С начала поиска их количество мне не известно, возможно, что ни одного и не найду.

Честно говоря вопрос не совсем понятен. Количество элементов в массиве (размер) динамически изменяется с помощью ArrayResize. Если на самом деле хочется создавать структуры, то их обещают только в МТ5.
Чисто по созвучию слов - я решал проблему дополнительных свойств ордеров, их количество тоже заранее точно неизвестно и количество свойств (те самые 40 показателей) тоже заранее не знал. Использовались три функции, но новые свойства приходилось дописывать в каждую из них ручками, с последующей перекомпиляцией. То это или не то - не знаю, но всякий случай выкладываю код последней версии
//+------------------------------------------------------------------+
//| Изменение размеров массивов свойств ордера                       |
//+------------------------------------------------------------------+
int ResizeOrdArrays() {
  ArrayResize(OrdID,OrdArrSize);
  ArrayResize(OrdTicket,OrdArrSize);
//  ArrayResize(OrdData1,OrdArrSize);
//  ArrayResize(OrdData2,OrdArrSize);
//  ArrayResize(OrdData3,OrdArrSize);
//  ArrayResize(OrdData4,OrdArrSize);
  return(0);
}
//+------------------------------------------------------------------+
//| Добавление ордера в список ордеров                               |
//+------------------------------------------------------------------+
int AddOrder(int ID) {
  OrdInd=OrdNum;
  OrdNum++;
  if (OrdNum > OrdArrSize) {
    OrdArrSize = OrdNum;
    ResizeOrdArrays();
  }
  OrdID[OrdInd] = ID;
  OrdTicket[OrdInd] = ticket;
//  OrdData1[OrdInd] = 123.45;
//  OrdData2[OrdInd] = 123.45;
//  OrdData3[OrdInd] = 123.45;
//  OrdData4[OrdInd] = 123.45;
  return(0);
}
//+------------------------------------------------------------------+
//| Исключение ордера из списка ордеров                              |
//+------------------------------------------------------------------+
int CutOrder() {
  OrdNum--;
  if (OrdInd < OrdNum) {
    OrdID[OrdInd] = OrdID[OrdNum];
    OrdTicket[OrdInd] = OrdTicket[OrdNum];
//    OrdData1[OrdInd] = OrdData1[OrdNum];
//    OrdData2[OrdInd] = OrdData2[OrdNum];
//    OrdData3[OrdInd] = OrdData3[OrdNum];
//    OrdData4[OrdInd] = OrdData4[OrdNum];
  }
  return(0);
}



P.S. Кстати, аналогичную "структуру" я использовал и для своих каналов.

 

...Количество элементов в массиве (размер) динамически изменяется с помощью ArrayResize. ...


А разве изменение размера уже созданного массива не приводит к его обнулению?
 
Нет. Это проверяется с помощью принта.
 
Нет. Это проверяется с помощью принта.


Спасибо. Видать, как то неверно написал принт. :о)
 
Хм, сам я давно не проверял, но во-первых вроде всё нормально работает, а во-вторых Renat в своё время однозначно заверил, что это свойство можно считать документированным, то есть подлежащим поддержке во всех новых версиях.
 
Подтверждаю. При увеличении размера массива на 1 в конец массива добавляется новый нулевой элемент. Остальные элементы остаются без изменений.
При изменении размера матрицы в нее добавляется нулевая строка.
 
Спасибо. Можно совершенно точно утверждать, что это я чего-то перемудрил в коде. Ок. такая возможность значительно упрощает задачу.