Автор |
Сообщение |
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
Добрый день.
Имеем индюк средневзвешенной. Дополнительно показывает стандартное отклонение.
Код имеет следующий:
Код: |
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() );
|
Выглядит следующим образом:
Постараюсь сформулировать, как бы я хотел его дополнить...
1. Добавить вместо/дополнительно к стандартным отклонениям отклонения от средневзвешенной на размер текущего АТР, 2*АТР. При этом, возможность выбирать АТР по ТФ не только открытому на графике.
2. В настоящее время средневзвешенная рисуется каждый день и рассчитывается, начиная с первой свечи дня. ОЧЕНЬ бы хотелось реализовать возможность добавлять на график данный индюк, при этом выбирая начальную точку его отсчета - к примеру, захотел дополнительно кинуть на график средневзвешенную рассчитанную от пика (см. на рисунке выше) в 10:30 - выбрал в меню начало время расчета и кинул. Это пожелание наиболее важно.
3. Для более точных результатов реализовать возможность рассчитывать выводящуюся на график средневзвешенную на основе 1минутного ТФ, несмотря на то, на каком ТФ она выводится.
Заранее всех благодарю. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
Жаль, никто не откликнулся. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я просто забыл... Чиркани в тему завтра с утра, чтобы напомнить мне.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Я просто забыл... Чиркани в тему завтра с утра, чтобы напомнить мне.... |
Напоминаю |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
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
Откуда: Новосибирск
|
Цитата: |
1. ATR сделал без возможности выбора фрейма. Это слишком непросто.
2. Сделал
3. Это не возможно в принципе. |
Олег, прошу прощения за задержку. Огромное Вам спасибо. Все отлично работает!
Единственный еще вопрос, а можно ли убрать вот эту изначальную отрисовку от нуля, как на рисунке?
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если бы еще рисунок видно было.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
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
Откуда: Новосибирск
|
Великолепно! Благодарю.
Правда отчего-то стандартными средствами индюк с графика не удаляется... Приходится закрывать полностью график и открывать заново. Не знаю с чем связано. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
Цитата: |
Правда отчего-то стандартными средствами индюк с графика не удаляется... |
помоему такие вещи бывают из-за:
Код: |
_SECTION_BEGIN("Price"); |
попробуй это строку убрать из кода... |
_________________ Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает. |
|
Посмотреть профиль Отправить личное сообщение |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
Nero Wolfe писал(а): |
помоему такие вещи бывают из-за:
Код: |
_SECTION_BEGIN("Price"); |
попробуй это строку убрать из кода... |
Неа, не помогло. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
Олег, разрешите еще пару просьб...
Можно ли поправить индюк так, что он мог считать за несколько дней. К примеру, начинаю расчет от экстремума 01.04 и она отображается на всем графике вплоть до сегодняшнего дня. Я пробовал менять дату начала отсчета на предыдущие дни, но индюк не отрисовывается.
И еще одно. Можно ли сделать возможность отображения более двух средневзвешенных. Отображаются максимум две. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
На счет даты. Вероятно ты ставил дату которой нет на графике. Вот код который будет отрисовывать средную от выбранного на графике бара (щелкни на любой)
Код: |
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
Откуда: Новосибирск
|
000 писал(а): |
Про несколько не понял.... |
По первому вопросу - спасибо! Все работает отлично.
Про несколько я имел в виду следующее. Кидаю на график одну средневзвешенную с началом отсчета определенным. Потом вторую с другим началам отсчета. Обе отображаются. Когда кидаю третью - она не отображается, хотя в коде графика присутствуют все три. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|