Автор |
Сообщение |
Kukulkan
Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург
|
Здравствуйте,
Есть два графика приращений, размерность которых отличается на порядок. Каким образом можно поместить их в одно окно, так чтобы для каждого из них была своя шкала?
И плз подскажите неофиту, где хранится библиотека индикаторов и как они добавляются на график.
Спасибо. |
_________________ Не ходи за мной, я сам заблудился. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Про индикаторы и как добавить и еще много чего см ТУТ
Чтобы два графика имели каждый свою вертикальную шкалу надо при вываоде функцией Plot() задать стиль
styleOwnScale = 32768 - чертить используя независимое шкалирование
или
styleLeftAxisScale = 65536 - чертить используя шкалу слева (независимо от правой шкалы) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kukulkan
Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург
|
Kukulkan благодарит |
_________________ Не ходи за мной, я сам заблудился. |
|
Посмотреть профиль Отправить личное сообщение |
|
Kukulkan
Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург
|
Поместилось всё и разместилось, да..
Только получается, что взаимное расположение графиков, прошу прощения, не инвариантно к Zoom'у и плавает.. и Как Кукулькану это исправить и нули на шкалах совместить?
А ещё заметил, что линии на вспомогательных графиках тоже плавают в зависимости от масштаба картинки. А вообще весчь классная |
_________________ Не ходи за мной, я сам заблудился. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А как совместить 2 графика неизвестной размерности?
Конечно если у тебя один график всегда примерно 1 а второй всегда примерно 100, то просто раздели второй на 100 и выводи их на одну шкалу...
Ну или надо привести их к одной размерности. Типа взять процентное изменение.
Код: |
qqq = (qqq - Ref(qqq, -10))/Ref(qqq, -10); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kukulkan
Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург
|
В том-то и дело, что графики могут разбегаться очень далеко, а потом снова сходиться, и никакого устойчивого отношения 1 к 100 нет.
Привести их одной размерности через процентное изменение кажется очевидным выходом, но графики немного периодические и 0 пересекают в разных точках..
В Exel я это решал совмещением нуля на разных шкалах через подбор max/min значения каждой шкалы, попробую что-то похожее сделать в Ami.
Спасибо. |
_________________ Не ходи за мной, я сам заблудился. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну. В Ами примерно как в Exel.
Выводи их на одну шкалу и введи коэф на который умножай один из графиков чтобы их шкалы были более-менее похожи. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kukulkan
Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург
|
000 писал(а): |
Ну. В Ами примерно как в Exel.
Выводи их на одну шкалу и введи коэф на который умножай один из графиков чтобы их шкалы были более-менее похожи. |
Не решает одна шкала, плавают графики друг относительно друга. Но странно, вот 2 графика RSI относительно друг друга устойчивы... В общем выход пока найден через нормирование обоих рядов приращений через RSI. Решение так себе, но локальные задачи решает.
Получил решение "плавающих" линий на графике, который построен по расчётным данным. Теперь линии привязаны к точкам, по которым они построены, и не отрываются от них при использовании зума.
lvb=Status("lastvisiblebar");
fvb=Status("firstvisiblebar");
Miny=LLV(lvb,fvb);
Maxy=HHV(lvb,fvb);
Miny=Status("axisminy");
Maxy=Status("axismaxy");
SetChartOptions(0,0,ChartGridMiddle,Miny,Maxy);
Возможно, если второму графику дать свою шкалу и к ней применить тот же код, это решит проблему расположения графиков. |
_________________ Не ходи за мной, я сам заблудился. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Плавать относительно друг-друга графики могут только при условии, что они строятся по разным шкалам.
Т.е. в одном или обоих Plot() используются стили
styleOwnScale = 32768 - plot is using independent scaling
styleLeftAxisScale = 65536 - plot is using left axis scale (independent from right axis)
Если надо связать графики, то используй другие стили. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kukulkan
Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург
|
Такой вопрос. Через коэффициент два графика можно привести примерно к одной размерности. Но для расчета одного из выводимых значений в делителе используется объем, который для разных акций может отличаться на нексколько порядков (например, лукой и втб). т.е. применяемый коэффициент тоже будет отличаться на тот же порядок.
С помощью чего можно каждому инструменту поставить в соответствие еще один массив, чтобы этот коэффициент был уже внутри него...?
Или нужно использовать код типа, "если разрядность объёма=N, коэффициент = 10^4, 10^6)? |
_________________ Не ходи за мной, я сам заблудился. |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Проще всего в коде так
Код: |
k = 1; //
if(Name() == "SBER")
k = 10;
else if(Name() == "LKOH")
k = 20;
else if(Name() =="GAZP")
k = 30;
... |
Или, как вариант
Каждому символу в неиспользуемое поле в Information забиваем нужные цифры
Ну типа как сделано в этом роботе http://www.amisite.ru/afl/exp/0001.htm
с полем FullName
Только имей ввиду, что при обращении к этому полю возвращается текст. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|