В 10:30 надо получить номер бара периода Н1 с временем 23:45 находясь на графике М5
Я правильно понял?
Мне нужно получить время 23:45 в данном случае (вообще же у меня не M5, а M1 текущий ТФ, но это не важно) - это время последнего бара текущего ТФ в структуре прошлого бара ТФ выше. Сдвиг на графике это 1 бар для H1, но может быть и другой сдвиг, допустим мне в 11 часов надо будет получить информацию, т.е. сдвиг будет 2.
Если я так запрошу, то получаю 10:00, а мне нужно получить время 23:49!
1. Определите сдвиг (бар), который нужен для старшего ТФ. - время между открытием и закрытием этого бара (насколько я вас понял) вы анализируете на предмет имеющихся внутри него баров из младшего ТФ.
2. Получите время его открытия
3. Прибавьте длительность ТФ в секундах для этого ТФ ко времени открытия. - т.е. так вы получите время закрытия бара старшего ТФ.
4. Отнимите длительность младшего ТФ (если М1, то 60 секунд) - это время открытия последнего бара младшего ТФ в структуре старшего ТФ. Найдите сдвиг этого бара на основе вычисленного времени. (Можете просто от времени закрытия бара старшего ТФ отнять 2-3 секунды и найти бар младего ТФ, к которому относится это время). Если запрос делать НЕ строгим, то как раз полУчите ближайший имеющийся бар слева (от запрошенного времени), если вдруг последнего бара на младшем ТФ нет.
1. Определите сдвиг (бар), который нужен для старшего ТФ. - время между открытием и закрытием этого бара (насколько я вас понял) вы анализируете на предмет имеющихся внутри него баров из младшего ТФ.
2. Получите время его открытия
3. Прибавьте длительность ТФ в секундах для этого ТФ ко времени открытия. - т.е. так вы получите время закрытия бара старшего ТФ.
4. Отнимите длительность младшего ТФ (если М1, то 60 секунд) - это время открытия последнего бара младшего ТФ в структуре старшего ТФ. Найдите сдвиг этого бара на основе вычисленного времени. (Можете просто от времени закрытия бара старшего ТФ отнять 2-3 секунды и найти бар младего ТФ, к которому относится это время). Если запрос делать НЕ строгим, то как раз полУчите ближайший имеющийся бар слева (от запрошенного времени), если вдруг последнего бара на младшем ТФ нет.
Не поверите, но час назад написал похожий алгоритм на бумаге! Только это как то муторно, думал, что есть более простой способ.
Только пункт 4 может не работать, у меня проверка наоборот на выход бара за пределы, т.е. если ситуация не стандартная, то придется циклом подбирать время пока не выйдем за диапазон.
Плохое решение. Вместо struct лучше использовать классы. Все то же самое, но можно работать через указатели
class MyClass :
{
public:
int arr[];
int size;
MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; elsePrint(__FUNCTION__,"Ошибка инициализации массива"); }
~MyStruct(){ ArrayFree(arr); size = -1; } // этого не надо
};
//+------------------------------------------------------------------+
MyClass * cluster[47];
for(int n = 0; n < 47; n++)
cluster[n] = new MyClass;
Писал в браузере, вроде не напортачил. Я убег на часик.
Мне нужно получить время 23:45 в данном случае (вообще же у меня не M5, а M1 текущий ТФ, но это не важно) - это время последнего бара текущего ТФ в структуре прошлого бара ТФ выше. Сдвиг на графике это 1 бар для H1, но может быть и другой сдвиг, допустим мне в 11 часов надо будет получить информацию, т.е. сдвиг будет 2.
Алексей, посчитай-ка сколько человек не могут понять что тебе надо.
Хоть как-то попытайся чётко сформулировать задачу. Что надо получить и в какое время на каком периоде графика по какому ТФ.
Хорошо, переходим на визуализацию мыслей :)
Белым цветом показал где делаем запрос, желтым время бара, которое мы должны получить.
Так понятней? Если нет, то прошу задавать уточняющие вопросы.
Вопрос:
В 10:30 надо получить номер бара периода Н1 с временем 23:45 находясь на графике М5
Я правильно понял?
Вопрос:
В 10:30 надо получить номер бара периода Н1 с временем 23:45 находясь на графике М5
Я правильно понял?
Мне нужно получить время 23:45 в данном случае (вообще же у меня не M5, а M1 текущий ТФ, но это не важно) - это время последнего бара текущего ТФ в структуре прошлого бара ТФ выше. Сдвиг на графике это 1 бар для H1, но может быть и другой сдвиг, допустим мне в 11 часов надо будет получить информацию, т.е. сдвиг будет 2.
Извините, пропустил Ваш ответ.
Вот этого я и не могу сделать!
Если я так запрошу, то получаю 10:00, а мне нужно получить время 23:49!
1. Определите сдвиг (бар), который нужен для старшего ТФ. - время между открытием и закрытием этого бара (насколько я вас понял) вы анализируете на предмет имеющихся внутри него баров из младшего ТФ.
2. Получите время его открытия
3. Прибавьте длительность ТФ в секундах для этого ТФ ко времени открытия. - т.е. так вы получите время закрытия бара старшего ТФ.
4. Отнимите длительность младшего ТФ (если М1, то 60 секунд) - это время открытия последнего бара младшего ТФ в структуре старшего ТФ. Найдите сдвиг этого бара на основе вычисленного времени. (Можете просто от времени закрытия бара старшего ТФ отнять 2-3 секунды и найти бар младего ТФ, к которому относится это время). Если запрос делать НЕ строгим, то как раз полУчите ближайший имеющийся бар слева (от запрошенного времени), если вдруг последнего бара на младшем ТФ нет.
1. Определите сдвиг (бар), который нужен для старшего ТФ. - время между открытием и закрытием этого бара (насколько я вас понял) вы анализируете на предмет имеющихся внутри него баров из младшего ТФ.
2. Получите время его открытия
3. Прибавьте длительность ТФ в секундах для этого ТФ ко времени открытия. - т.е. так вы получите время закрытия бара старшего ТФ.
4. Отнимите длительность младшего ТФ (если М1, то 60 секунд) - это время открытия последнего бара младшего ТФ в структуре старшего ТФ. Найдите сдвиг этого бара на основе вычисленного времени. (Можете просто от времени закрытия бара старшего ТФ отнять 2-3 секунды и найти бар младего ТФ, к которому относится это время). Если запрос делать НЕ строгим, то как раз полУчите ближайший имеющийся бар слева (от запрошенного времени), если вдруг последнего бара на младшем ТФ нет.
Не поверите, но час назад написал похожий алгоритм на бумаге! Только это как то муторно, думал, что есть более простой способ.
Только пункт 4 может не работать, у меня проверка наоборот на выход бара за пределы, т.е. если ситуация не стандартная, то придется циклом подбирать время пока не выйдем за диапазон.
хочу объявить массив структур - вроде проблем нет, до тех пор пока не увидел где-то, что структура может иметь конструктор...
как объявить массив структур имеющих конструктор? (как избавиться обойти эту конструкцию я знаю)
работает:
не работает, но хочу так:
Плохое решение. Вместо struct лучше использовать классы. Все то же самое, но можно работать через указатели
Писал в браузере, вроде не напортачил. Я убег на часик.
Мне нужно получить время 23:45 в данном случае (вообще же у меня не M5, а M1 текущий ТФ, но это не важно) - это время последнего бара текущего ТФ в структуре прошлого бара ТФ выше. Сдвиг на графике это 1 бар для H1, но может быть и другой сдвиг, допустим мне в 11 часов надо будет получить информацию, т.е. сдвиг будет 2.
Алексей, посчитай-ка сколько человек не могут понять что тебе надо.
Хоть как-то попытайся чётко сформулировать задачу. Что надо получить и в какое время на каком периоде графика по какому ТФ.