Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 133

 
skyjet:


Но ведь я сравниваю 3,2 и 1 бары, то есть подсчет упирается в x >=1?

И значит ли continue, что бары с совпадающей ценой просто не учитываются, им не присваиваются номера?

Задав оптимизационные параметры: начало 1, шаг 1, конец 4; на Н1 и Н4 вкладка результатов просто пуста, на D1 одинаковая прибыльность при разном кол-ве анализируемых баров.

Возможно, то что я понял из вашего вопроса отличается от того что вы имели ввиду. В моём примере сравниваются цены открытия между 3 и 2 барами, и 2 и 1. Бары 3 и 1 не сравниваются. В случае если сравниваемые значения равны - ничего не происходит, просто переход к следующему сравнению.
Почему х>1 (не >=). При первой итерации сравниваются Open[3]==Open[3-1], т.е. Open[3]==Open[2]. ОК. При второй (х=2), Open[2]==Open[1]. ОК. Третьей итерации нет. При х>=1 будет сравнение Open[1]==Open[0], не есть ОК, т.к. будте сравнение с 0 баром.
 
T-G:

Профи без вас ни куда.

Помогите с функцией. Которая считает последнее количество убыточных ордеров в истории до плюсового ордера.

то есть в истории 3 последних ордера в минус потом 1 в плюс и 2 в минус.

вот функция должна посчитать три последних (до плюсового)

int Number=0;
//---
if (OrdersHistoryTotal()>0)
{  for (int i=OrdersHistoryTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {  if (OrderProfit()<0.0)
         Number+=1;
         else break;
}  }  }
Здесь учитываются ордера закрытые только в минус. Если заработок = 0 (нулю), то подсчёт прерывается.
 
paladin80:
Здесь учитываются ордера закрытые только в минус. Если заработок = 0 (нулю), то подсчёт прерывается.
Может так статься, что совсем необязательно они будут идти в том порядке, в котором вы их считываете. Для точной и безоговорочной уверенности нужно сложить ордера в двумерный массив: в первом измерении время закрытия, во втором - тикет ордера. Далее, отсортировать массив по первому измерению, обрезать его до трёх и их (последние три) проверять.
 
chief2000:
Хочу перефразировать и дополнить свой предыдущий вопрос.
Ниже приведен код для массива из 4-х элементов. В реальности, количество элементов в массиве переменная величина.
Как изменить код чтобы количество вложенных циклов 'for' стало переменным, по одному 'for' на элемент массива?
Спасибо!

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}


Просматривая данную ситуацию, мне стало интересно. Когда пачка циклов вложенных имеется. Как происходят вычисления? Из самого глубоко вложенного или наоборот?

Т.е. первым вычислиться:

 for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);

Или с другой стороны? Хочется понять как это всё работает...

 
как сделать так, чтобы в советнике учитывались уровни технических индикаторов. Например cci. Если линия выше 0 уровня, то выполнять действия. Как сделать?
 
webip:
как сделать так, чтобы в советнике учитывались уровни технических индикаторов. Например cci. Если линия выше 0 уровня, то выполнять действия. Как сделать?

Если cci больше ноля, то ... если cci меньше ноля. то ...

Функция iCCI();

 

Гуру, подскажите, как решить задачу. Необходимо, чтобы при вычислении разницы между открытием и закрытием было положительное число. К примеру, если цена растет и вычитая от цены открытия закрытие, получается минусовое число.

 
artmedia70:

Если cci больше ноля, то ... если cci меньше ноля. то ...

Функция iCCI();



Да нет. Я знаю эту функцию, но не знаю как отразить это в коде. Может так?

 if(iCCI() > 0)
  {
    //остальной код?
  }
 
Forexman77:

Гуру, подскажите, как решить задачу. Необходимо, чтобы при вычислении разницы между открытием и закрытием было положительное число. К примеру, если цена растет и вычитая от цены открытия закрытие, получается минусовое число.


double MathAbs( double value)
Функция возвращает абсолютное значение (значение по модулю) переданного ей числа
 
hoz:

Просматривая данную ситуацию, мне стало интересно. Когда пачка циклов вложенных имеется. Как происходят вычисления? Из самого глубоко вложенного или наоборот?

Т.е. первым вычислиться:

Или с другой стороны? Хочется понять как это всё работает...


Можете посмотреть результаты, которые я приводил раньше для 4-х циклов, там самый внутренний цикл срабатывает один раз для получения 1234.
Причина обращения: