Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В Маркете более 400 индикаторов. Попробуй любой из них!
hoz
1936
hoz 2014.08.23 21:21 

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

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

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, то я так понимаю может возникнуть логическая ошибка при работе, т.к. каждый эксперт будет модифицировать т.е. изменять члены-элементы данной структуры. Ведь так?

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

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

keekkenen
1135
keekkenen 2014.08.23 21:41  

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

Position_Properties s1;

Position_Properties s2;

s1.gi_Magic = 100;

Print(s2.gi_Magic); 

 

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

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

hoz
1936
hoz 2014.08.24 07:29  
keekkenen:

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

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

hoz
1936
hoz 2014.08.24 09:17  

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

SPos.gd_Lots
..
SPos.gd_CurSL
SPos.gd_CurTP

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

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

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

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

Sergey Dzyublik
4817
Sergey Dzyublik 2014.08.24 10:23  
hoz:

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

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


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

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

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

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

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

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

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

hoz
1936
hoz 2014.08.24 11:20  
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

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

Dmitry Fedoseev
42924
Dmitry Fedoseev 2014.08.24 11:24  
Мама дорогая. Да можно, можно в разных экспертах иметь одинаковые имена объектов, и даже одинаковые имена переменных.
hoz
1936
hoz 2014.08.24 12:21  
Integer:
Мама дорогая. Да можно, можно в разных экспертах иметь одинаковые имена объектов, и даже одинаковые имена переменных.

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

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

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

Dmitry Fedoseev
42924
Dmitry Fedoseev 2014.08.24 12:32  

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

Vict
170
Vict 2014.08.24 13:11  
hoz:

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

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

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

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

hoz
1936
hoz 2014.08.24 16:27  
Integer:

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

 


Ого. Быстро нынче прогеры рисуют. И главное качественно так, ярко..
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий