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



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

СообщениеДобавлено: Чт Июл 12, 2012 9:59 pm Ответить с цитатой Вернуться к началу

Здравствуйте коллеги!
Немогу поверить, но импорт баров через 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

СообщениеДобавлено: Чт Июл 12, 2012 11:10 pm Ответить с цитатой Вернуться к началу

Совершенно очевидно, что какие то косяки. Решения не нашел.

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



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

СообщениеДобавлено: Чт Июл 12, 2012 11:25 pm Ответить с цитатой Вернуться к началу

Спасибо за оперативный ответ! Раз все так плохо, может подкинуть автору этот баг.
Ну если есть такая возможность, там вроде для легалов только доступ был.
Посмотреть профиль Отправить личное сообщение
gonzalezz



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

СообщениеДобавлено: Пт Июл 13, 2012 6:36 am Ответить с цитатой Вернуться к началу

Подозреваю что дело вот в чем:

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

СообщениеДобавлено: Пт Июл 13, 2012 7:39 am Ответить с цитатой Вернуться к началу

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

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



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

СообщениеДобавлено: Пт Июл 13, 2012 8:01 am Ответить с цитатой Вернуться к началу

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 Sad

UPD: Принципиальный косяк - дата и время не умещаются в float Sad из за этого невозможно точно опередать даже минуты.


Последний раз редактировалось: gonzalezz (Пт Июл 13, 2012 10:38 am), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
gonzalezz



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

СообщениеДобавлено: Пт Июл 13, 2012 9:42 am Ответить с цитатой Вернуться к началу

Жаба меня нелюбит
Код:
EnableScript("jscript");
x = 4;
y = 5;
<%
AFL("y") = AFL("x");
%>
_TRACE(NumToStr(y));    // все равно 5

Ничего не пойму, что не так?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Июл 13, 2012 10:58 am Ответить с цитатой Вернуться к началу

Не помню.
Может так
Код:
AFL.Var("y") =  AFL("x");

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



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

СообщениеДобавлено: Пт Июл 13, 2012 11:24 am Ответить с цитатой Вернуться к началу

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen