Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Volume Buzz Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Ср Май 13, 2009 3:51 pm Ответить с цитатой Вернуться к началу

VolumeBuzz
Индикатор сравнения текущего кумультативного объема со средним

Описание, картинки, код на TS
http://money-eater.blogspot.com/2009/04/volume-buzz-ts-style.html

Может кто-нибудь делал подобное для Амиброкера?

_________________
Антон
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Май 13, 2009 4:28 pm Ответить с цитатой Вернуться к началу

Чета я не понял. А в чем проблемма написать такой для Ами? Берем объем, строим по нему средную, сравниваем текущий со средним, раскрашиваем...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Пт Май 15, 2009 11:56 am Ответить с цитатой Вернуться к началу

Олег, по-моему там все сложнее, например:

Газпром, сейчас 12-00, открытие было в 10-30

1. смотрим средний объем вчера, позавчера, поза-позавчера (ну вообщем 2. какой то период назад) объем в газпроме с открытия до 12 часов,
3. как-то усредняем эти значения
4. сравниваем с текущим

_________________
Антон
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Май 15, 2009 11:49 pm Ответить с цитатой Вернуться к началу

Это?
Код:

p = Param("period", 1, 1, 10, 1); // сколько дней усредняем
q = TimeNum();
qqq = 0;

for(i = 1; i <= p; i++) { // суммируем объем на этом баре за p дней
   qq = ValueWhen( TimeNum() == q, V, i);
   qqq = qqq + qq;
}
qqqq = qqq/p; // вычисляем средний
Plot(qqqq, "", colorRed);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Сб Май 16, 2009 12:48 pm Ответить с цитатой Вернуться к началу

Олег, спасибо.

Думаю это очень близко, но нужно суммировать объем от открытия до текущего момента, а не на текущем баре.

Я думаю тут можно использовать один фрагмент твоего кода

FirstBar = ??? ; // первый бар текущего дня // LastValue() //BarIndex??
LastBar = ??? ; // текущий бар
Range = Flip(FirstBar, LastBar); // внутри выделенного диапазона
CumVolume = Cum(Nz(V)*Range);

_________________
Антон
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Май 16, 2009 8:53 pm Ответить с цитатой Вернуться к началу

Так чтоли?
Код:

bar = BarsSince(Ref(Day(), -1) != Day()); // число баров с начала дня
Vo = Sum(V, Bar+1); //суммируем объем с начала дня

p = Param("period", 1, 1, 10, 1); // сколько дней усредняем
q = TimeNum();
qqq = 0;

for(i = 1; i <= p; i++) { // суммируем объем на этом баре за p дней
   qq = ValueWhen( TimeNum() == q, Vo, i);
   qqq = qqq + qq;
}
qqqq = qqq/p; // вычисляем средний
Plot(qqqq, "", colorRed);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Сб Май 16, 2009 10:08 pm Ответить с цитатой Вернуться к началу

Олег, нужно сравнить сегодняшний кумультативный объем скажем до 12 часов с со средними кумультативными объемами скажем за последние 10 дней также с 10-30 до 12 часов

Я даже думаю там можно брать не просто среднее а EMA или WMA

пробую написать этот код, но не получается увидеть нужный результат

Код:

p = Param("period", 1, 1, 100, 1); // сколько дней усредняем

bar = BarsSince(Ref(Day(), -1) != Day()); // число баров с начала дня по текущий момент
Vo = Sum(V, Bar+1); //суммируем объем с начала дня

//q = TimeNum();
qqq = 0;

for(i = 1; i <= p; i++) { // суммируем объем на этом ме временном промежутке за P дней
    bar1 = BarsSince(Ref(Day(), -P) != Day()); // число баров с начала дня по текущий момент
    qq = Sum(V, Bar1+1);
    //qq = ValueWhen( TimeNum() == q, Vo, i);
    qqq = qqq + qq;
}

qqqq = EMA(qqq,p); // вычисляем средний кумулятивный объем за P дней

Plot(qqqq, "Volume Buzz", colorRed); //рисуем средний  кумулятивный объем за P дней
Plot(Vo, "Today Volume", colorGreen); //рисуем кумулятивный объем сегодняшнего дня


_________________
Антон
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Май 16, 2009 10:10 pm Ответить с цитатой Вернуться к началу

