renatmt5: Я правильно понял, что переменные last_time и result - это и есть искомые значения, с которыми работаем. А имено result определяет, на сколько по времени будет смещена (перерисована) линия в будущее. Тогда и блок кода "Profit for the period" надо поставить перед блоком "Move the vertical line", чтобы двигать линию уже с учетом полученных данных по последней сделке. Всё верно или что-то путаю?
Это внутренние переменные функции LastProfitForPeriod.
Нам ведь нужно получить значение прибыли последней сделки? Вот LastProfitForPeriod() и выдаёт нам прибыль последней сделки. Остаётся в зависимости от этой прибыли двигать вертикальную линию.
Итак, остаётся последний штрих - в зависимости от полученной прибыли перемещать линию.
НАпомните какие там правила перемещения?
упс, сорри - уточняю:
- если результат последней сделки отрицательный и результат дня отрицательный, то вертикальная линия чертится на расстоянии 24 часа (сутки) в будущее. - если результат последней сделки отрицательный, а результат дня положительный, то вертикальная линия чертится на расстоянии 2 часа в будущее. - если результат последней сделки положительный, то вертикальная линия чертится на расстоянии 1 час в будущее.
- если результат последней сделки отрицательный и результат дня отрицательный, то вертикальная линия чертится на расстоянии 24 часа (сутки) в будущее. - если результат последней сделки отрицательный, а результат дня положительный, то вертикальная линия чертится на расстоянии 2 часа в будущее. - если результат последней сделки положительный, то вертикальная линия чертится на расстоянии 1 час в будущее.
А, так нужно ещё отдельно получать прибыль за текущий день.
Внести коррективы в LastProfitForPeriod() - убираем входные параметры времени "от" и "до" и формируем эти параметры уже внутри функции: формируем время начала дня (это будет "от"), а "до" получаем текущее время + сутки.
В итоге в LastProfitForPeriod() будем передавать по ссылке два параметра: прибыль за день и прибыль последней сделки.
Скомпилировал - здорово! Есть только моменты следующие: 1) Значению переменной Profit last day при наложении индикатора присваивается итоговая прибыль не за последний день, в котором была последняя сделка, а итоговую прибыль вообще по счету. Потом, правда, при перерасчете индикатора (где-то через 1-2 минуты) значение меняется на верное (итоговая прибыль за день, в котором была посл. сделка). Я только сужу по счету, на котором посл. сделка была сегодня. 2) При удалении индикатора с графика Comment в левом верхнем углу не удаляются. При очистке списка объектов тоже не удаляются. Я перезапускаю терминал, чтобы значения пропали, что не удобно конечно же. Как сделать проще - не знаю :)
Еще наверное логично блоки с кодом создания линии, перемещения линии и удаления линии (Create the vertical line, Move the vertical line и Delete the vertical line) разместить уже после блока расчета по последней сделке (Profit for the period). Чтобы уже с учетом смещения в будущее на n-часов, рассчитанных на основании данных profit_last_day и profit_last_deal, рисовать линию.
Типа
if (profit_last_day<=0 and profit_last_deal<=0){n=24;}
else (profit_last_day>0 and profit_last_deal<=0){n=2;}
else {n=1;} //--- time = last_time + n; //--- далее уже рисуем линию со смещением по времени относительно посл. сделки, используя рассчитанное значение time...
В версии 1.002 введена защита: если время открытия дневного бара вернуло "0" - значит не судьба и выходим.
//+------------------------------------------------------------------+//| Profit for the period |//+------------------------------------------------------------------+void LastProfitForPeriod(double &profit_last_day,double &profit_last_deal)
{
datetime from_date=iTime(Symbol(),PERIOD_D1,0);
if(from_date==D'1970.01.01 00:00')
return;datetime to_date=TimeCurrent()+60*60*24;
long last_time=0;
Теперь не будет запроса за всю жизнь торгового счёта.
Владимир, еще раз спасибо огромное за ваш труд! Я попробую сам поковырять код, чтобы уж совсем совесть не замучала и практики ради :) Отпишусь по успехам, если таковые будут
renatmt5: Владимир, еще раз спасибо огромное за ваш труд! Я попробую сам поковырять код, чтобы уж совсем совесть не замучала и практики ради :) Отпишусь по успехам, если таковые будут
Кстати, по защите, которую вы добавили есть следующий момент. Поскольку до расчета правильного значения у меня идет задержка 1-2 минуты, в течении которых переменные равны нулю, я для быстрого обновления переключаю текущий таймфрейм на другой - значения сразу же пересчитываются. Наверное, можно по этому принципу какой-то программный костыль сделать?
Я правильно понял, что переменные last_time и result - это и есть искомые значения, с которыми работаем. А имено result определяет, на сколько по времени будет смещена (перерисована) линия в будущее. Тогда и блок кода "Profit for the period" надо поставить перед блоком "Move the vertical line", чтобы двигать линию уже с учетом полученных данных по последней сделке.
Всё верно или что-то путаю?
Это внутренние переменные функции LastProfitForPeriod.
Нам ведь нужно получить значение прибыли последней сделки? Вот LastProfitForPeriod() и выдаёт нам прибыль последней сделки. Остаётся в зависимости от этой прибыли двигать вертикальную линию.
Итак, остаётся последний штрих - в зависимости от полученной прибыли перемещать линию.
НАпомните какие там правила перемещения?
упс, сорри - уточняю:
- если результат последней сделки отрицательный и результат дня отрицательный, то вертикальная линия чертится на расстоянии 24 часа (сутки) в будущее.
- если результат последней сделки отрицательный, а результат дня положительный, то вертикальная линия чертится на расстоянии 2 часа в будущее.
- если результат последней сделки положительный, то вертикальная линия чертится на расстоянии 1 час в будущее.
Вот нашёл пояснение, почему параметр "до" нужно делать в будущее:
Спасибо!
Судя по условиям необходим еще результат дня, в котором была последняя сделка (если сделок в этот день было несколько)
упс, сорри - уточняю:
- если результат последней сделки отрицательный и результат дня отрицательный, то вертикальная линия чертится на расстоянии 24 часа (сутки) в будущее.
- если результат последней сделки отрицательный, а результат дня положительный, то вертикальная линия чертится на расстоянии 2 часа в будущее.
- если результат последней сделки положительный, то вертикальная линия чертится на расстоянии 1 час в будущее.
А, так нужно ещё отдельно получать прибыль за текущий день.
Внести коррективы в LastProfitForPeriod() - убираем входные параметры времени "от" и "до" и формируем эти параметры уже внутри функции: формируем время начала дня (это будет "от"), а "до" получаем текущее время + сутки.
В итоге в LastProfitForPeriod() будем передавать по ссылке два параметра: прибыль за день и прибыль последней сделки.
Начало дня получаем при помощи iTime
- то есть это время открытия текущего дневного бара.
Скомпилировал - здорово!
Есть только моменты следующие:
1) Значению переменной Profit last day при наложении индикатора присваивается итоговая прибыль не за последний день, в котором была последняя сделка, а итоговую прибыль вообще по счету. Потом, правда, при перерасчете индикатора (где-то через 1-2 минуты) значение меняется на верное (итоговая прибыль за день, в котором была посл. сделка). Я только сужу по счету, на котором посл. сделка была сегодня.
2) При удалении индикатора с графика Comment в левом верхнем углу не удаляются. При очистке списка объектов тоже не удаляются. Я перезапускаю терминал, чтобы значения пропали, что не удобно конечно же. Как сделать проще - не знаю :)
Еще наверное логично блоки с кодом создания линии, перемещения линии и удаления линии (Create the vertical line, Move the vertical line и Delete the vertical line) разместить уже после блока расчета по последней сделке (Profit for the period). Чтобы уже с учетом смещения в будущее на n-часов, рассчитанных на основании данных profit_last_day и profit_last_deal, рисовать линию.
Типа
if (profit_last_day<=0 and profit_last_deal<=0){n=24;}
else (profit_last_day>0 and profit_last_deal<=0){n=2;}
else {n=1;}
//---
time = last_time + n;
//---
далее уже рисуем линию со смещением по времени относительно посл. сделки, используя рассчитанное значение time...
В версии 1.002 введена защита: если время открытия дневного бара вернуло "0" - значит не судьба и выходим.
Теперь не будет запроса за всю жизнь торгового счёта.
Я попробую сам поковырять код, чтобы уж совсем совесть не замучала и практики ради :) Отпишусь по успехам, если таковые будут
Владимир, еще раз спасибо огромное за ваш труд!
Я попробую сам поковырять код, чтобы уж совсем совесть не замучала и практики ради :) Отпишусь по успехам, если таковые будут
Хорошо.