Имена объектов классов( структур ) в разных экспертах

 

 Я вот призадумался. Если есть класс или структура. Торгуют разные эксперты, использующие те же классы. По сути, если в разных экспертах будут будут использоваться объекты классов или структур с теми же именами, то это приведёт к логической ошибке. Ведь так?

 Например, есть структура:

struct Position_Properties
{
   datetime    gdt_Expiration;      // Срок истечения отложенного ордера
   datetime    gdt_OpenTime;        // Время открытия выбранной позиции
   double      gd_OpenPrice;        // Цена открытия
   double      gd_Lots;             // Объём позиции на открытие
   double      gd_CurSL;            // Текущий Stop Loss выбранной позиции
   double      gd_NewSL;            // Новый Stop Loss выбранной позиции
   double      gd_CurTP;            // Текущий Take Profit выбранной позиции
   double      gd_NewTP;            // Новый Take Profit выбранной позиции
   int         gi_CurTicket;        // Тикет выбранного ордера
   int         gi_Type;             // Тип торговой операции
   int         gi_Slippage;         // Максимально допустимое отклонение цены для рыночных ордеров
   int         gi_Magic;            // Магический номер
   string      gs_Comment;          // Комментарий
   string      gs_Symbol;           // Наименование фин. инструмента, с которым производится операция
   ulong       gu_Duration;         // Длительность позиции в секундах
};

 В торговых экспертах я создаю объект данной структуры так:

Position_Properties SPos;

 К переменных обращаться соответственно буду так:

SPos.gd_Lots
..
SPos.gd_CurSL
SPos.gd_CurTP

 Если каждый эксперт торгуя на реале будет так обращаться с идентичными именами объектов, как тут SPos, то я так понимаю может возникнуть логическая ошибка при работе, т.к. каждый эксперт будет модифицировать т.е. изменять члены-элементы данной структуры. Ведь так?

 Если оно так, логично создавать некий идентификатор типа если от наличия торгующих экспертов. Если они есть, то как-то индексировать каждого и добавлять к структуре. Но это будет усложнять код. В общем, просьба делиться мыслями...

 Я спрашиваю, так как писать некоторые вещи, и всплыл такой момент. 

 

все не так - объекты это суть абстракции, для каждого объекта создается свой экземпляр, который обладает своими внутренними свойствами..

Position_Properties s1;

Position_Properties s2;

s1.gi_Magic = 100;

Print(s2.gi_Magic); 

 

по вашей логике (так ли я ее понял) принт должен выдать 100?

но, нет получите в выводе дырку от бублика

 
keekkenen:

по вашей логике (так ли я ее понял) принт должен выдать 100?

 Правильно! Получается, мне заведомо нужно знать сколько у меня торгует экспертов, чтоб каждому свой идентификатор присвоить? Или это как-то можно проще реализовать?

 

 В моём варианте если раньше было так:

SPos.gd_Lots
..
SPos.gd_CurSL
SPos.gd_CurTP

 То при одновременно торгующих нескольких торговых экспертах нужно объекта заменить массивом? Я имею ввиду в плане удобство и высокой производительности. Я вижу это так:

SPos[ИНДЕКС ТОРГОВОГО ЭКСПЕРТА].gd_Lots
..
SPos[ИНДЕКС ТОРГОВОГО ЭКСПЕРТА].gd_CurSL
SPos[ИНДЕКС ТОРГОВОГО ЭКСПЕРТА].gd_CurTP

 Где [ИНДЕКС ТОРГОВОГО ЭКСПЕРТА] - будет, скажем так, магик данного эксперта или ещё что. Кстати, есть какие-нить предложения может по этому поводу? Кто как это видит?

Вот я  это и хотел спросить. Т.к. ни разу не встречал подобных мыслей и реализации ни у кого. Как-будто это ни кому не нужно. Вот я и решил дописать себе такой момент.

 
hoz:

Кстати, есть какие-нить предложения может по этому поводу? Кто как это видит?

Вот я  это и хотел спросить. Т.к. ни разу не встречал подобных мыслей и реализации ни у кого. Как-будто это ни кому не нужно. Вот я и решил дописать себе такой момент.


Вам говорят что вы не правы и все данные ассоциированы только с теми экспертами в процессе работы которых они были созданы.

Но вы гнете свою Гениальную идею и далее.

Вместо того что бы писать сперва бы проверили:

создать два эксперта с одинаковыми именами объектов  и разными данными:

1) просто печатает периодически свои данные

2) просто модифицирует периодически свои данные

И запустив два этих эксперта убедиться, кто и в чем ошибается.

 
ALXIMIKS:


Вам говорят что вы не правы и все данные ассоциированы только с теми экспертами в процессе работы которых они были созданы.

 Где мне такое говорили?

 Выше keekkenen привёл пример:

Position_Properties s1;

Position_Properties s2;

s1.gi_Magic = 100;

Print(s2.gi_Magic); 

Но здесь, ясно видно, что создано 2 разных объекта с разными именами. Я же говорю про объекты, с одинаковыми именами. Т.е. в 3 экспертах, скажем так, я буду получать стоплосс из структуры так:

// В первом эксперте получаю работаю с стоплоссом так:
SPos.gd_CurSL

// Во втором эксперте получаю работаю с стоплоссом так:
SPos.gd_CurSL

// В третьем эксперте получаю работаю с стоплоссом так:
SPos.gd_CurSL

 Получается, работа происходит с одним объектом! Это разве не понятно? Если объект один, то и значения у него не будут разные. Неужели Вы не согласны со мной?

 
Мама дорогая. Да можно, можно в разных экспертах иметь одинаковые имена объектов, и даже одинаковые имена переменных.
 
Integer:
Мама дорогая. Да можно, можно в разных экспертах иметь одинаковые имена объектов, и даже одинаковые имена переменных.

 В будний день обязательно проверю, как рынок заработает. 

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

Я логически это не понимаю. Но интересно понять. Т.к. столкнулся с этим. 

 

Вот так вот:) Бассейн это оперативная память, собачки - это программы (советники), каждая плавает в своем тазике.

 
hoz:

 В будний день обязательно проверю, как рынок заработает. 

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

Я логически это не понимаю. Но интересно понять. Т.к. столкнулся с этим. 

Мой совет: смотрите как всё во взрослых. В mql не найдёте ответы на многие вопросы. Ковыряйте C++, прочитайте "windows via c++" Рихтера (думаю даст важные базовые представления).

 
Integer:

Вот так вот:) Бассейн это оперативная память, собачки - это программы (советники), каждая плавает в своем тазике.

 


Ого. Быстро нынче прогеры рисуют. И главное качественно так, ярко..