Амиброкеровец писал(а):
Олег, нужно сравнить сегодняшний кумультативный объем скажем до 12 часов с со средними кумультативными объемами скажем за последние 10 дней также с 10-30 до 12 часов

А я что написал?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Май 16, 2009 10:31 pm Ответить с цитатой Вернуться к началу

Сорьки, чета я ошибся. Ща исправлю.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Сб Май 16, 2009 10:31 pm Ответить с цитатой Вернуться к началу

Смотри, разве средний кумулятивный объем за 10 дней может так скакать

_________________
Антон
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Май 16, 2009 11:53 pm Ответить с цитатой Вернуться к началу

Вроде так. Тормозит безбожно. Простым способом не получилось...
Наверное я "не в форме"
Код:

p = Param("period", 1, 1, 10, 1); // сколько дней усредняем

bar = BarsSince( Ref(Day(), -1) != Day() ) + 1; // число баров с начала дня
hbar = LastValue(Highest( bar ));
Vo = Sum(V, Bar+1); //суммируем объем с начала дня

bV = 0;

for(i = 1; i <= hbar; i++) {
   for(m = 1; m <= p; m++) {     
      bv = bv + (bar == i) * ValueWhen( i == bar, Vo, m);
   }
}

Plot(bv/p, "qq", colorRed);
Plot(Vo, "Vo", colorBlue);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Вс Май 17, 2009 9:39 am Ответить с цитатой Вернуться к началу

Да, сейчас получилось то. Два цикла. Но почему такой висяк

Может сделать, так чтобы отображались только последний период (только 10 дней) ?

Вот код для Омеги, может он что подскажет

Input: DaysToAvg(10), AlertRatio(1.2);
Vars: LenOfDay(0), BPD(0), BarsPerDay(0), VolSumToAvg(0), VolSum(0), VolSumAvg(0), VolSumPct(0), LastClose(0);

If BarType = 1 then begin

LenOfDay = TimeToMinutes(SessionEndTime(0,1)) - TimeToMinutes(SessionStartTime(0,1));
BPD = AbsValue(LenOfDay)/BarInterval;
If FracPortion(BPD) = 0 then
BarsPerDay = BPD
else
BarsPerDay = BPD + 1 - FracPortion(BPD);

VolSumToAvg = 0;

If Date <> Date[1] then begin
VolSum = Ticks;
LastClose = close[1];
end else
VolSum = VolSum + Ticks;

For Value1 = 1 to DaysToAvg begin
VolSumToAvg = VolSumToAvg + VolSum[BarsPerDay*Value1];
end;

VolSumAvg = VolSumToAvg / DaysToAvg;


If VolSumAvg > 0 then
VolSumPct = VolSum / VolSumAvg;

Plot1(VolSumPct, "Vol buzz");

if VolSumPct >= AlertRatio then
if close > LastClose then
SetPlotColor(1,Green)
else
SetPlotColor(1,Red)
else
SetPlotColor(1,White);

If VolSumPct > AlertRatio then
Alert ( "Intraday Volume exceeds" + Spaces(1) + NumToStr(AlertRatio,0) + Spaces(1) + "percent of average." );
end;

_________________
Антон
Посмотреть профиль Отправить личное сообщение
NBT



Зарегистрирован: 10.02.2009
Сообщения: 6

СообщениеДобавлено: Сб Май 30, 2009 4:26 pm Ответить с цитатой Вернуться к началу

Интересный индикатор. Жаль, что код не будет работать, если есть пропущенные бары (актуально для джанков на малых таймфреймах, где его было полезно использовать).
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Май 31, 2009 8:45 pm Ответить с цитатой Вернуться к началу

Что это он не будет работать? Специально сейчас проверил предварительно удалив один бар. Работает.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
NBT



Зарегистрирован: 10.02.2009
Сообщения: 6

СообщениеДобавлено: Пн Июн 01, 2009 3:56 pm Ответить с цитатой Вернуться к началу

> Что это он не будет работать?

Приношу извинения, если я неверно понял логику его работы, но, судя по коду, он суммирует объем на одинаковых барах со сдвигом в p дней. Если для каждого из p дней бары существуют, все хорошо. Если для предыдущих дней есть не все бары, объем предыдущих дней считаться не будет.

Для SBER или LKOH все работает замечательно на любых интервалах. А, например, для FESH или SVAV на минутном интервале будет считаться только объем текущего дня. Проверил для p = 2.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen