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

 
Важный момент - объекты не создаются или не рисуются? Можно ли считать свойства неотрисованных объектов?
 
А вот и новый сюрприз - рисование стрелочек не меняет времени прогона, это интересно.
Время - 4 с небольшим минуты, фактически не изменилось.

2006.07.08 19:35:45 HistoryChannells EURUSD,M30: deinitialized
2006.07.08 19:35:45 HistoryChannells EURUSD,M30: Выполняем deinit()
2006.07.08 19:35:45 HistoryChannells EURUSD,M30: Время оптимизированного алгоритма 261281 ms
2006.07.08 19:31:24 HistoryChannells EURUSD,M30: initialized
2006.07.08 19:31:19 HistoryChannells EURUSD,M30: loaded successfully
2006.07.08 19:31:11 Compiling 'HistoryChannells'
 
Важный момент - объекты не создаются или не рисуются? Можно ли считать свойства неотрисованных объектов?


Объекты создаются - специально проверял, даже можно свойство "невидимой" стрелки посмотреть. Вот код:
      centerLR=BestChannels[0][2]*(lastBar-1)+BestChannels[0][3];

      ObjectCreate("up"+UpArrowCounter,OBJ_ARROW,0,Time[lastBar-1],centerLR+BestChannels[0][5]);
      ObjectSet("up"+UpArrowCounter,OBJPROP_ARROWCODE,158);
      ObjectSet("up"+UpArrowCounter,OBJPROP_COLOR,Red);
      ObjectCreate("down"+DownArrowCounter,OBJ_ARROW,0,Time[lastBar-1],centerLR-BestChannels[0][5]);
      ObjectSet("down"+DownArrowCounter,OBJPROP_ARROWCODE,158);
      ObjectSet("down"+DownArrowCounter,OBJPROP_COLOR,Red);
      UpArrowCounter++;
      DownArrowCounter++; 



а вот рисунок:

 
Хмм... это мой косякоказывается, надо проверить завтра. На сегодня хватит.
 
Да, я тоже успел проверить таким кодом
  for (i=0; i<50000;i++) {
    obj_name = i;
    ObjectCreate(obj_name,OBJ_TREND,0,Time[0],i,Time[1],i);  
    ObjectSet(obj_name, OBJPROP_STYLE, DRAW_NONE);
    j = ObjectGet(obj_name, OBJPROP_PRICE1);
    Print(j);
  } 
   
  for (i=0; i<50000;i++) {
    obj_name = i;
    ObjectDelete(obj_name);  
  } 


 


Имена картинок долдны быть только латиницей и желательно формата *.png (gif не показывается по ссылке на этом форуме)


