Автор |
Сообщение |
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
Здравствуйте Уважаемые знатоки.
Вопрос связи QUIK с Ami через ODBC.
Схема следующая QUIK->Access->AmiBroker.
Экспортируем в Access таблицы всех сделок.
Нужно получить таблицу с O,H,L,C,V.
Как это можно сделать?
Пока вижу только один вариант:
Запрос1: выделяет из таблицы всех сделок , соответствующие поля (O,H,C,L,V) по времени.
Запрос2: создает таблицу в которую записывается результат запроса1.
Написать программу к.т. запускает запрос2 ежесекундно.
Проблемы этого решения:
Запрос1 – access выполняет довольно долго (так как много подзапросов).
Запрос2 – каждый раз создавать таблицу (и удалать предыдущую) тоже плохо сказывается на быстроте. (даже добавление думаю будет тормозить)
Необходимо:
1) Быстрота (поэтому DDE - не подходит)
2) Файловый СУБД простой для пользователя (поэтому access)
Поделитесь опытом!!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
Кстати, кто может подскажет. Как увеличить количество баров?
Т.е. подключаюсь к базе и количество баров получается равным количеству данных из этой базы. (BarCount=x). Как увеличить BarCount программно???
..........
И еще вопрос
Как работать с массивами?
Может надо как то создать?
Пишу
X[1]=1;-нормально
X[100]=1;-нормально
X[1000]=1;-ругается |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Кстати, кто может подскажет. Как увеличить количество баров?
Т.е. подключаюсь к базе и количество баров получается равным количеству данных из этой базы. (BarCount=x). Как увеличить BarCount программно???
|
Никак. BarCount всегда равен числу баров бумаги.
Цитата: |
И еще вопрос
Как работать с массивами?
Может надо как то создать?
Пишу
X[1]=1;-нормально
X[100]=1;-нормально
X[1000]=1;-ругается
|
Все правильно. Если ругается значит в базе меньше 1000 баров и массив X короче 1000 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
Спасибо за ответ.
А можно ли создать массив, который был бы больше чем количество баров? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В AFL нельзя. Можно в AFL сделать вставку на Жабе или Бейсике и там создать нужный массив и с ним работать. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
Как все сложно!!!
Олег, спасибо, что помогаете разобраться.
Прошу еще помощи.
Допустим у меня 1000 баров, и мне надо построить прямую, от 0 до 1000.
Попробовал так:
for( i = 0; i < BarCount; i++ )
{
Graph1[i]=i;
}
Данный вариант не подходит, так как рисует прямую только на видимом графике (т.е. если график растянут от 500 до 700, то график внизу слева будет равен 0, а надо 500).
И вообще это можно сделать??? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это особенность AFL, так называемый квик афл. Если Ами считает, что некоторые данные (как правило невидимые данные или данные не участвующие в тесте в АА) считать не нужно, то он их "пропускает". Однако можно заставить его обрабатывать все данные. Для этого используется функция SetBarsRequired()
Напиши в начале кода
Код: |
SetBarsRequired(SbrAll, SbrAll); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
Заработало!!! В очередной раз спасибо!!!
Но есть еще вопрос по массивам
1290 баров.
X[199] =1; - не ругается
X[200] =1; – ругается
Как исправить? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Может сначала инициализировать массив. Типа
X = 0; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
Написал...
Не помогло.
Поставил Ami 5.3 , ошибки вроде нет.
Работал с только что установленными программами (с бумагами к.т. идут по умолчанию ,создал новый chart):
Ami 5.4
X[200]=1; -ругается
Ami 5.3
X[200]=1; -не ругается
Как исправить, что бы в 5.4 тоже работало? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Действительно.
Используй вот такую конструкцию
Код: |
if(BarCount > 300)
{
x[300] = 1;
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VIt
Зарегистрирован: 09.08.2011
Сообщения: 51
|
000 писал(а): |
Хм. Действительно.
Используй вот такую конструкцию
Код: |
if(BarCount > 300)
{
x[300] = 1;
}
|
|
Заработало!!! Спасибо!!! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|