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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

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

Добрый день.

Имеем индюк средневзвешенной. Дополнительно показывает стандартное отклонение.

Код имеет следующий:

Код:

Bars_today = 1+ BarsSince( Day() != Ref(Day(), -1));
StartBar = ValueWhen(TimeNum() == 100000, BarIndex());
TodayVolume = Sum(V,Bars_today);
Avgp=(C+O+L+H)/4;
IIf (BarIndex() >= StartBar, VWAP = Sum (Avgp * V, Bars_today ) / TodayVolume,0);
Plot (VWAP,"VWAP",colorGreen, styleThick);

//this find the price at which there was the most volume over the day
//values
//total volume for each price... if today from h-l
/*function VPskewness()
{(Avgp-Vwap)^3
return IIf(BarIndex() >=startbar,ValueWhen(HHV(Avgp*V ,Bars_today)==1,Avgp),0);
}
*/
stde=sqrt( Sum((Avgp-Vwap)^2 ,Bars_today) /bars_today);
//Plot (Vwap,\"VWAP2\",colorDarkGrey, styleLine);
Plot (stde+Vwap,"VWAP_std+1",colorGrey50, styleDashed);
Plot (Vwap-stde,"VWAP_std-1",colorGrey50, styleDashed);
Plot (Vwap+2*stde,"VWAP_std+2",colorGrey40, styleDashed);
Plot (Vwap-2*stde,"VWAP_std-2",colorGrey40, styleDashed);
//Plot (modev(),\"modev\",colorGreen);

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorWhite ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );


Выглядит следующим образом:
Image

Постараюсь сформулировать, как бы я хотел его дополнить...

1. Добавить вместо/дополнительно к стандартным отклонениям отклонения от средневзвешенной на размер текущего АТР, 2*АТР. При этом, возможность выбирать АТР по ТФ не только открытому на графике.

2. В настоящее время средневзвешенная рисуется каждый день и рассчитывается, начиная с первой свечи дня. ОЧЕНЬ бы хотелось реализовать возможность добавлять на график данный индюк, при этом выбирая начальную точку его отсчета - к примеру, захотел дополнительно кинуть на график средневзвешенную рассчитанную от пика (см. на рисунке выше) в 10:30 - выбрал в меню начало время расчета и кинул. Это пожелание наиболее важно.

3. Для более точных результатов реализовать возможность рассчитывать выводящуюся на график средневзвешенную на основе 1минутного ТФ, несмотря на то, на каком ТФ она выводится.

Заранее всех благодарю.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Мар 17, 2012 2:09 pm Ответить с цитатой Вернуться к началу

Жаль, никто не откликнулся.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Я просто забыл... Чиркани в тему завтра с утра, чтобы напомнить мне....

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Мар 18, 2012 7:04 am Ответить с цитатой Вернуться к началу

000 писал(а):
Я просто забыл... Чиркани в тему завтра с утра, чтобы напомнить мне....


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


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

СообщениеДобавлено: Вс Мар 18, 2012 1:52 pm Ответить с цитатой Вернуться к началу

Код:

qq = ParamList("отклонение", "std|ATR|2*ATR");
pp = Param("период ATR", 15, 5, 30, 1);
dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

Bars = 1 + BarsSince(DateNum() == dd AND tt == TimeNum());
StartBar = ValueWhen(DateNum() == dd AND tt == TimeNum(), BarIndex());
TodayVolume = Sum(V, Bars);
Avgp=(C+O+L+H)/4;
IIf (BarIndex() >= StartBar, VWAP = Sum (Avgp * V, Bars )/TodayVolume, Null);
Plot (VWAP,"VWAP",colorGreen, styleThick);


if(qq == "std")
   stde = sqrt( Sum((Avgp-Vwap)^2 ,Bars)/bars);
else if(qq == "ATR")
   stde = ATR(pp);
else
   stde = 2*ATR(pp);
 
Plot (stde+Vwap,"VWAP_std+1",colorGrey50, styleDashed);
Plot (Vwap-stde,"VWAP_std-1",colorGrey50, styleDashed);
Plot (Vwap+2*stde,"VWAP_std+2",colorGrey40, styleDashed);
Plot (Vwap-2*stde,"VWAP_std-2",colorGrey40, styleDashed);

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorWhite ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

1. ATR сделал без возможности выбора фрейма. Это слишком непросто.
2. Сделал
3. Это не возможно в принципе.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Чт Мар 22, 2012 10:51 am Ответить с цитатой Вернуться к началу

Цитата:
1. ATR сделал без возможности выбора фрейма. Это слишком непросто.
2. Сделал
3. Это не возможно в принципе.


Олег, прошу прощения за задержку. Огромное Вам спасибо. Все отлично работает!

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

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


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

СообщениеДобавлено: Чт Мар 22, 2012 11:05 am Ответить с цитатой Вернуться к началу

Если бы еще рисунок видно было....

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

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

000 писал(а):
Если бы еще рисунок видно было....


