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



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

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

Помогите визуализировать горизонтальные объемы.
Вообщем сделал базу на сервере Firebird. Сделал вывод туда из Квика по
ODBC. С помощью ODBCA AFL удалось подключится и получать данные, а выводить их на график как?
код AFL
Код:

SetBarsRequired(sbrAll,sbrAll);
odbcOpenDatabase("ODBC;DSN=remserver;Driver=Firebird/InterBase(r) driver;Dbname=D:/T_QWIK.FDB;CHARSET=WIN1251;PWD=masterkey;UID=SYSDBA;Client=C:/Program Files/Firebird/Firebird_2_5/WOW64/fbclient.dll");
Graph0=odbcGetArraySQL("Select  DPRICE, sum(IQUANTITY) From  TABLE_DEN Where SDATE Between '27.10.2016' AND '27.10.2016' Group by DPRICE, SOPERATION HAVING SOPERATION='Buy';");
Plot(Graph0, "", colorBlack, styleCandle);

код SQL
http://savepic.ru/11986610.png

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


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

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

В таблице должно быть 2 столбца.
1 столбец данные
2 столбец дата и время.

Судя по скрину у тебя даты/времени нет. Надо чтобы были, иначе этот массив никак нельзя привязать.

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



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

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

Вот Дата и время.
Код:

SetBarsRequired(sbrAll,sbrAll);
odbcOpenDatabase("ODBC;DSN=remserver;Driver=Firebird/InterBase(r) driver;Dbname=D:/T_QWIK.FDB;CHARSET=WIN1251;PWD=masterkey;UID=SYSDBA;Client=C:/Program Files/Firebird/Firebird_2_5/WOW64/fbclient.dll");
Graph0=odbcGetArraySQL("Select SDATE, STIME, DPRICE, sum(IQUANTITY) From  TABLE_DEN Where SDATE Between '27.10.2016' AND '27.10.2016' Group by SDATE, STIME, DPRICE, SOPERATION HAVING SOPERATION='Buy';");


http://savepic.ru/11957966.png
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Не. Должно быть только 2 колонки. Первая колонка необходимые данные и вторая Дата/Время.

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



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

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

Вот две колонки Время и Количество.
http://savepic.ru/11960004.png

Код:

SetBarsRequired(sbrAll,sbrAll);
odbcOpenDatabase("ODBC;DSN=remserver;Driver=Firebird/InterBase(r) driver;Dbname=D:/T_QWIK.FDB;CHARSET=WIN1251;PWD=masterkey;UID=SYSDBA;Client=C:/Program Files/Firebird/Firebird_2_5/WOW64/fbclient.dll");
Graph0=odbcGetArraySQL("Select  STIME, sum(IQUANTITY) From  TABLE_DEN Where SDATE Between '27.10.2016' AND '27.10.2016' Group by  STIME, SOPERATION HAVING SOPERATION='Buy';");
Посмотреть профиль Отправить личное сообщение
IzBu



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

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

А вот так Количество и время.
Код:

SetBarsRequired(sbrAll,sbrAll);
odbcOpenDatabase("ODBC;DSN=remserver;Driver=Firebird/InterBase(r) driver;Dbname=D:/T_QWIK.FDB;CHARSET=WIN1251;PWD=masterkey;UID=SYSDBA;Client=C:/Program Files/Firebird/Firebird_2_5/WOW64/fbclient.dll");
Graph0=odbcGetArraySQL("Select sum(IQUANTITY), STIME From  TABLE_DEN Where SDATE Between '27.10.2016' AND '27.10.2016' Group by  STIME, SOPERATION HAVING SOPERATION='Buy';");


http://savepic.ru/11991771.png
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Я тебе не совсем правильно написал.

В описании функции сказано
"Оператор должен возвращать набор записей с двумя столбцами. Первый столбец должны быть сами данные, а второй столбец должен быть столбец даты и времени. Набор записей должен быть отсортирован по второму столбцу (дата/время) в порядке возрастания."

т.е. в таблице не обязательно должно быть 2 столбца. SQL запрос должен передать в функцию 2столбца первый данные второй дата/время. И обязательно должно быть отсортировано по дата/время в порядке возрастания.
Ты в SQL запросах шаришь? Я полный 0.

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



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

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

Я тока учусь SQL около месяца простые команды понимаю.
Последний код как раз первый количество потом Время по возастающей
как сделать сделать профиль рынка(горизонтальные обьемы напротив цены), гистрограмму?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Так чтоли?
В Ами есть такой встроеный индикатор

