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

 
W0wa0 #:

EURUSD на демосчете.

В спецификации котировочные и торговые часы совпадают?

 

Подскажите, мне казалось, что я видел такую настройку, которая ограничивала количество ордеров/позиций для алготрейдинга.

Не могу найти. Я путаю, или где такая настройка?

 
Владимир Тригубов #:

Подскажите, мне казалось, что я видел такую настройку, которая ограничивала количество ордеров/позиций для алготрейдинга.

Не могу найти. Я путаю, или где такая настройка?

Такой настройки в МТ нет.

 
Aleksey Vyazmikin #:
котировочные и торговые часы

Совпадают. С 0:15 по 23:55 с понедельника по пятницу.

 
W0wa0 #:

Совпадают. С 0:15 по 23:55 с понедельника по пятницу.

В какое время получаете ошибку?

 
Aleksey Vyazmikin #:

В какое время получаете ошибку?

Интересно получается. Дни разные, но время у всех одинаковое: 20:00 (график четырехчасовой). Похоже, разгадка где-то близко.

17.02.2021 20:00:00 среда
01.07.2021 20:00:00 четверг
09.08.2021 20:00:00 понедельник
09.11.2021 20:00:00 вторник
17.05.2022 20:00:00 вторник
01.07.2022 20:00:00 пятница
03.11.2022 20:00:00 четверг
23.11.2022 20:00:00 среда
26.01.2023 20:00:00 четверг
03.03.2023 20:00:00 пятница
17.03.2023 20:00:00 пятница
29.06.2023 20:00:00 четверг
24.07.2023 20:00:00 понедельник
 
A100 #:

Это Вы должны объяснить почему. Вы исходите из того, что переменные и массивы должны отличаться - тогда объясните почему. Я же исхожу из того, что принципиальных отличий быть не должно:

Результат разный, а какая принципиальная разница между (1) и (2) ?

Написал же.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2023.08.30 10:48

стека нет в принципе для элементов массивов (не переменных). Даже для const-массивов.


Напишите сценарий, где эта "ошибка" приводит к проблемам.


ЗЫ

struct A {
    A() : i( ii++ ) { Print( "+", i ); } //создание(+)
    ~A()            { Print( "-", i ); } //удаление(-)
     const int i;
    static int ii;
};
int A::ii = 1;

void OnStart()
{
  const A a[3], b[3]; // +1+2+3+4+5+6-4-5-6-1-2-3
}
Переменные (и массивные) в стеке. Элементы массива - нет.
 
fxsaber #:

Написал же.


Напишите сценарий, где эта "ошибка" приводит к проблемам.


ЗЫ

Переменные (и массивные) в стеке. Элементы массива - нет.

Ну, смотри. В справке написано, что деструкторы автоматически создаваемых объектов вызываются в порядке обратном их созданию? Соответственно, будьте добры обеспечить соблюдение. Ну, или опишите его в документации. Мало ли для чего я заложился на это правило.

PS/ В доках написано, что любой массив, даже статический, суть объект динамического массива. Скорее всего, под капотом там работа вариации на тему std::allocator, а вот там, в глубинах вызовов из метода deallocate, как раз и есть последовательный, явный вызов деструкторов. 

PPS. А вообще, ожидаемое поведение при выходе массива из scope:  If expression is not a null pointer and the deallocation function is not a destroying delete (since C++20), the  delete  expression invokes the destructor (if any) for the object that's being destroyed, or for every element of the array being destroyed (proceeding from the last element to the first element of the array).
 
fxsaber #:

ЗЫ

Переменные (и массивные) в стеке. Элементы массива - нет.

Так Вы не объяснили почему статический массив создается не в стеке

При том что - цитата: "Массивы на основе стека быстрее выделяются и получают к ней доступ, чем массивы на основе кучи"
 
A100 #:

Так Вы не объяснили почему статический массив создается не в стеке

При том что цитата: "Массивы на основе стека быстрее выделяются и получают к ней доступ, чем массивы на основе кучи"
На стеке он создается. Вроде бы даже проверял как-то. Просто создание и уничтожение производится через их allocator.
Причина обращения: