Автор |
Сообщение |
gonzalezz
Зарегистрирован: 26.02.2010
Сообщения: 47
|
Здравствуйте коллеги!
Немогу поверить, но импорт баров через OLE не работает!
Код: |
testAction = ParamTrigger("Test ?","Yes");
if (testAction)
{
AB = CreateObject("Broker.Application");
stocks = AB.Stocks;
stock = stocks.Add("~TEST");
quotations = stock.Quotations;
barDateTime = DateTimeConvert(2, 1120712, 090000);
quotation = quotations.Add(barDateTime);
quotation.Close = 1000;
quotation.Open = 1500;
quotation.High = 2000;
quotation.Low = 500;
}
|
Дата полученного бара 21.12.1918 т.е. какая то проблема при конвертации даты бара, при
этом OHLC данные добавляются нормально.
Пожалуйста, попробуйте запустить код у себя и посмотрите корректны ли дата и время бара.
Должно быть 12.07.2012 09:00. Если вызывать эту СОМ функцию из друго приложения, все ок.
Я в недоумении немного... Версия 5.50.5 от 9 марта |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Совершенно очевидно, что какие то косяки. Решения не нашел. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
gonzalezz
Зарегистрирован: 26.02.2010
Сообщения: 47
|
Спасибо за оперативный ответ! Раз все так плохо, может подкинуть автору этот баг.
Ну если есть такая возможность, там вроде для легалов только доступ был. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
gonzalezz
Зарегистрирован: 26.02.2010
Сообщения: 47
|
Подозреваю что дело вот в чем:
An OLE Automation date is implemented as a floating-point number whose integral component is the number of days
before or after midnight, 30 December 1899, and whose fractional component represents the time on that day divided by 24.
Может у есть готовый конвертер? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если так позарез нужен такой код, то может стоит вставить AFL кусок на жабе? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
gonzalezz
Зарегистрирован: 26.02.2010
Сообщения: 47
|
000 писал(а): |
Если так позарез нужен такой код, то может стоит вставить AFL кусок на жабе? |
Ну да, есть такой вариант. Но все же хотелось победить.
Код: |
myDateTime = DateTimeConvert(2, 1120712, 120000);
initialDateTime = DateTimeConvert(2, 1080101, 0);
shift = 39448; // количество дней с 30.12.1899 по 01.01.2008
secondsInDay = 86400;
oleDateTime = shift + DateTimeDiff(myDateTime, initialDateTime) / secondsInDay); |
Вот придумал, но не нравиться количество букв, и в добавок работает криво если получается бесконечная дробь при делении
количества часов на 24. Например 9/24 все ок, а 10/24 дает время бара 10:01:52
UPD: Принципиальный косяк - дата и время не умещаются в float из за этого невозможно точно опередать даже минуты. |
Последний раз редактировалось: gonzalezz (Пт Июл 13, 2012 10:38 am), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
gonzalezz
Зарегистрирован: 26.02.2010
Сообщения: 47
|
Жаба меня нелюбит
Код: |
EnableScript("jscript");
x = 4;
y = 5;
<%
AFL("y") = AFL("x");
%>
_TRACE(NumToStr(y)); // все равно 5
|
Ничего не пойму, что не так? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не помню.
Может так
Код: |
AFL.Var("y") = AFL("x"); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
gonzalezz
Зарегистрирован: 26.02.2010
Сообщения: 47
|
000 писал(а): |
Не помню.
Может так
Код: |
AFL.Var("y") = AFL("x"); |
|
Спасибо за участие, я сам виноват код нужно приводить полностью...
Не работает, так как переменные объявлены локально
Код: |
EnableScript("jscript");
testAction = ParamTrigger("Test ?","Yes");
if (testAction)
{
x = 4;
y = 5;
<%
AFL("x") = AFL("y")
%>
_TRACE(NumToStr(x)); // 4
} |
Работает, так как переменные объявлены глобально
Код: |
EnableScript("jscript");
testAction = ParamTrigger("Test ?","Yes");
x = 4;
y = 5;
if (testAction)
{
<%
AFL("x") = AFL("y")
%>
_TRACE(NumToStr(x)); // 5
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|