Это все так и сделано, я ж говорю в окне редактора она отображается нормльно, а как только жму кнопку добавить или сохранить в зависимости от того добавляю или изменяю сообщение она пропадает и пропадает даже то что я набрал :(
 
Ладно пошел другим путем(стали ваще меня оттуда посылать на 30 секунд, хотя и ожидание 10 мин не помогает :( ) ну да ладно хотел просто показать что у меня на сей момент по евре полечается да уж наверно не актуально
 
А вот и новый сюрприз - рисование стрелочек не меняет времени прогона, это интересно.

У меня такой эффект наблюдается, в зависимости от способа запуска обсуждавшегося здесь алгоритма, время выполнения бывает или 0 или 16 ms. Предполагаю, что в каких-то случаях алгоритм выполняется непрерывно, а в каких то прерывается и отрабатывется полный цикл терминала (поскольку цифры стабильно повторяются). По аналогии - не может рисование происходить после окончания вычислений?
 
Vladislav 02.06.06 11:26
что касается практической реализации, точнее методов, положенных в основу все достаточно просто: в квадратичной функции есть коэффициенты, которые Вам нужно подобрать оптимальным образом - регрессия дает линейный, точнее оценку для его построения. И, соответственно, Вы сможете оценить до каких пределов (размахов амплитуд) в разложении Тейлора (построение квадратичной формы) можно использовать этот коэффициент. Дальше, по поводу остальных к-тов, подумайте сами. И еще для поиска минимума потенциальной энергии Вам не обязательно знать траекторию цены, но что знать более важно - градиент потенциала ;). То есть динамическое состояние его нулевой отметки - должны же Вы считать что-то за нулевой потенциал. И все это достаточно оценить - прямое дифференцирование не обязательно.
Если образно, "на пальцах", применяя геометрические образы:
просто представьте, что на поверхности (аналог некой пересеченной местности) катится шарик (это цена). Для того, чтобы определить зоны притяжения траектории движения шарика не обязательно знать тонкости его изготовления. Гораздо полезнее знать свойства этой "пересеченной местности".

Vladislav 14.06.06 21:06
Совершенно верно - я ведь писал об этом, что минимум функционала потенциальной энергии служит одним из критериев для отбора каналов. И это свойство потенциальности поля цены, а саму траекторию я не ищу в силу (опять повторюсь) того, что все траектории, укладывающиеся в доверительный интервал должны считаться равнозначными для заданной вероятности. То есть построение проекций сводится сначала к отбору выборок, потом к линейной алгебре.

В продолжении поднятой темы, по которой я уже писал свои соображения на 33 странице, у меня родилась ещё одна идея насчёт нахождения канала с минимальной потенциальной энергией в серии подряд идущих каналов, удовлетворяющих многократно уже озвученным условиям. Чем мы располагаем построив канал линейной регрессии? Мы располагаем областью, ограниченной его границами, внутри которой цена могла ходить как угодно. Единственное условие, которое было выполнено – это условие того, что цена в этом канале не выходила за его границы. Далее Vladislav говорил, что все траектории, укладывающиеся в доверительный интервал должны считаться равнозначными для заданной вероятности. Затем мы предполагаем, что цена во время своего движения могла двигаться по квадратичной функции – то есть не нарушаем указанное утверждение. Тем более, что это утверждение исходит из предположения что поле цены потенциально. То есть для любого момента времени (и для любой выборки) мы можем построить аппроксимирующую параболу и сказать, что вот исходя из этой выборки цена имела вот такую траекторию, вокруг которой она ходила на этой выборке. Условно говоря это такой параболический наклонный желобок и шарик, имеющий множественные неоднородности на своей поверхности. Теперь что мы можем принять за динамическое состояние нулевой отметки потенциала? Раз шарик всё-таки скатился из начала канала в его конец, двигаясь по нашему условному наклонному параболическому желобку, то и минимум потенциальной энергии для этого желобка разумеется будет находиться в текущий момент времени на траектории этого желобка и соответственно на шарик (цену) в текущий момент времени будет действовать сила (градиент потенциала), стремящаяся сместить шарик к траектории параболического желобка. Теперь как найти величину и направление этого градиента? Это очень просто – находим параболу по методу МНК и далее находим разность между текущей ценой и этой параболой (минимумом потенциала). Разумеется эта разница может быть как положительной так и отрицательной. Далее на основании того, что раз выбранный нами канал линейной регрессии должен являться “истинным” наиболее подходящим для прогноза, то и выборка должна иметь кроме уже известных условий сходимости (СКО<СКО2/3) ещё какие-либо подтверждающие эту сходимость условия. Упоминание Владиславом минимума функционала потенциальной энергии меня натолкнула на мысль о том, что для этого необходимо чтобы сумма градиентов потенциалов была как можно меньше для канала, в котором мы строим эти самые параболические аппроксимирующие желобки по которым у нас катится шарик и которые являются наилучшим описанием нашей пересечённой местности. Я естественно сразу же попробовал проверить это предположение на практике и делюсь результатами по этой ссылке https://c.mql5.com/mql4/forum/2006/07/min_poten_energy.zip

Что мы видим на этих чартах? Мы видим канал линейной регрессии, построенный по методу минимума СКО в серии, которым пользуюсь я в текущий момент времени в своём эксперте. На отдельном графике нарисован график алгебраической (то есть я провожу суммирование градиентов с учётом их знаков (+/-)) суммы градиентов потенциала шарика по отношению к линии параболы построенной для текущей выборки. Для простоты понимания могу сказать, что тут использован абсолютно тот же самый подход, который используется для определения коэффициента Хёрста с тем отличием, что вместо аппроксимирующего канала линейной регрессии берётся парабола (квадратичная функция), а также сама парабола строится по всей текущей выборке, включая расчётный бар, для которого ищется градиент потенциала. На всякий случай напомню, что для поиска коэффициента Хёрста бралась выборка, не включающая текущий бар.
Синяя вертикальная линий указывает локальный минимум для алгебраической суммы градиентов потенциалов для канала, начинающегося на этом самом баре. Если посмотреть внимательно на графики для EURUSD и USDCHF, то видно, что локальные минимумы в точности (+/-1 бар) совпадают с локальными максимумами/минимумами цены. Погрешность в 1 бар я связываю с особенностями подготовки выборки. Я в качестве выборки выбираю значения бара (O+H+L+C)/4. Вероятно в данном случае нужно как-то избирательно выбирать либо High либо Low, что однозначно ликвидирует погрешность определения канала с минимумом потенциальной энергии. И тогда каналы в серии будут в точности совпадать с каналами, показанными на картинке, которую Vladislav приводил ранее для USDCHF. Ну что ж буду пытаться реализовать данное предположение в своём советнике. Думаю, что оно серьёзно приближает к той методике отбора каналов, которой пользуется Vladislav и которой он поделился.

PS: На графике выведен модуль алгебраической суммы градиентов (для наглядности). Для расчёта градиента потенциала на текущем баре строим параболу для выборки от начала канала до текущего бара, включая сам расчётный бар. То есть если у вас выборка 100 баров, то и нужно будет расчитать 97 парабол, поскольку для построения параболы по методу МНК требуется иметь как минимум 4 отсчёта (это я сегодня уже экспериментальным путём выяснил ;o)). Соответственно градиент потенциала на первых 3х барах я просто принимаю равным нулю. Rosh, думаю здесь Вам будет раздолье на оптимизацию расчётных алгоритмов, поскольку расчёт параболы занимает в несколько раз больше времени, чем расчёт канала линейной регрессии ;o))).
 
А вот и новый сюрприз - рисование стрелочек не меняет времени прогона, это интересно.

У меня такой эффект наблюдается, в зависимости от способа запуска обсуждавшегося здесь алгоритма, время выполнения бывает или 0 или 16 ms. Предполагаю, что в каких-то случаях алгоритм выполняется непрерывно, а в каких то прерывается и отрабатывется полный цикл терминала (поскольку цифры стабильно повторяются). По аналогии - не может рисование происходить после окончания вычислений?



В этой ссылке - "MQL4, MQL2, EasyLanguage, Wealth-Lab 3.0 и VC++: сравнение скорости" - Ренат писал


Renat 14.01.05 14:18

Просто я сам не раз сталкивался с не совсем адекватным поведением GetTickCount(); Хотя, если результаты множества замеров были устойчивыми +/- некоторая маленькая дельта, то это подтверждает верность тестов.


Да, точность GetTickCount() прыгает от 10 до 16 мс и им нельзя мерить мелкие периоды, но в нашем случае его использование обосновано. Особенно, когда к нему так легко достучаться из почти любого кода.
Причина обращения: