[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 127

 

Есть такой алгоритм пересчёта:

   int ic=IndicatorCounted();
   if(Bars-ic-1>1) {ic=reinit();}
   int limit=Bars-ic-1; //BarsPrev=Bars; // кол-во пересчетов
   if(History!=0 && limit>History) limit=History-1; // кол-во пересчетов по истории

   for(int i=limit; i>=1; i--) // цикл по непосчитанным и предпоследнему барам
     {
      int n;
      int iShift=i+Shift;
      
      if (i==0)
      Input[i]=iClose(Symb, Period(), iShift);
      else
      Input[i]=(iHigh(Symb, Period(), iShift)+iLow(Symb, Period(), iShift))/2;
       }

Как я понимаю, он считает все бары, кроме последнего.

Подскажите, как сделать так, что бы при i=0 пересчитывался последний бар (в цикле уже есть условие для этого)?

 
Спасибо большое за ответы)))) Я заменила iClose на Close [0] и все получилось....хотя странно...))))) еще раз спасибо)))
 
Lisi4ka330:
Спасибо большое за ответы)))) Я заменила iClose на Close [0] и все получилось....хотя странно...))))) еще раз спасибо)))
Для протокола, iClose(NULL, 0, 1) это Close[1], а не Close[0]
 
Cmu4:

Есть такой алгоритм пересчёта:

Как я понимаю, он считает все бары, кроме последнего.

Подскажите, как сделать так, что бы при i=0 пересчитывался последний бар (в цикле уже есть условие для этого)?

нету, ты же пишешь >= 1 (Больше или равно 1го бара, т.е. до 0го не доходишь... меняй условие на >=0

ЗЫ


а это ещё к чему?

int iShift=i+Shift;
 
Aleksander:

нету, ты же пишешь >= 1 (Больше или равно 1го бара, т.е. до 0го не доходишь... меняй условие на >=0

ЗЫ


а это ещё к чему?

Точно, совсем забыл про свои "эксперементы". НЕдавно исправил 0 на 1, так и осталось. Спасибо!

iShift - это сдвиг, задается в экстерн.

 
Cmu4:

Точно, совсем забыл про свои "эксперементы". НЕдавно исправил 0 на 1, так и осталось. Спасибо!

iShift - это сдвиг, задается в экстерн.

нуда... токо ты же пишешь что тебе надо 0й бар смотреть...

тогда убери

f (i==0)
      Input[i]=iClose(Symb, Period(), iShift);

шифт свой оттуда :) - поставь 0(нулик чтоли)

f (i==0)
      Input[i]=iClose(Symb, Period(), 0);
 
У меня вот такой вопрос. Порядковый номер сделок в терминале присваивается навсегда или меняется? Вот напрмер открыли три сделки с номерами 0 - 1 - 2, закрыли сделку номер 1, то в этом случае останутся сделки 0 и 2, или станут 0 и 1?
 
да, передвинутся в очереди, и не только сделки, графические объекты, и глобальные переменные, точно так же себя ведут.
 

Помогите пожалуйста. Могут ли выполнится условия указанные ниже???

Нужно сделать, так чтобы если текущая цена пересекает MA, то запускается алгоритм в { }:

if (Bid==iMA(0,0,ma_period,ma_shift,ma_method,PRICE_MEDIAN,0)
{
 ...
}

if (Ask==iMA(0,0,ma_period,ma_shift,ma_method,PRICE_MEDIAN,0)
{
 ...
}
 
orb:

Помогите пожалуйста. Могут ли выполнится условия указанные ниже???

Нужно сделать, так чтобы если текущая цена пересекает MA, то запускается алгоритм в { }:


И что, таки без разницы в какую сторону пересекает??? Гениальная тактика наверное...

Советников с пересечением машек и других индикаторов в кодобазе много, не надо колесо заново делать ;)

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