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



Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Янв 17, 2013 1:01 pm Ответить с цитатой Вернуться к началу

Здравствуйте,
Есть два графика приращений, размерность которых отличается на порядок. Каким образом можно поместить их в одно окно, так чтобы для каждого из них была своя шкала?
И плз подскажите неофиту, где хранится библиотека индикаторов и как они добавляются на график.
Спасибо.

_________________
Не ходи за мной, я сам заблудился.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Про индикаторы и как добавить и еще много чего см ТУТ

Чтобы два графика имели каждый свою вертикальную шкалу надо при вываоде функцией Plot() задать стиль
styleOwnScale = 32768 - чертить используя независимое шкалирование
или
styleLeftAxisScale = 65536 - чертить используя шкалу слева (независимо от правой шкалы)

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



Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Янв 17, 2013 6:03 pm Ответить с цитатой Вернуться к началу

Kukulkan благодарит

_________________
Не ходи за мной, я сам заблудился.
Посмотреть профиль Отправить личное сообщение
Kukulkan



Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Янв 18, 2013 8:13 pm Ответить с цитатой Вернуться к началу

Поместилось всё и разместилось, да..
Только получается, что взаимное расположение графиков, прошу прощения, не инвариантно к Zoom'у и плавает.. и Как Кукулькану это исправить и нули на шкалах совместить?
А ещё заметил, что линии на вспомогательных графиках тоже плавают в зависимости от масштаба картинки. А вообще весчь классная Smile

_________________
Не ходи за мной, я сам заблудился.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Янв 19, 2013 9:13 am Ответить с цитатой Вернуться к началу

А как совместить 2 графика неизвестной размерности?
Конечно если у тебя один график всегда примерно 1 а второй всегда примерно 100, то просто раздели второй на 100 и выводи их на одну шкалу...
Ну или надо привести их к одной размерности. Типа взять процентное изменение.

Код:
qqq = (qqq - Ref(qqq, -10))/Ref(qqq, -10);

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



Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург

СообщениеДобавлено: Сб Янв 19, 2013 1:44 pm Ответить с цитатой Вернуться к началу

В том-то и дело, что графики могут разбегаться очень далеко, а потом снова сходиться, и никакого устойчивого отношения 1 к 100 нет.
Привести их одной размерности через процентное изменение кажется очевидным выходом, но графики немного периодические и 0 пересекают в разных точках..
В Exel я это решал совмещением нуля на разных шкалах через подбор max/min значения каждой шкалы, попробую что-то похожее сделать в Ami.
Спасибо.

_________________
Не ходи за мной, я сам заблудился.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Янв 19, 2013 9:31 pm Ответить с цитатой Вернуться к началу

Ну. В Ами примерно как в Exel.
Выводи их на одну шкалу и введи коэф на который умножай один из графиков чтобы их шкалы были более-менее похожи.

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



Зарегистрирован: 11.01.2013
Сообщения: 19
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Янв 21, 2013 8:23 am Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Пн Янв 21, 2013 9:21 pm Ответить с цитатой Вернуться к началу

Плавать относительно друг-друга графики могут только при условии, что они строятся по разным шкалам.
Т.е. в одном или обоих 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
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Янв 23, 2013 11:34 am Ответить с цитатой Вернуться к началу

Такой вопрос. Через коэффициент два графика можно привести примерно к одной размерности. Но для расчета одного из выводимых значений в делителе используется объем, который для разных акций может отличаться на нексколько порядков (например, лукой и втб). т.е. применяемый коэффициент тоже будет отличаться на тот же порядок.
С помощью чего можно каждому инструменту поставить в соответствие еще один массив, чтобы этот коэффициент был уже внутри него...?
Или нужно использовать код типа, "если разрядность объёма=N, коэффициент = 10^4, 10^6)?

_________________
Не ходи за мной, я сам заблудился.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Янв 23, 2013 3:10 pm Ответить с цитатой Вернуться к началу

Проще всего в коде так
Код:
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
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen