Мультитаймфреймный эксперт. Помогите с написанием функции.

 

Здравствуйте. Пишу мультитаймфреймный эксперт. Нужна помощь в написании одной интересной функции, а то я совсем запутался. В-общем есть массив с дневными данными ForLastSignalType_D1[] и массив с часовыми данными ForLastSignalType_H1[] в них содержатся значения 0 1 2 3 4 5 6 соответственно в разнобой (что то вроде типа свечи). Каждая ячейка массива соответствует номеру свечи на графике. Нужно выполнить непростое условие. Проверяем дневной массив от 0 до количества баров на дневном графике, и как только находим ячейку со значением 6(например 25-ая ячейка), тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка), если есть то в часовом массиве от ячейки с номером (22*24) ищем есть ли ячейка со значением 6, и есть ли от этой ячейки до 0 ячейка со значением 3. Если есть присваем номер ячейки в часовом массиве со значением 3 переменной Checker_D1_Bear и прекращаем поиск.  Если хотя бы одно условие из серии не выполняется, то начинаем в дневном массиве дальше искать значение 6 и заново проверять младшие условия. Буду рад любой помощи, заранее благодарю.. Пробовал вот так, но не то пальто.. Уже сломал весь мозг..

  if (Checker_D1_Bear == 0)
  { 
   for (int ibear=0; ibear<Bars_D1-1; ibear++)
       {
       if (ForLastSignalType_D1[ibear] == 6)
          {
               Print(ibear);
          for (int ybear=ibear; ybear>0; ybear--)
            {
            if (ForLastSignalType_D1[ybear] == 3)
               {
               for (int zbear=ybear*24; zbear>0; zbear--)
                   {
                   if (ForLastSignalType_H1[zbear] == 6)
                      {
                      for (int xbear=zbear; xbear>0; xbear--)
                          {
                          if (ForLastSignalType_H1[xbear] == 3)
                              {
                              Checker_D1_Bear=xbear;
                              }
                           }
          
                      }
                   } 
               }
            } 
          }
       }
  }
 
Denis Poligeshko:

Здравствуйте. Пишу мультитаймфреймный эксперт. Нужна помощь в написании одной интересной функции, а то я совсем запутался. В-общем есть массив с дневными данными ForLastSignalType_D1[] и массив с часовыми данными ForLastSignalType_H1[] в них содержатся значения 0 1 2 3 4 5 6 соответственно в разнобой (что то вроде типа свечи). Каждая ячейка массива соответствует номеру свечи на графике. Нужно выполнить непростое условие. Проверяем дневной массив от 0 до количества баров на дневном графике, и как только находим ячейку со значением 6(например 25-ая ячейка), тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка), если есть то в часовом массиве от ячейки с номером (22*24) ищем есть ли ячейка со значением 6, и есть ли от этой ячейки до 0 ячейка со значением 3. Если есть присваем номер ячейки в часовом массиве со значением 3 переменной Checker_D1_Bear и прекращаем поиск.  Если хотя бы одно условие из серии не выполняется, то начинаем в дневном массиве дальше искать значение 6 и заново проверять младшие условия. Буду рад любой помощи, заранее благодарю.. Пробовал вот так, но не то пальто.. Уже сломал весь мозг..

Магия с тремя шестерками ...   Уже и это в ход пошло ...

 
LRA:

Магия с тремя шестерками ...   Уже и это в ход пошло ...

за этими 6-ками кроется другая магия :)

 
Denis Poligeshko:

Здравствуйте. Пишу мультитаймфреймный эксперт. Нужна помощь в написании одной интересной функции, а то я совсем запутался. В-общем есть массив с дневными данными ForLastSignalType_D1[] и массив с часовыми данными ForLastSignalType_H1[] в них содержатся значения 0 1 2 3 4 5 6 соответственно в разнобой (что то вроде типа свечи). Каждая ячейка массива соответствует номеру свечи на графике. Нужно выполнить непростое условие. Проверяем дневной массив от 0 до количества баров на дневном графике, и как только находим ячейку со значением 6(например 25-ая ячейка), тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка), если есть то в часовом массиве от ячейки с номером (22*24) ищем есть ли ячейка со значением 6, и есть ли от этой ячейки до 0 ячейка со значением 3. Если есть присваем номер ячейки в часовом массиве со значением 3 переменной Checker_D1_Bear и прекращаем поиск.  Если хотя бы одно условие из серии не выполняется, то начинаем в дневном массиве дальше искать значение 6 и заново проверять младшие условия. Буду рад любой помощи, заранее благодарю.. Пробовал вот так, но не то пальто.. Уже сломал весь мозг..

Я бы помог но думаю Ты мудришь слишком ... если бы конкретно сказал про условия страты... Я помог бы его сделать... 

Во первых : "...тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка), ..." это в ком.. в нем?? в дневном баре "внутри" то есть на часовом ТМ или как?? 

Во вторых "... дневном графике, и как только находим ячейку со значением 6(например 25-ая ячейка), тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка) ..." - не проще ли сразу искать 3 а потом уже 6?? и почему только эти два числа??

многообразие на рынках стремится к бесконечности.. т.е. каждый бар почти уникален... 

Я бы сделал все гораздо проще если бы вообще понимал чего Ты хочешь)))

 
Martin Cheguevara:

Я бы помог но думаю Ты мудришь слишком ... если бы конкретно сказал про условия страты... Я помог бы его сделать... 

Во первых : "...тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка), ..." это в ком.. в нем?? в дневном баре "внутри" то есть на часовом ТМ или как?? 

Во вторых "... дневном графике, и как только находим ячейку со значением 6(например 25-ая ячейка), тут же в нем проверяем есть ли после него ближе к 0 ячейка со значением 3 (например 22-ая ячейка) ..." - не проще ли сразу искать 3 а потом уже 6?? и почему только эти два числа??

многообразие на рынках стремится к бесконечности.. т.е. каждый бар почти уникален... 

Я бы сделал все гораздо проще если бы вообще понимал чего Ты хочешь)))

спасибо за ответ :) тайна стратегии за 7 печатями ) я уже придумал, все прекрасно работает.. просто немного кипнул вчера  :) вопрос снимается

 

Столько однотипных вложенных циклов, проще вынести поиск по массиву в отдельную функцию.

template <typename T>
int SearchByArray(const T value, const T &arr[])
{
//---
   for(int i=0;i<ArraySize(arr);i++)
      if(arr[i]==value)return(i);
//---
   return(-1);
}
Причина обращения: