Ошибки, баги, вопросы - страница 3593

 
Slava #:

Это - неочевидно.

В статистике есть понятия "полная выборка" и "подвыборка".

Для полной выборки считается size. Для подвыборки (например, в скользящем окне) считается size-1

О чём и речь. У вас
для  x.Cov(y)  считает как "подвыборка"  size-1,
для  x.Var()  считает как "полная выборка"  size.

Почему разногласие в двух методах? 
Например я хочу использовать оба метода в неком расчёте.
Сейчас один метод считает "подвыборку",  второй метод "полную выборку".
Ну это не корректор ведь будет. 

Для рыночных данных используется "подвыборка".


 
Roman #:

О чём и речь. У вас
для  x.Cov(y)  считает как "подвыборка"  size-1,
для  x.Var()  считает как "полная выборка"  size.

Почему разногласие в двух методах? 
Например я хочу использовать оба метода в неком расчёте.
Сейчас один метод считает "подвыборку",  второй метод "полную выборку".
Ну это не корректор ведь будет. 

Для рыночных данных используется "подвыборка".


Мы считаем ровно так же, как считаются в питоне аналогичные функции cov и var
numpy.cov#
  • numpy.org
numpy.cov# , , , , , , , , # Estimate a covariance matrix, given data and weights. Covariance indicates the level to which two variables vary together. If we examine N-dimensional samples, , then the covariance matrix element is the covariance of and . The element is the variance of . See the notes for an outline of the algorithm. Parameters m...
 
Slava #:
Мы считаем ровно так же, как считаются в питоне аналогичные функции cov и var

А если в питоне ошибка ))

Ну неправильно же cov и var считать по разным выборкам.

 
Roman #:

А если в питоне ошибка ))

Ну неправильно же cov и var считать по разным выборкам.

Добавим в методы Std, Var и Cov параметр ddof (Delta Degrees of Freedom), чтобы можно было устанавливать делитель на size или size-1

 
Slava #:

Добавим в методы Std, Var и Cov параметр ddof (Delta Degrees of Freedom), чтобы можно было устанавливать делитель на size или size-1

Спасибо.

 
Putnik #:

Не читается дата записанная в файл. Что не так?

Вывод:

LJ 0 12:44:54.122 TestScript (EURUSD,H4) -----

NS 0 12:44:54.122 TestScript (EURUSD,H4) Date1=2024.11.28 09:22:00

QS 0 12:44:54.122 TestScript (EURUSD,H4) Str= 1732785720 2024.11.28 09:22

QQ 0 12:44:54.122 TestScript (EURUSD,H4) Date2=1970.01.01 00:00:00

CL 0 12:44:54.122 TestScript (EURUSD,H4) StrStr[0]= 1732785720 StrStr[1]=2024.11.28 StrStr[2]=09:22

DJ 0 12:44:54.122 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00

всё нормально...это просто чудеса Print() и приведения типов в нём. По хорошему его надо использовать только с единственным аргументом - строкой. Остальное только для быстрой отладки и чревато фокусами. 

вот так примерно (константа copy-paste взята у вас)

   datetime d=(datetime)StringToInteger("1732785720");
   Print("date is "+TimeToString(d,TIME_DATE|TIME_MINUTES|TIME_SECONDS));

 
Maxim Kuznetsov #:
Print("date is "+TimeToString(d,TIME_DATE|TIME_MINUTES|TIME_SECONDS));

Попробовал, не помогло.

DL 0 23:51:40.684 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00

PG 0 23:51:40.684 TestScript (EURUSD,H4) date is 1970.01.01 00:00:00

 
Putnik #:

Попробовал, не помогло.

DL 0 23:51:40.684 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00

PG 0 23:51:40.684 TestScript (EURUSD,H4) date is 1970.01.01 00:00:00

тогда откройте файл в HEX редакторе и посмотрите первый байт. что там у вас.

потому-что вот тут:

там пробела вроде как не должно быть...может там у вас какой-то служебный символ попался. Может BOM 

и ещё раз: не надо Print...

PrintFormat("Str[0]=<<%s>>",Str[0]); // и будет отчётливо видно, есть там лишние "пустые" символы или нет

 
Putnik #:

Не читается дата записанная в файл. Что не так?

Вывод:

LJ 0 12:44:54.122 TestScript (EURUSD,H4) -----

NS 0 12:44:54.122 TestScript (EURUSD,H4) Date1=2024.11.28 09:22:00

QS 0 12:44:54.122 TestScript (EURUSD,H4) Str= 1732785720 2024.11.28 09:22

QQ 0 12:44:54.122 TestScript (EURUSD,H4) Date2=1970.01.01 00:00:00

CL 0 12:44:54.122 TestScript (EURUSD,H4) StrStr[0]= 1732785720 StrStr[1]=2024.11.28 StrStr[2]=09:22

DJ 0 12:44:54.122 TestScript (EURUSD,H4) Date3=1970.01.01 00:00:00

>>>К разработчикам<<<

Кажется нашел проблемное место. Открыл текстовый файл в 16-ричном коде. Обнаружил пару байт, в самом начале файла, 'FF' и 'FE'. Они дают лишний/неизвестный знак к числу '1732785720'. Очевидно, что StringToInteger() возвращает по ошибке "неизвестной цифры" ноль. Поэтому ноль и выводится... 

Интересно, что если убрать строку:

FileSeek(H_File,0,SEEK_SET);

то все начинает работать нормально. Если же принудительно перевести указатель файла на ноль, тогда и происходит ошибка чтения из текстового файла.

PS

Пробовал в МТ4, там без проблем, ни каких лишних байт не пишется.

Пробовал удалить байты "в ручную", после этого файл читается без сбоев.

Пробовал создавать тестовый файл в блокноте и в word, таких байт в начале не обнаружено.

Файлы:
 
Putnik #:

>>>К разработчикам<<<

Кажется нашел проблемное место. Открыл текстовый файл в 16-ричном коде. Обнаружил пару байт, в самом начале файла, 'FF' и 'FE'. Они дают лишний/неизвестный знак к числу '1732785720'. Очевидно, что StringToInteger() возвращает по ошибке "неизвестной цифры" ноль. Поэтому ноль и выводится... 

Интересно, что если убрать строку:

то все начинает работать нормально. Если же принудительно перевести указатель файла на ноль, тогда и происходит ошибка чтения из текстового файла.

PS

Пробовал в МТ4, там без проблем, ни каких лишних байт не пишется.

Пробовал удалить байты "в ручную", после этого файл читается без сбоев.

Пробовал создавать тестовый файл в блокноте и в word, таких байт в начале не обнаружено.

Попробуйте при открытии файла добавлять флаг FILE_ANSI.