Автор |
Сообщение |
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Действительно. Похоже, что объем при постороении (VAP) учитывается. Спасибо. |
Не на чем.
Уточнение, не учитывается, а Служит Основой для построения.
Олег, может стоит это дело и в хелпе по PlotVAPOverlay() функции поправить? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Действительно. Похоже, что объем при постороении (VAP) учитывается. Спасибо. |
Не на чем.
Уточнение, не учитывается, а Служит Основой для построения.
Олег, может стоит это дело и в хелпе по PlotVAPOverlay() функции поправить? |
Последний раз редактировалось: Rybak (Сб Окт 25, 2008 10:14 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Буду делать хелп к следующей версии обязательно поправлю. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
Помогите плиз переписать Market profile на ручной режим.
Есть необходимость строить его не по искуственным таймфреймам, а ручками.
За основу взят старый код Олега:
Код: |
//Market Profile
GraphXSpace = 5;
SetChartOptions(0, chartShowDates);
//===========================
Den = Param("Density", 30, 10, 200, 10);
ShowMP = ParamToggle("Show MP", "No|Yes",1);
ShowVP = ParamToggle("Show VP", "No|Yes",1);
StyleMP = ParamStyle("style MP", styleNoLine|styleDots, maskAll);
StyleVP = ParamStyle("style VP", styleThick, maskAll);
//===========================
Bars = EndValue( BarIndex() ) - BeginValue( BarIndex() ) +1;
//===========================
Top = EndValue(HHV(H, Bars));
Bot = EndValue(LLV(L, Bars));
//===========================
Range = Top-Bot;
Box = Range/Den;
VolumeUnit = Vol/BarsInDay;
// дальше эти циклы меня зацикливают :((
for (k = 0; k <Den>= L & Line <H>= BarsInDay, Line, Null);
Plot(MPLine, "", ParamColor( "Color MP", colorLightBlue ) , styleMP);
}
if(ShowVP == True)
{
CountVPString = IIf(NewDay, Sum(detect*V, BarsInDay)/VolumeUnit, 0);
CountVPString = Ref(ValueWhen(NewDay, CountVPString, 0), -1);
VpLine = IIf(CountVPString >= BarsInDay, Line + Box/4, Null);
Plot(VPLine, "", ParamColor( "Color VP", colorLightGrey ), styleVP);
}
}
|
Как будет правильно продолжить с того места зацикливания? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ты опиши пожалуйста словами, как можно подробнее что хочешь сделать. Иначе маловероятно, что помогут... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Ты опиши пожалуйста словами, как можно подробнее что хочешь сделать. Иначе маловероятно, что помогут... |
Словами так:
1. Хочу тыкнуть мышь на гафике цены в нужном месте первый раз -
BeginValue
2. Тыкнуть мышь на гафике второй раз -
EndValue
3. В ответ увидеть на гафике Market Profile и Volume Profile за данный отмеченный курсорами период (BeginValue - EndValue)
4. Наслаждаться картинкой профиля и пить пыво
ps
А серьёзно, считаю, (не только я, но и профи по МР) что принудительно-искуственное деление Market Profile по дням, неделям или месяцам совершенно не информативно, тут только руками. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Теперь понятно. В понедельник сделаю. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Теперь понятно. В понедельник сделаю. |
Ай Спасибо!
Месячный и недельный вроде сделал, а тут что-то я в ступоре
PS
Можно совсем оборзеть и попросить сделать следующую опцию -
возможность разворачивать VP влево. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Пока плохо получается.
Не удается избавиться от тормозов если не выделен диаппазон... И с профилем объема пока косяки. Буду думать еще. Чтобы скучно небыло пока побалуйся
Код: |
//Market Profile
GraphXSpace = 5;
SetChartOptions(0, chartShowDates);
//===========================
Den = Param("Density", 40, 10, 100, 10);
ShowMP = 1;//ParamToggle("Show MP", "No|Yes");
ShowVP = 0;//ParamToggle("Show VP", "No|Yes");
StyleMP = ParamStyle("style MP", styleLine, maskAll);
StyleVP = ParamStyle("style VP", styleLine, maskAll);
//===========================
startBar = BeginValue(BarIndex());
endBar = EndValue(BarIndex());
BarsInRange = BarsSince(startBar == BarIndex()) + 1;
//===========================
//===========================
Bot = LastValue(ValueWhen(endBar == BarIndex(), LLV(L, BarsInRange), 1));
Top = LastValue(ValueWhen(endBar == BarIndex(), HHV(H, BarsInRange), 1));
Vol = LastValue(ValueWhen(endBar == BarIndex(), MA(V, BarsInRange), 1));
//===========================
Range = Top-Bot;
Box = Range/Den;
VolumeUnit = Vol;
//Plot(Vol, "", colorRed);
for (k = 0; k < Den; k++) // loop through each line (price) starting at the Lowest price
{
Line = Bot + k*Box;
detect = Line >= L & Line <= H;
if(ShowMP == True)
{
CountMPString = LastValue(ValueWhen(endBar == BarIndex(), Sum(detect, BarsInRange), 1));
MpLine = IIf(CountMPString >= BarsInRange, Line, Null);
Plot(MPLine, "", colorRed, styleMP);
}
if(ShowVP == True)
{
CountVPString = LastValue(ValueWhen(endBar == BarIndex(), Sum(detect*V, BarsInRange), 1));
VpLine = IIf(CountVPString >= BarsInRange, Line + Box/4, Null);
Plot(VPLine, "", colorBlue, styleVP);
}
}
Title = "{{NAME}} - {{INTERVAL}} {{DATE}} {{VALUES}} - \\c04 Market Profile \\c06 Volume Profile";
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Rybak писал(а): |
000 писал(а): |
Теперь понятно. В понедельник сделаю. |
Ай Спасибо!
Месячный и недельный вроде сделал, а тут что-то я в ступоре
PS
Можно совсем оборзеть и попросить сделать следующую опцию -
возможность разворачивать VP влево. |
Сначала доделаем это, а потом уж станем разворачивать... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
Что-то квотить не получается.
"Не удается избавиться от тормозов если не выделен диаппазон... "
Предлагаю не запускать цикл пока он не выделен, типа
if BarsInRange >=2;
"И с профилем объема пока косяки. Буду думать еще"
Я не понял, почему
Vol = LastValue(ValueWhen(endBar == BarIndex(), MA(V, BarsInRange), 1));
а не
Vol = LastValue(ValueWhen(endBar == BarIndex(), sum(V, BarsInRange), 1));
"Чтобы скучно небыло пока побалуйся"
Обязательно побалуюсь как домой доберусь |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот, вроде сделал. Если диаппазон не выделен или выделено больше 1000 баров, то ничего отображать не будет. Жду критики. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
То-же самое, но диаппазоном яляется весь видимый участок. Практически копия встроенного VAP |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Жду критики. |
Не дождёшься
Да всё нормально Олег, так как и хотелось.
Может я не прав (поправь), но я всё ж использую
Sum(V/100, BarsInRange) вместо MA(V, BarsInRange).
Для полной красоты и ясности видимой картинки хорошо бы было
выделять моду (самую высокую точку ) как МР так и VP.
И (ИЛИ) выделить (цветом вероятно), Область моды - как стандартное отклонение.
Тогда совсем красота - визуально будет много легче определить где\когда происходит дисбаланс на рынке.
ps
По поводу разворота влево VP, имхо, наверное и не стоит. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Отлично. Н счет моды или максимума - подумаю. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|