Volume At Price Multi
Код:

segments = IIf( Interval() < inDaily, Day(), Month() );
segments = segments != Ref( segments , -1 );

PlotVAPOverlayA( segments , Param("Lines", 300, 100, 1000, 1 ), Param("Width", 80, 1, 100, 1 ), ParamColor("Color", colorGold ), ParamToggle("Side", "Left|Right" ) | 2 * ParamToggle("Style", "Fill|Lines", 0) | 4*ParamToggle("Z-order", "On top|Behind", 1 ) );
Plot(segments, "", colorLightGrey, styleHistogram | styleOwnScale );

Или
http://www.amisite.ru/afl/ind/0009.php

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



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

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

Вот сделал мин максимум и среднюю цену тащит из базы
Код:

_SECTION_BEGIN("Firebird");
odbcOpenDatabase("ODBC;DSN=remserver;Driver=Firebird/InterBase(r) driver;Dbname=D:/T_QWIK.FDB;CHARSET=WIN1251;PWD=masterkey;UID=SYSDBA;Client=C:/Program Files/Firebird/Firebird_2_5/WOW64/fbclient.dll");
sMax=odbcGetValueSQL("Select max(dprice) from TABLE_Den Where SDATE Between '27.10.2016'AND '27.10.2016';");
sMin=odbcGetValueSQL("Select min(dprice) from TABLE_Den Where SDATE Between '27.10.2016'AND '27.10.2016';");
sAvg=odbcGetValueSQL("Select avg(dprice) from TABLE_Den Where SDATE Between '27.10.2016'AND '27.10.2016';");
Plot(sMax,"", colorRed);
Plot(sMin,"", colorBlue);
Plot(sAvg,"", colorBlack);
_SECTION_END();

http://savepic.ru/11966186.png
Посмотреть профиль Отправить личное сообщение
IzBu



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

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

И такой то же.
А хотел вот такой
http://savepic.ru/11972333.png
еще бы замутить делту (покупки минус продажи)
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

IzBu писал(а):

еще бы замутить делту (покупки минус продажи)

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

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



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

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

Можно фильтровать в Sql командой HAVING SOPERATION='Buy'; или Sell
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

2 варианта. Либо у тебя в ами база тиковая. Тогда передаешь в Ами массив 1, -1 в зависимости от направления сделки. Перемножаешь этот массив и объем и в общем все. Переключаешься на другой фрейм и смотришь дельту.
Если в Ами база не тиковая, то в базе необходимо получить тиковую дельту и потом в базе обработать чтобы получить нужный фрейм. Потом передать в Ами.

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



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

СообщениеДобавлено: Пт Ноя 04, 2016 12:38 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Так чтоли?
В Ами есть такой встроеный индикатор

Volume At Price Multi
Код:

segments = IIf( Interval() < inDaily, Day(), Month() );
segments = segments != Ref( segments , -1 );

PlotVAPOverlayA( segments , Param("Lines", 300, 100, 1000, 1 ), Param("Width", 80, 1, 100, 1 ), ParamColor("Color", colorGold ), ParamToggle("Side", "Left|Right" ) | 2 * ParamToggle("Style", "Fill|Lines", 0) | 4*ParamToggle("Z-order", "On top|Behind", 1 ) );
Plot(segments, "", colorLightGrey, styleHistogram | styleOwnScale );

Или
http://www.amisite.ru/afl/ind/0009.php


What you are referring to is old technology (PlotVAPOverlayA is old limited technology).

You guys have to watch AmiBroker development closely because AB development department is not sleeping but AmiBroker is constantly evolving every week/month/year.

In order to get volume at price there has been implemented a new function called PriceVolDistribution() (6.11)

That function is of type MATRIX. You can store any data (making sense) to that matrix. Also you can now access that data. And of yourse you can output to Explorer via Addrow.

Example outputs (visible chart area profile, profile of selected chart range, intra-day profile, intrabar profile -> Footprint, etc)

http://amibrokerforum.proboards.com/thread/100/achievable-using-tiny-bit-imagination?page=2&scrollTo=727

http://amibrokerforum.proboards.com/thread/159/volume-price-buying-selling-volumes?page=2&scrollTo=730

http://amibrokerforum.proboards.com/thread/159/volume-price-buying-selling-volumes?page=3
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen