АвторСообщение





Сообщение: 42
Зарегистрирован: 30.05.13
Репутация: 0
ссылка на сообщение  Отправлено: 02.08.15 23:38. Заголовок: Массив структур параметров позиции


Если имеется структура параметров позиций, массив структур данного типа нужно создавать не статический? Я просто не представляю даже, советники если будут различные использовать данную структуру:

struct PosProp
{
int gi_Type; // Тип торговой операции
int gi_CurTicket; // Тикет выбранного ордера
double gd_OpenPrice; // Цена открытия
double gd_Lots; // Объём позиции на открытие
double gd_CurSL; // Текущий Stop Loss выбранной позиции
double gd_CurTP; // Текущий Take Profit выбранной позиции
string gs_Comment; // Комментарий
};

PosProp SPos[];

Они будут использовать свою копию массива структуры или нет будучи она статическая ? Надеюсь я понятно написал. Ведь можно было и так создать PosProp SPos[];

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]







Сообщение: 1677
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 09.08.15 10:44. Заголовок: На мой взгляд, Вы ищ..


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

К примеру, если очень нужно работать со списком ордеров в разных классах, то создавать этот список все равно нужно только в одном классе, а всем остальным передавать его по константной ссылке. Или же можно создать в классе метод, который будет копировать список в массив, переданный по ссылке:

 цитата:
struct PosProp
{
int gi_Type; // Тип торговой операции
int gi_CurTicket; // Тикет выбранного ордера
double gd_OpenPrice; // Цена открытия
double gd_Lots; // Объём позиции на открытие
double gd_CurSL; // Текущий Stop Loss выбранной позиции
double gd_CurTP; // Текущий Take Profit выбранной позиции
string gs_Comment; // Комментарий

void operator = (const PosProp &orderInfo)
{
gi_Type = orderInfo.gi_Type;
gi_CurTicket = orderInfo.gi_CurTicket;
gd_OpenPrice = orderInfo.gd_OpenPrice;
gd_Lots = orderInfo.gd_Lots;
gd_CurSL = orderInfo.gd_Lots;
gd_CurTP = orderInfo.gd_CurTP;
gs_Comment = orderInfo.gs_Comment;
}
};



class OrdersList
{
PosProp m_ordersList[];

public:
OrdersList(void);
~OrdersList(void);
void GetOrdersList(PosProp &ordersList[]);
};

OrdersList::OrdersList(void)
{
}

void OrdersList::GetOrdersList(PosProp &ordersList[])
{
int ordersCnt = ArraySize(m_ordersList);
ArrayResize(ordersList, ordersCnt); // Здесь не забыть проверку на успешность перераспределения памяти

for (int i = 0; i < ordersCnt; i++)
ordersList[ i ] = m_ordersList[ i ];
}



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


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет