Автор |
Сообщение |
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
привет
нужен коллективный разум.
нужно посчитать сумму Volume для каждого бара торговой сессии за 5 последних дней
Например - имеем 5мин бары и время 10-00 - и мне нужно знать сумму объемов которые были в 10-00 за 5 последних дней.
Первая мысль была просто написать Ref(v,-7 + Ref(v,-78*2)
но такой вариант не работает так как далеко не всегда есть 78 баров внутри дня (например, не было сделок на не очень ликвидном интсрументе)
Так же при таком подходе придется отключать премаркет, что не хотелось бы.
Вообщем нужно как-то обратиться к предыдущим ТОРГОВЫМ дням...а как я не могу придумать |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если за последние 5 дней бар 10:00 был только 4 раза то что делаем? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Если за последние 5 дней бар 10:00 был только 4 раза то что делаем? |
тогда он = 0
например = 1200 + 3243 + 0 +3243 + 2353 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
[quote="max"]
000 писал(а): |
Если за последние 5 дней бар 10:00 был только 4 раза то что делаем? |
Ээх - похоже нет никаких идей |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Идеи есть, времени не хватает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
TN = TimeNum();
D = Day() != Ref(Day(), -1);
DayBar = ValueWhen(D, BarIndex(), 1) - ValueWhen(D, BarIndex(), 2);
DayBar = Highest(DayBar);
mV = 0;
for(i = 1; i < 1+(5*LastValue(DayBar)); i++)//i < 1+(5*LastValue(DayBar)); i++)
{
bV = IIf(TN == TN[i], V, 0);
SumbV = Sum(bV, ceil(DayBar*5.5));
SumbV = IIf(TN == TN[i], SumbV, 0);
mV = Max(mV, SumbV);
}
Plot(mV, "DW", colorRed, styleArea);
|
Вроде правильно. Проверь... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Спасибо большое
Почти все правильно.
1. Складываются 6 дней, т.е последний тоже, но объем последнего дня должен делить сумму предыдущих. Я попробовал 1+(4*LastValue(DayBar)) но не сработало
2.Странно, но почему-то очень медленно все пересчитывается |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
max писал(а): |
Спасибо большое
Почти все правильно.
1. Складываются 6 дней, т.е последний тоже, но объем последнего дня должен делить сумму предыдущих. Я попробовал 1+(4*LastValue(DayBar)) но не сработало
|
Не понял про последний день. Сколько дней будет складывать зависит от SumbV = Sum(bV, ceil(DayBar*5.5)); поставь 4.5 вместо 5.5. Но, последний день в любом случае будет считаться. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
так в этом то и фишка, чтобы не считать последний день
задача понять на сколько % объем текущего бара больше чем средний объем баров в это же время впредыдущих 5 днях |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Перечитай свое первое сообщение. Где там про то, что последний день не считается? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Перечитай свое первое сообщение. Где там про то, что последний день не считается? |
Да.... мой косяк...не корректно сформулировал с начала |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот. И получается, что придумываешь классный алгоритм и потом начинаешь лепить на него заплатки... И в итоге получается такое говно...
Ну ладно. Допустим. А что тебе мешает самому убрать последний бар? Всего делов то
mV = Max(mV, SumbV);
}
mV = mV - V;
Plot(mV, "DW", colorRed, styleArea); |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Ух, наконец-то добрался до компа
Спасибо, подшаманил, теперь работает как нужно. Немного тормозит, но в целом ок, для тестов сойдет. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот тут
5*LastValue(DayBar)
можно уменьшить до 3 вместо 5. Полегче будет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDzenLi
Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN
|
А еще этот индикатор показывает - накопление/распределение |
_________________ Нам не дано знать всего.
Последний раз редактировалось: MrDzenLi (Пт Окт 11, 2019 2:00 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number |
|
|