Помогите пожалуйста решить проблему

 

Парадокс!

Дело в том что при тестировании стратегии значения iHigh, iLow, iClose (учитывающиеся при выставлении Лося и Профита) - вроде бы стандартных функций считаются неправильно.

Причем начинают считаться неправильно при изменении совершенно другой функции:

int WhatBar() // Функция проверяющая является ли текущим бар с указанным временем.
// Возвращает: Да - 1, Нет - 0.
{int First=0;
int tDay=0; //День - текущий -0, Предыдущий -1...
int eHour=1; //Час формирования бара (!!!!!!!!ВО ВСЕЙ ПРОГРАММЕ МЕНЯЕТСЯ ТОЛЬКО ЭТОТ ПАРАМЕТР - 0 на 1!!!!!!!!!)
int Days=iTime(NULL,PERIOD_D1,tDay);
int Hours=eHour*3600;
int time=Days+Hours;
if (Time[0] == time)
First=1;

return(First);
}

Стоит только изменить значение определяющее бар с открытием в 01:00 на бар с открытием в 00:00 тут же значения лося и профита считаются верно.

Функции вышеописанная и использующая значение iHigh, iLow, iClose никак друг с другом не контактируют! Ни-как. Одна исполняющая, другая информационная и не используют глобальных переменных и т.п.

Да пусть функции...значение которое берется тупо из индикатора функцией iCustom при изменении вышеописанной функции,так же меняется!

Ей богу! Ставил после каждого вычисления Alert с значением и выдается не то что показывает индикатор при визуализации (правда сначала индюк показывает не совсем то что нужно а если его удалить и поставить на место показывается нормально...но если вычислять те же значения по тем же формулам в советнике с использованием iHigh, iLow, iClose (Pivot Point) - результат тоже съезжает)


Помогите! Может у кого то было такое расхождение при тестировании!!!

 
AYuBelov писал(а) >>

..Дело в том что при тестировании стратегии значения iHigh, iLow, iClose (учитывающиеся при выставлении Лося и Профита) - вроде бы стандартных функций считаются неправильно.

Они не считаются, а просто берутся из исторических данных.... А высчитываете вы похоже индекс бара.

А вообще мне кажется Вы пытаетесь сделать сложным, то проще простого. Суть несколько строчной функции и смысл ее использования уловить даже за 5 минут ниасилил).. Может с iBarShift было бы проще? Или опишите стоящую перед Вами задачу, постараюсь хотя бы алгоритмически помочь.

 
Почему не используете простую формулу:
if(TimeHour(TimeCurrent())==0) или if(TimeHour(TimeCurrent())==1)?
 

Незнай...ту функцию можно в других использовать...просто задавать нужное время.

Или описать переменные в названии функции и вызывать с теми.

А есть разница? Может тут собака зарыта?

 
есть подозрение, что Hour() в тестере не работает, во всяком случае в индикаторе в тестере точно не работает.
Распечатайте получаемое время, -увидите.