Автор |
Сообщение |
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Привет! Хочу сравнить две вещи
1. Объем бара со средним объемом баров в это же время но в течении последних 5 дней
Например: для бара в 9-30 хочу знать какой средний объем у баров в 9-30 за последние 5 дней.
2.Аналогично количество баров и суммарный объем за промежуток с 8утра до 9 сравнить с аналогичными значениями за последние 5 дней (текущий не включаем)
Пробовал
per = 10;
dt = DateNum();
End = TimeNum();
SumVolum = 0;
for(i = 1; i > 0; i--)
{
SumVolum = SumVolum + ValueWhen(End AND dt-i, Volume);
}
AverageVolum = SumVolum/per;
Лыжи не поехали
Что может не так быть?
пасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
N = 5; // скока дней
BT = TimeNum();
SumVolum = 0;
for(i = 1; i <= N; i++)
{
SumVolum = SumVolum + ValueWhen(BT, Volume, N);
}
AverageVolum = SumVolum/N;
|
Я бы так сделал. Писал не в Ами а прямо тут. Разумеется не проверял. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Код: |
N = 5; // скока дней
BT = TimeNum();
SumVolum = 0;
for(i = 1; i <= N; i++)
{
SumVolum = SumVolum + ValueWhen(BT, Volume, N);
}
AverageVolum = SumVolum/N;
|
Я бы так сделал. Писал не в Ами а прямо тут. Разумеется не проверял. |
Нет, такой вариант не работает.
Он что-то иное считает - вроде ближние бары просто |
|
|
Посмотреть профиль Отправить личное сообщение |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
И еще хотел уточнить - не могу найти в хелпе - может ли Ами в АФЛ определять какой ТФ активный? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Функция показывающая текущий фрейм
Interval() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Смысл кода вот такой
SumVolum = ValueWhen(BT, Volume, 1) + ValueWhen(BT, Volume, 2) + ValueWhen(BT, Volume, 3) + ValueWhen(BT, Volume, 4)...; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Смысл кода вот такой
SumVolum = ValueWhen(BT, Volume, 1) + ValueWhen(BT, Volume, 2) + ValueWhen(BT, Volume, 3) + ValueWhen(BT, Volume, 4)...; |
ну мне тоже так же показалось но когда я проверил в экселе - у меня данные не сошлись
я несколько вариантов перепробовал - хрень выходит |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вроде так работает, но тормозит...
Код: |
SetBarsRequired(sbrAll, sbrAll);
N = 5; // скока дней
BT = TimeNum();
SumVolum = 0;
for(i = 3; i < BarCount; i++)
{
j = T = 0;
do
{
j++;
if(BT[i] == BT[i-j])
{
T++;
SumVolum[i] = SumVolum[i] + V[i-j];
if (T == N)
break;
}
} while ( (j < i) );
}
AverageVolum1 = SumVolum/N;
Plot(AverageVolum1, "AverageVolum", colorRed, styleArea|styleOwnScale);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
ну да - тормозим сильно
ну хоть так - спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я еще подумаю. Мне так не нравится. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
trashfx
Зарегистрирован: 27.06.2015
Сообщения: 90
|
Hi,
I've read your discussion with auto-translator and just wanna give a short comment.
Guys, all your calculations are not correct (the last one is too slow on top of that) if comparing it with my AFL done some time ago.
http://i.imgur.com/ZCHV2eF.png
In the upper chart pane it is your last posted AFL and at the very bottom there is mine which is more than 90%(!) faster with correct calculation.
Hint: I iterate through timenums (converted to other resolution and TF specific increment) and then through barcount backwards to pick each bar's values (of same timenum). Instead of barcount loop you may use newer functions of recent AB development cycle. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
trashfx
Зарегистрирован: 27.06.2015
Сообщения: 90
|
trashfx писал(а): |
In the upper chart pane it is your last posted AFL and at the very bottom there is mine which is more than 90%(!) faster with correct calculation.
|
How do I know that my calculations are correct ones? Well, I can prove it visually.
Let's see an average 5-day value of 6938 (of same bar times) at 30-minute bar time 09:30.
http://i.imgur.com/B66Ywbf.png
For better view let's look at two dimensional matrix view in Exploration using averaging period of 5 days. There we see very same last value of 6938 at time column 09:30
http://i.imgur.com/xYW8Xhz.png
Now let's set to period 1 and add up last 5 values and divide by 5 then we get 6938 too http://i.imgur.com/kU5KPTT.png |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
I don't like my code. I wrote this. If you have a better idea, show. Because you can write a plugin with the corresponding function. It will be very fast. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
trashfx
Зарегистрирован: 27.06.2015
Сообщения: 90
|
Цитата: |
I don't like my code. I wrote this. |
Yes, but I was trying to point out that it is not just slow but calculation is wrong also.
Цитата: |
If you have a better idea, show. |
See my hint above iterate from starttime to endtime in seconds and increment is Interval(). Within loop convert back to timenum value and make condition ....
Also look at read me of AB 5.91 in development log.
Цитата: |
Because you can write a plugin with the corresponding function. It will be very fast. |
You don't need a plugin. Is is fast with pure AFL as seen above.
http://i.imgur.com/pgiKXcl.png 16ms vs. 570ms without any plugin |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
These functions are only available in version > 5.9 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|