Хмм... вроде все в тэгах нормально прописано. Странно.

Вот ссылка: http://imglink.ru/pictures/22-03-12/d798fd845d6603ddb38d45d36f2dc00b.jpg

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


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

СообщениеДобавлено: Чт Мар 22, 2012 1:15 pm Ответить с цитатой Вернуться к началу

Код:

qq = ParamList("отклонение", "std|ATR|2*ATR");
pp = Param("период ATR", 15, 5, 30, 1);
dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);

Bars = 1 + BarsSince(DateNum() == dd AND tt == TimeNum());
StartBar = ValueWhen(DateNum() == dd AND tt == TimeNum(), BarIndex());
TodayVolume = Sum(V, Bars);
Avgp=(C+O+L+H)/4;
IIf (BarIndex() >= StartBar, VWAP = Sum (Avgp * V, Bars )/TodayVolume, Null);
VWAP = IIf(VWAP > 0 , VWAP, Null);
Plot (VWAP,"VWAP",colorGreen, styleThick);


if(qq == "std")
   stde = sqrt( Sum((Avgp-Vwap)^2 ,Bars)/bars);
else if(qq == "ATR")
   stde = ATR(pp);
else
   stde = 2*ATR(pp);
   
Plot (stde+Vwap,"VWAP_std+1",colorGrey50, styleDashed);
Plot (Vwap-stde,"VWAP_std-1",colorGrey50, styleDashed);
Plot (Vwap+2*stde,"VWAP_std+2",colorGrey40, styleDashed);
Plot (Vwap-2*stde,"VWAP_std-2",colorGrey40, styleDashed);

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorWhite ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Чт Мар 22, 2012 1:24 pm Ответить с цитатой Вернуться к началу

Великолепно! Благодарю.

Правда отчего-то стандартными средствами индюк с графика не удаляется... Приходится закрывать полностью график и открывать заново. Не знаю с чем связано.
Посмотреть профиль Отправить личное сообщение
Nero Wolfe



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

СообщениеДобавлено: Пт Мар 23, 2012 1:50 pm Ответить с цитатой Вернуться к началу

Цитата:
Правда отчего-то стандартными средствами индюк с графика не удаляется...

помоему такие вещи бывают из-за:
Код:
_SECTION_BEGIN("Price");

попробуй это строку убрать из кода...

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

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

Nero Wolfe писал(а):

помоему такие вещи бывают из-за:
Код:
_SECTION_BEGIN("Price");

попробуй это строку убрать из кода...


Неа, не помогло.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вт Апр 24, 2012 6:52 am Ответить с цитатой Вернуться к началу

Олег, разрешите еще пару просьб...

Можно ли поправить индюк так, что он мог считать за несколько дней. К примеру, начинаю расчет от экстремума 01.04 и она отображается на всем графике вплоть до сегодняшнего дня. Я пробовал менять дату начала отсчета на предыдущие дни, но индюк не отрисовывается.

И еще одно. Можно ли сделать возможность отображения более двух средневзвешенных. Отображаются максимум две.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Апр 25, 2012 12:04 am Ответить с цитатой Вернуться к началу

На счет даты. Вероятно ты ставил дату которой нет на графике. Вот код который будет отрисовывать средную от выбранного на графике бара (щелкни на любой)
Код:

qq = ParamList("отклонение", "std|ATR|2*ATR");
pp = Param("период ATR", 15, 5, 30, 1);

Bars = 1 + BarsSince(SelectedValue(DateTime()) == DateTime()); 
StartBar = ValueWhen(SelectedValue(DateTime()) == DateTime(), BarIndex());

TodayVolume = Sum(V, Bars);
Avgp=(C+O+L+H)/4;
IIf (BarIndex() >= StartBar, VWAP = Sum (Avgp * V, Bars )/TodayVolume, Null);
VWAP = IIf(VWAP > 0 , VWAP, Null);
Plot (VWAP,"VWAP",colorGreen, styleThick);


if(qq == "std")
   stde = sqrt( Sum((Avgp-Vwap)^2 ,Bars)/bars);
else if(qq == "ATR")
   stde = ATR(pp);
else
   stde = 2*ATR(pp);
   
Plot (stde+Vwap,"VWAP_std+1",colorGrey50, styleDashed);
Plot (Vwap-stde,"VWAP_std-1",colorGrey50, styleDashed);
Plot (Vwap+2*stde,"VWAP_std+2",colorGrey40, styleDashed);
Plot (Vwap-2*stde,"VWAP_std-2",colorGrey40, styleDashed);


Про несколько не понял....

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Чт Апр 26, 2012 9:57 am Ответить с цитатой Вернуться к началу

000 писал(а):

Про несколько не понял....


По первому вопросу - спасибо! Все работает отлично.

Про несколько я имел в виду следующее. Кидаю на график одну средневзвешенную с началом отсчета определенным. Потом вторую с другим началам отсчета. Обе отображаются. Когда кидаю третью - она не отображается, хотя в коде графика присутствуют все три.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen