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

 
Alexey Viktorov:
И опять не полная информация. На домашнем компе открыт удалённый доступ к VPS или открыт терминал с поставленным советником и удалённый доступ?
Считать надо сколько копий терминалов открыто и сколько копий советников в итоге в работе. Если на VPS открыт МТ с советником и его просматривать с помощью удалённого доступа никаких проблем не должно быть. Если-же на домашнем компе открыта вторая копия терминала с советником, то конфликт советников при условиях перечисленных Артёмом гарантированы.
Ничто не мешает сделать даже так: На VPS работает советник, а на домашнем открыт терминал БЕЗ советника, в этом случае будет видно открытые сделки, поставленные стопы и прочую информацию кроме логов.

На домашнем компе открыт удаленный терминал на ВПС, поскольку ВПС настраивался через домашний терминал и с этими настройками он остается открытым в режиме удаленного доступа, просто я его сворачиваю.

Поскольку сворачиваю, но не закрываю, видимо, происходит конфликт. Теперь буду закрывать, а состояние ВПС попробую следить по инвестпаролю счета на терминале с домашнего компа. 

 

Здравствуйте,

у меня на демо-счете случается следующее:

ulong u;

u=длинное математическое выражение (сумма, умножение, вызов функции) в котором участвуют переменные типа int и типа ulong.

Время от времени считает неверно. Заведомо каждая переменная типа int больше или равна 0. 

 

При тестировании на исторических котировках в отладчике не встречался с этим. 

 
Sergey Kudryavtsev:

Здравствуйте,

у меня на демо-счете случается следующее:

ulong u;

u=длинное математическое выражение (сумма, умножение, вызов функции) в котором участвуют переменные типа int и типа ulong.

Время от времени считает неверно. Заведомо каждая переменная типа int больше или равна 0. 

 

При тестировании на исторических котировках в отладчике не встречался с этим. 

Посмотрите Приведение типов. Также имейте в виду, что типы int и ulong имеют разный размер:

int

Целый тип int имеет размер 4 байта (32 бита). Минимальное значение -2 147 483 648, максимальное значение 2 147 483 647.

ulong

Целый тип ulong также занимает 8 байт и позволяет хранить значения от 0 до 18 446 744 073 709 551 615. 

 

В Вашем случае (использования в одной формуле РАЗНЫХ типов данных) вполне возможен вариант, когда число типа int выходит за свои границы.  

 
Vladimir Karputov:

Посмотрите Приведение типов. Также имейте в виду, что типы int и ulong имеют разный размер:

int

Целый тип int имеет размер 4 байта (32 бита). Минимальное значение -2 147 483 648, максимальное значение 2 147 483 647.

ulong

Целый тип ulong также занимает 8 байт и позволяет хранить значения от 0 до 18 446 744 073 709 551 615. 

 

В Вашем случае (использования в одной формуле РАЗНЫХ типов данных) вполне возможен вариант, когда число типа int выходит за свои границы.  

Число int точно не выходит за пределы, никакая подсумма (часть выражения) не выходит за пределы. Все где-то знаков 6.

Я уже начал избавляться от подобных выражений. 

Причём было такое:

Print(выражение); не равно return (выражение);.

 
Sergey Kudryavtsev:

Число int точно не выходит за пределы, никакая подсумма (часть выражения) не выходит за пределы. Все где-то знаков 6.

Я уже начал избавляться от подобных выражений. 

Причём было такое:

Print(выражение); не равно return (выражение);.

Для принтов используйте: IntegerToString.
[Удален]  
Странно что когда создается индикатор с ошибкой выхода за пределы массива индикатор создает точную копию лент боллинджера.
 
Sergey Kudryavtsev:

Здравствуйте,

у меня на демо-счете случается следующее:

ulong u;

u=длинное математическое выражение (сумма, умножение, вызов функции) в котором участвуют переменные типа int и типа ulong.

Время от времени считает неверно. Заведомо каждая переменная типа int больше или равна 0. 

 

При тестировании на исторических котировках в отладчике не встречался с этим. 

"Доктор, у меня что-то болит!" © )

Пример-то покажите такого выражения. Воспроизводимый. Тогда и ответить что-то можно будет.

 
Sergei Vladimirov:

"Доктор, у меня что-то болит!" © )

Пример-то покажите такого выражения. Воспроизводимый. Тогда и ответить что-то можно будет.

ulong PackMagic(int bs, int type, int frac, int ll)//bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST
     {
        int d1;
        ulong i, frac1=frac, ll1=ll, type1=type;
        
        i=1; d1=10;
        while (ll>=d1) {d1=d1*10; i=i+1;}
              
        if (type==0 || type==2) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
         type1*Pow10(frac_length+i+1)+bs*Pow10(frac_length+i+2)+Id1_class*Pow10(frac_length+i+3));
        else return(ll1+i*Pow10(i)+type1*Pow10(i+1)+bs*Pow10(i+2)+Id1_class*Pow10(i+3));
     }    
    
     ulong Pow10(ulong power) // power>0
     {
        ulong r=10;
        if (power==0) return 1;
        for (ulong i=2; i<=power; i++) r=r*10;
        return r;
     }

Проблема в функции PackMagic. Внешние переменные int frac_length=2; int Pow10frac_length=100; int Id1_class=1;.

 
Sergey Kudryavtsev:
Проблема в функции PackMagic. Внешние переменные int frac_length=2; int Pow10frac_length=100;.
Вы пример ошибки-то не привели. При каких значениях аргументов эта функция возвращает неправильное значение (какое?) и каким должен быть правильный результат?
 
Sergei Vladimirov:
Вы пример ошибки-то не привели. При каких значениях аргументов эта функция возвращает неправильное значение (какое?) и каким должен быть правильный результат?

Например:

Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return возвращало 11299.

Должно быть  1001199. В эксперте, функции в классе, демо-счёт в Открытии.

Не факт, что всегда в случае ошибки будет возвращаться 11299.