РефератыИнвестицииАнАнализ эффективности вложений денежных средств в РКО

Анализ эффективности вложений денежных средств в РКО

Содержание.


стр.


Введение._______________________________________________________________


Глава 1. Функционирование рынка РКО._____________________________________


Участники рынка.____________________________________________________


Процедура торгов._____________________________________________________


Первичное размещение (аукцион).______________________________________


Вторичные торги.____________________________________________________


Погашение._________________________________________________________


Документооборот._____________________________________________________


Отчеты, предоставляемые биржей.______________________________________


Отчеты, предоставляемые Дилерами.____________________________________


Глава 2. Задачи Дилера на рынке РКО._______________________________________


Ведение бэк-офиса.____________________________________________________


Оптимизация вложений собственных средств._____________________________


Управление средствами инвесторов._____________________________________


Исполнение поручений Инвесторов._____________________________________


Анализ эффективности вложений._______________________________________


Глава 3. Задачи формирования и ведения собственного портфеля облигаций Дилера.


Формирование портфеля облигаций._____________________________________


Ликвидность портфеля._______________________________________________


Период инвестирования.______________________________________________


Инвестирование с целью максимизации дохода.__________________________


Безрисковое инвестирование._________________________________________


Анализ эффективности вложений денежных средств в РКО.________________


Постановка задачи._________________________________________________


Метод решения.____________________________________________________


Экономическая интерпретация метода._________________________________


Экономическая интерпретация полученных результатов.__________________


Применение результатов исследования для построения методов эффективного управления портфелем облигаций._______________________________________________________________


Заключение.___________________________________________________________


Список литературы.____________________________________________________


Приложения.__________________________________________________________


Приложение № 1. Программа автоматизации учета РКО.___________________


Приложение 1.1. Руководство пользователя._____________________________


Приложение 1.2. Текст программы._____________________________________


Приложение № 1.3. Журнал оборотов.__________________________________


Приложение № 1.4. Журнал лицевого учета._____________________________


Приложение № 1.5. Мемориальный ордер._______________________________


Приложение № 1.6. Отчет инвестору о совершенных сделках._______________


Приложение № 1.7. Структура пртфеля в разрезе по бумагам._______________


Приложение № 1.8. Структура портфеля обобщенная._____________________


Приложение № 1.9. Биржевая информация.______________________________


Приложение № 1.10. Еженедельный отчет в депозитарий.__________________


Приложение № 1.11. Ежемесячный отчет в депозитарий.___________________


Приложение № 2. Программа анализа эффективности вложений в РКО.______


Приложение 2.1. Текст программы._____________________________________


Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка._____


Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.________


Приложение № 3. Входные статистические данные._______________________


Приложение 3.1. Информация о бумагах.________________________________


Приложение 3.2. Информация о сделках.________________________________


Приложение 3.3. Информация о движениях денежных средств.______________


Приложение 3.4. Биржевая информация.________________________________


Введение.

Республиканские краткосрочные бескупонные облигации (РКО) выпускаются Министерством Финансов Республики Татарстан. Рынок РКО существует с 1995 года. За три года он стал важнейшим сегментом в экономике Татарстана, сравнимый по объему заимствований с рынком межбанковских кредитов и иностранной валюты.


Гарантом надежности вложений в РКО является Правительство РТ. РКО - ликвидный и наиболее доходный инструмент финансового рынка. Доходность по РКО выше, чем по банковским вкладам и депозитным сертификатам, а также государственным ценным бумагам. Имея льготное налогообложение, РКО является наиболее привлекательным вложением свободных финансовых ресурсов.


Вкладывать средства в РКО могут как юридические, так и физические лица. Доход по этим облигациям получается от разницы между ценой покупки и продажи, т.е. дисконт.


РКО обращаются в бездокументарной форме и учитываются записями по счетам депо. Продажа и покупка производится на фондовой бирже. В связи с этим возникает задача учета операций с РКО как со стороны биржи, так и со стороны организаций-инвесторов.


На данном сегменте фондового рынка можно производить как краткосрочные спекулятивные операции, так и долгосрочные вложения свободных собственных или заемных средств. Таким образом, актуальной является задача оценки эффективности вложений в РКО.


В данной дипломной работе решаются две задачи:


1. Автоматизация учета операций с РКО;


2. Оценка эффективности вложений в РКО.


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


Глава 1. Функционирование рынка РКО.


Республиканские краткосрочные облигации обращаются на Волжско-Камской бирже (ВКБ) посредством проведения электронных торгов. В функционировании рынка РКО можно выделить следующие моменты:


1. Участники рынка.


2. Процедура торгов.


3. Документооборот.


Участники рынка.


Участники рынка разделяются на две категории: Дилеры и инвесторы.


Дилер - любое юридическое лицо, профессиональным участником рынка ценных бумаг, заключившее договор на выполнение функций по обслуживанию операций с облигациями с коммунальным предприятием "Дирекция по работе с ценными бумагами". Дилер может заключать сделки с РКО от своего имени и за свой счет, а также может выполнять функции финансового брокера при заключении сделок от своего имени за счет и по поручению инвестора.


Инвестор - любое юридическое или физическое лицо, заключившее с Дилером договор брокерского обслуживания на рынке РКО. Инвестор может приобретать облигации только через Дилеров, уплачивая при этом комиссию.


Процедура торгов.


В ходе торгов РКО проходят следующие этапы:


· Первичное размещение;


· Вторичные торги;


· Погашение.



Первичное размещение (аукцион).


Аукцион - это первичное размещение облигаций, проводимого Организатором (Коммунальное предприятие "Дирекция по работе с ценными бумагами", агент Министерства финансов РТ по обслуживанию выпусков облигаций) по поручению Министерства финансов Республики Татарстан. Они проводятся по специальному графику. Дата аукциона, предельный объем выпуска, место и время проведения аукциона объявляются Организатором. Контрагентами в этой процедуре являются Министерство Финансов с одной стороны, и Дилеры - другой. В ходе аукциона Дилеры подают заявки на покупку облигаций. После подачи всех заявок до установленного времени, Министерство Финансов устанавливает цену отсечения - минимальная цена, по которой он готов продать облигации. Все заявки, поданные выше цены отсечения, удовлетворяются, заявки, поданные с более низкой ценой, не удовлетворяются.


Вторичные торги.

Обращение облигаций на вторичных торгах осуществляется в форме сделок купли-продажи через Торговую систему (организация, уполномоченная на основании договора с Министерством финансов РТ и двусторонних договоров с Дилерами обеспечивать процедуру заключения сделок купли-продажи путем предоставления технических средств). Контрагентами в этой процедуре выступают Дилеры. Дилеры вводят в Торговую систему посредством рабочих терминалов заявки на покупку или продажу облигаций. Если цены заявок совпадают, то они удовлетворяются, т.е. сделка считается совершенной.


Погашение.

Погашение облигаций производится в определенный день Министерством Финансов по номинальной стоимости.


Документооборот.

РКО обращаются в электронной форме. Учет по ним ведется посредством записей на счетах депо, открытых в Волжско-Камской трастовой компании (ВКТК). В связи с этим возникают вопросы отражения учета операций в документальной форме. В ходе обращения РКО можно выделить следующие типы документов:


· Отчеты, предоставляемые биржей;


· Отчеты, предоставляемые Дилерами.


Отчеты, предоставляемые биржей.


По завершении торгов биржа предоставляет каждому Дилеру следующие документы:


· Биржевая информация;


· Выписка из протокола торгов;


· Обязательства Дилера по итогам торгов;


· Выписка из реестра сделок.


Отчеты, предоставляемые Дилерами.


В процессе участия в торгах Дилеры обязаны предоставлять следующие документы бирже:


· Еженедельный отчет;


· Ежемесячный отчет;


· Другие документы, необходимые для допуска Дилера к торгам.


После совершения сделки купли-продажи по поручению Инвестора, Дилер обязан предоставить Инвестору отчет о совершенной сделке в форме, установленной в договоре по брокерскому обслуживанию и выписку со счета депо. Дилер также может предоставить биржевую информацию и оказывать консультационные услуги.


Глава 2. Задачи Дилера на рынке РКО.

Являясь активным участником рынка РКО, Дилер сталкивается со следующими задачами:


1. Ведение бэк-офиса;


2. Оптимизация вложений собственных средств;


3. Управление средствами Инвесторов;


4. Исполнение поручений Инвесторов;


5. Анализ эффективности вложений.


Ведение бэк-офиса.


Бэк-офис - система электронного учета операций с ценными бумагами. Он включает в себя очень широкий спектр функциональных вопросов:


· Ведение журнала лицевого учета и журнала оборотов (Приложение № 1.3, 1.4);


· Формирование и печать мемориальных ордеров (Приложение №1.5);


· Формирование и печать отчетов Инвесторам (Приложение №1.6);


· Формирование и печать собственного портфеля Дилера (Приложение № 1.7, 1.8);


· Формирование и печать биржевой информации (Приложение №1.9);


· Формирование и печать еженедельного и ежемесячного отчетов (Приложение №1.10, 1.11).


Все перечисленные задачи реализованы в представленной программе автоматизированного учета операций с РКО.


Оптимизация вложений собственных средств.


Под оптимизацией вложений собственных средств понимается создание портфеля облигаций, который удовлетворял бы поставленной инвестиционной или спекулятивной задаче.


Для формирования портфеля можно исходить из следующих факторов:


· Ликвидность;


· "Время жизни";


· Получение наибольшего дохода;


· Использование РКО в залоговых операциях для получения межбанковских кредитов.


Управление средствами инвесторов.


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


Исполнение поручений Инвесторов.

Дилер, являясь также и брокером на рынке РКО, совершает операции купли-продажи от своего имени, но по поручению Инвестора и за его счет. В этом случае Дилер должен вести учет приема заявок Инвесторов, исполнение поручений на бирже и формирование отчетов. За эти услуги он получает комиссионное вознаграждение.


Анализ эффективности вложений.


Данная задача является одной из наиболее сложных и необходимых. Определение метода анализа - нетривиальная задача. В Главе 3 рассмотрены две методики анализа эффективности вложений собственных средств в облигации.


Глава 3. Задачи формирования и ведения собственного
портфеля облигаций Дилера.

В процессе управления портфелем облигаций Дилер ставит перед собой следующие задачи:


· формирование портфеля облигаций;


· анализ эффективности вложений денежных средств.


Формирование портфеля облигаций.

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


Спецификой портфеля, состоящего из РКО, могут являться следующие моменты:


· ликвидность портфеля;


· период инвестирования;


· инвестирование с целью максимизации дохода;


· безрисковое инвестирование.


Ликвидность портфеля.

При инвестировании средств в РКО необходимо учитывать следующий момент. Денежные средства Дилеров, инвестируемые в облигации на вторичных торгах, часто превышают объемы торгов по какой-либо отдельной серии облигации. В связи с этим возникает вопрос ликвидности портфеля. Как показывает практика фондового рынка, облигации с наименьшим сроком погашения более ликвидные, чем те, которые имеют более длительный срок до погашения. Но, с другой стороны, облигации с меньшим сроком до погашения имеют и меньшую доходность. Таким образом, при продаже легче всего продать облигации с меньшим сроком до погашения, а купить те, которые имеют более длительный срок до погашения.


Период инвестирования.

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


Инвестирование с целью максимизации дохода.

В случае если целью инвестирования является максимизация дохода, причем срок инвестирования не фиксирован, т.е. неизвестен период инвестирования, Дилер сталкивается с двумя противоречивыми факторами: доходность и ликвидность. В связи с этим возникают задачи оптимального управления портфелем облигаций. Методы, которые применяют Дилеры, являются их собственными разработками (ноу-хау). Существуют множество публикаций в финансово-экономической литературе по оптимизации вложений в бескупонные облигации, но предложенные методы либо содержат в себе неверные предпосылки при построении метода оптимизации, либо содержат упрощения, после чего модель становится неприменима на практике.


Безрисковое инвестирование.

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



Анализ эффективности вложений денежных средств в РКО.
Постановка задачи.

Анализ эффективности вложения денежных в РКО можно разделить на анализ внутреннего управления портфелем облигаций и внешнего.


Внутреннее управление - это оценка изменения индекса портфеля в сравнении с индексом рынка.


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


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


Метод решения.

Предлагаются методики для решения поставленных задач путем построения следующих показателей:


1. Индекс портфеля и рынка (для оценки внутреннего управления).


Индекс строится следующим образом.


Для портфеля:


(1)



(1.1)


(1.2)


где:


значение индекса в момент t


коэффициент


стоимость портфеля по средневзвешенным ценам на момент закрытия торгов в момент t


сумма дополнительных вложений (извлечений) денежных средств в портфель в момент t, причем, если


дополнительные вложения


сумма изъятых денег


средневзвешенная цена i серии на момент закрытия торгов


количество бумаг i серии в портфеле


количество серий бумаг, обращающихся на рынке


Для рынка при расчете коэффициента и переменные будут иметь следующий смысл:


объем капитализации рынка по средневзвешенным ценам на момент t


сумма размещенных (погашенных) средств на аукционе


сумма размещенных средств на аукционе


сумма погашенных средств на аукционе


количество бумаг i серии, обращающихся на рынке


Данный индекс показывает, насколько эффективнее было внутреннее управление портфелем по сравнению с рыночной конъюктурой. Причем, если индекс портфеля меньше индекса рынка, то управление было неэффективным.


2. Эффективная норма доходности к погашению портфеля и рынка (для оценки внешнего управления).


Показатель строится следующим образом(2 метода):


В теории расчета применяется следующий метод:


(2)


где:


(2.1)


сумма i расходного платежа


сумма i доходного платежа


количество дней между i расходным и доходным платежами


эффективная норма доходности, которая и определяется из решения данного уравнения


количество расходных и доходных платежей


Уравнение (2) решается численными методами, причем решение единственно.


Из-за неудобства решения уравнения на практике обычно применяют другой метод нахождения :


(2.2)


где:


доходность к погашению i бумаги


количество i бумаги


дней до погашения i бумаги


рассчитывается следующим образом:


(2.3)


где:


цена покупки i бумаги в % от номинала (расходный платеж)


цена погашения в % от номинала (доходный платеж)


количество дней в году


дней до погашения i бумаги


Данный метод более удобен при расчетах и дает более быстрые результаты, вследствие чего он был применен при построении данного показателя.


Экономическая интерпретация метода.

Анализ с помощью методики построения индекса портфеля и рынка включает в себя следующие моменты:


Индекс построен таким образом, что он адекватно отражает управление портфелем и поведение рынка.


По построенному индексу можно определить доходность к приобретению портфеля и рынка, что бывает необходимым для сравнения вложений в РКО с другими инвестиционными операциями. Доходность к приобретению - это доходность на день расчета, которую можно получить при продаже портфеля облигаций.


Кроме того, можно оценить поведение рынка РКО в сравнении с другими рынками. Методика сравнения может быть различной и их построение требует учета специфики различных рынков.


Второй вид анализа - вычисление эффективной нормы доходности портфеля и рынка.


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


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


Экономическая интерпретация полученных результатов.

В данной работе сравнивался портфель РКО банка и рынок РКО с февраля по май месяц 1997 года.


При анализе путем построения индекса было выявлено следующее. График, построенный на основе индекса рынка (Приложение №2.3), имеет положительный наклон. Это обусловлено тем, что рынок в то время имел тенденцию к снижению доходности, поэтому, индекс, отражающий доходность к приобретению, увеличивался. В приведенном примере, основанном на реальных данных, внутреннее управление портфелем было эффективным по сравнению с рынком до начала мая месяца.


На графике сравнения доходности портфеля и рынка (Приложение № 2.2) можно видеть падение доходности к погашению портфеля в связи со сложившейся рыночной конъюнктурой. При анализе с помощью данного показателя можно сказать, что апрель месяц был наиболее благоприятным для дополнительного инвестирования денежных средств.


Применение результатов исследования для построения методов эффективного управления портфелем облигаций.

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


Для построения методик эффективного управления портфелем облигаций необходимо учитывать следующее:


1) управление должно давать максимальный эффект;


2) в управлении нужно учитывать возможность ввода-вывода денежных средств;


3) необходимость попытки прогнозирования ситуации при изменении рыночной конъюнктуры;


4) управление портфелем с точки зрения как доходности, так и ликвидности;


Полученные результаты также позволяют оценить степень влияния человека (в данном случае - трейдер) на управление портфелем облигаций. От методов, применяемых им для принятия решений, зависит эффективность управления портфелем облигаций. В этом случае бывает целесообразным контроль за управлением портфелем со стороны вышестоящего начальства без применения обременительных методик расчетов, с другой стороны, можно поощрять трейдера за успешное управление портфелем облигаций. Следовательно, предложенный индекс можно применить для оценки управления портфелем облигаций трейдером.


Другая задача, которою можно решить на основе полученных результатов - это задача доверительного управления (траст). Основываясь на результатах, можно предложить следующую схему взимания платы за траст со стороны управляющего с клиента. Сравнивается индекс рынка и индекс портфеля облигаций, находящегося в трасте. В случае, если индекс портфеля превосходит индекс рынка, то дополнительный доход, получающийся от более эффективного управления портфелем облигаций, делится в определенной пропорции между управляющим и клиентом. Другой вариант: управляющий гарантирует клиенту определенный процент, а плата управляющему рассчитывается по определенной методике исходя из гарантированного дохода и дохода, полученного свыше.


Заключение.

В работе решены следующие ключевые моменты, необходимые для работы с Республиканскими краткосрочными бескупонными облигациями (РКО):


· Автоматизация учета операций с РКО


· Оценка эффективности вложений в РКО


· Описано функционирование рынка РКО, поставлены задачи, которые решает Дилер на рынке.


Решением задачи автоматизации операций с РКО является программный продукт, написанный на Visual Basic for Microsoft Excel, который позволяет вести полный документооборот Дилера на рынке РКО. Результатами автоматизации являются стандартизованные выходные формы, необходимые для ведения бухгалтерского учета РКО и предоставления различных отчетов.


При решении задачи оценки эффективности вложений в РКО применялись статьи, содержащие информацию об различных методиках расчета доходности облигаций. Результатом решения данной задачи является разработка собственной методики анализа. Методика проверена на реальных численных данных за определенный период функционирования рынка РКО. Конечным продуктом метода является программа, написанная на Visual Basic for Microsoft Excel, позволяющая делать анализ эффективности управления портфелем облигаций. Приведенный метод анализа также можно применить в дальнейшем для построения методов эффективного управления портфелем облигаций.


Обе поставленные задачи внедрены и используются на практике.


Список литературы.

1. Башарин Г.П. «Начала финансовой математики» Москва, «ИНФРА-М» 1997 г.


2. Бродский В., Горлин Ю. «Модель действительной доходности ГКО для клиентов» журнал «Рынок ценных бумаг» №1 1994 г.


3. Ветров А. «Как построить агрегированные показатели доходности рынка ГКО/ОФЗ» журнал «Рынок ценных бумаг» №5 1996 г.


4. Горелов М. «Построение оптимального портфеля ГКО: как максимизировать прибыль» журнал «Рынок ценных бумаг» №6 1996 г.


5. Горелов М., Никифоров Л. «О границах применимости принципа рыночного момента» журнал «Рынок ценных бумаг» №16 1996 г.


6. Горелов М. «Что нельзя упускать при построении модели управления портфелем ГКО» журнал «Рынок ценных бумаг» №11 1996 г.


7. Горлин Ю. «Оценка доходности операций с ГКО: вырианты биржевой игры» журнал «Рынок ценных бумаг» №6 1994 г.


8. Грядовая О. «Доходность как критерий оптимизации решений по управлению портфелем ГКО» журнал «Рынок ценных бумаг» №15 1994 г.


9. Губерниев В. «ГКО в оптимальном портфеле» журнал «Рынок ценных бумаг» №15 1996 г.


10. Демушкина Е. «Сделки с государственными ценными бумагами» журнал «Рынок ценных бумаг» №23 1996 г.


11. Екушов А. «Как превысить среднюю доходность рынка ГКО» журнал «Рынок ценных бумаг» №11 1997 г.


12. Ивахин А. «Как преодолеть ограничения в моделировании рынка ГКО» журнал «Рынок ценных бумаг» №12 1996 г.


13. Комягин В.Б. «Программирование в Excel 5 и Excel 7 на языке Visual Basic» Москва, «Радио и связь» 1996 г.


14. Кузнецов М., Нифатов П. «Денежный поток и торговые операции на рынке ГКО» журнал «Рынок ценных бумаг» №4 1996 г.


15. Мешкова Н. Кулакова Ю. «Прогнозирование тренда цены ГКО» журнал «Рынок ценных бумаг» №6 1996 г.


16. Михеев А. «Играем на заемные средства» журнал «Рынок ценных бумаг» №3 1997 г.


17. Остроушко О., Гришин О. «Доходность и дюрация портфеля ГКО» журнал «Рынок ценных бумаг» №5 1996г.


18. Положение об обслуживании и обращении выпусков РКО РТ(утверждено постановлением Кабинета Министров РТ от 21 апреля 1995 г. № 238)


19. «Потоки платежей,виды облигаций и вычисление доходности» Москва «Консультационное агентство «Соболев» 1996 г.


20. «Рынок ценных бумаг» учебник под ред. Галанова В.А., Басова А.И. Москва «Финансы и статистика» 1996 г.


21. Суменкова Е.В. «Операции с ценными бумагами» Москва «Перспектива» 1997 г.


22. Ушаков П. «О взаимосвязях индикаторов рынка ГКО» журнал «Рынок ценных бумаг» №3 1997 г.


23. Черкасов В.Е. «Практическое руководство по финансово-экономическим расчетам» Москва «Метаинформ» 1995 г.


24. Черновский А. «Как оценить эффективноть управления портфелем ГКО» журнал «Рынок ценных бумаг» №24 1996 г.


25. Четыркин Е. «Методы финансовых и коммерческих расчетов»


Приложения.
Приложение № 1. Программа автоматизации учета РКО.
Приложение 1.1. Руководство пользователя.

Данная программа написана на Microsoft Visual Basic for Excel. Для запуска программы необходимо открыть файл sprav.xls в Excel, после чего в линейке меню появится дополнительный пункт меню «Справочник», состоящий из следующих разделов:


Дата


Просмотр остатков


Печать


Депозитарий


Портфель


Биржевая информация


Отчеты клиентам


Отчет недельный


Отчет месячный


Журнал лицевого учета


Окно


Бумаги


Сделки


Клиенты


Биржа


Рассмотрим подробнее каждое из пунктов меню.


Дата
- изменение даты для работы.


Просмотр остатков
- просмотр остатков по Клиентам.


Печать
- распечатка на принтер следующих данных:


Депозитарий - печать депозитария.


Портфель - печать собственного портфеля Дилера.


Биржевая информация - печать биржевой информации.


Отчеты клиентам - печать отчетов Клиентам.


Отчет недельный - печать еженедельного отчета, предоставляемого в депозитарий.


Отчет месячный - печать ежемесячного отчета, предоставляемого в депозитарий.


Журнал лицевого учета - печать журнала лицевого учета и журнала оборотов Дилера.


Окно
- выбор следующих окон для ввода информации:


Бумаги - выбор окна ввода информации об обращающихся на рынке бумагах.


Сделки - выбор окна ввода сделок.


Клиенты - выбор окна ввода Клиентов.


Биржа - выбор окна ввода биржевой информации.


Результатом работы программы являются Приложения №1.3-1.12


Приложение 1.2. Текст программы.

Option Explicit


Option Base 1


Public CurDate As Date


Public DepoArray() As Integer


Public BumArray(); BumArrayV() As Integer


Public Button; Просмотр; ExitVar; Покупка; Продажа; Погашение As Boolean


Const DilerConst = 1000900000


Const FilialConst = 1000999999


Const ConstMaxBum = 100 ' максимальное кол-во бумаг(выпусков)


Const MaxCount = 1000 ' максимальное кол-во сделок по 1-ой бумаге


Const S192 = "50202"


Const S904 = "47423"


Const S960 = "70102"


Const S970 = "70204"


Const SR970 = "70204"


Sub Auto_Open()


ActiveWindow.WindowState = xlMaximized


CurDate = Date


Worksheets("Врем").Cells(1; 4) = CurDate


Application.OnWindow = "CancelChanges"


Application.Windows("Sprav.xls").OnWindow = "Start"


End Sub


Sub Auto_Close()


MenuBars(xlModule).Reset


MenuBars(xlWorksheet).Reset


Application.OnWindow = ""


Application.Windows("Sprav.xls").OnWindow = ""


ActiveWorkbook.Save


End Sub


Sub Start()


Call CreateMenu


Application.DisplayFullScreen = False


ActiveWindow.WindowState = xlMaximized


CurDate = Date


Worksheets("Врем").Cells(1; 4) = CurDate


End Sub


Sub CancelChanges()


MenuBars(xlModule).Reset


MenuBars(xlWorksheet).Reset


End Sub


Sub CreateMenu()


MenuBars(xlModule).Reset


MenuBars(xlWorksheet).Reset


With MenuBars(xlModule).Menus.Add("&Справочник")


.MenuItems.Add "&Дата"; "DateChange"


.MenuItems.Add "П&росмотр остатков"; "PrintOst"


.MenuItems.AddMenu ("&Печать")


.MenuItems("&Печать").MenuItems.Add "&Депозитарий"; "PrintDepo"


.MenuItems("&Печать").MenuItems.Add "&Портфель"; "PrintPortfel"


.MenuItems("&Печать").MenuItems.Add "&Биржевая информация"; "PrintBirgaInfo"


.MenuItems("&Печать").MenuItems.Add "Отчеты &клиентам"; "PrintOtchClient"


.MenuItems("&Печать").MenuItems.Add "Отчет &недельный"; "PrintOtchWeek"


.MenuItems("&Печать").MenuItems.Add "Отчет &месячный"; "PrintOtchMonth"


.MenuItems("&Печать").MenuItems.Add "Журнал &лицевого учета"; "PrintMagazine"


.MenuItems.AddMenu ("&Окно")


.MenuItems("&Окно").MenuItems.Add "&Бумаги"; "ViewPaper"


.MenuItems("&Окно").MenuItems.Add "&Сделки"; "ViewDeal"


.MenuItems("&Окно").MenuItems.Add "&Клиенты"; "ViewClient"


.MenuItems("&Окно").MenuItems.Add "Би&ржа"; "ViewBirga"


.MenuItems("&Окно").MenuItems.Add "&Остатки 812"; "ViewOst812"


.MenuItems("&Окно").MenuItems.Add "О&статки биржа"; "ViewOstBirga"


.MenuItems("&Окно").MenuItems.Add "&Защита"; "ViewProgram"


End With


With MenuBars(xlWorksheet).Menus.Add("&Справочник")


.MenuItems.Add "&Дата"; "DateChange"


.MenuItems.Add "П&росмотр остатков"; "PrintOst"


.MenuItems.AddMenu ("&Печать")


.MenuItems("&Печать").MenuItems.Add "&Депозитарий"; "PrintDepo"


.MenuItems("&Печать").MenuItems.Add "&Портфель"; "PrintPortfel"


.MenuItems("&Печать").MenuItems.Add "&Биржевая информация"; "PrintBirgaInfo"


.MenuItems("&Печать").MenuItems.Add "Отчеты &клиентам"; "PrintOtchClient"


.MenuItems("&Печать").MenuItems.Add "Отчет &недельный"; "PrintOtchWeek"


.MenuItems("&Печать").MenuItems.Add "Отчет &месячный"; "PrintOtchMonth"


.MenuItems("&Печать").MenuItems.Add "Журнал &лицевого учета"; "PrintMagazine"


.MenuItems.AddMenu ("&Окно")


.MenuItems("&Окно").MenuItems.Add "&Бумаги"; "ViewPaper"


.MenuItems("&Окно").MenuItems.Add "&Сделки"; "ViewDeal"


.MenuItems("&Окно").MenuItems.Add "&Клиенты"; "ViewClient"


.MenuItems("&Окно").MenuItems.Add "Би&ржа"; "ViewBirga"


.MenuItems("&Окно").MenuItems.Add "&Остатки 812"; "ViewOst812"


.MenuItems("&Окно").MenuItems.Add "О&статки биржа"; "ViewOstBirga"


.MenuItems("&Окно").MenuItems.Add "&Защита"; "ViewProgram"


End With


End Sub


Sub ViewPaper()


Sheets("Бумаги").Select


Call EndOf


End Sub


Sub ViewDeal()


Sheets("Сделки").Select


Call EndOf


End Sub


Sub ViewClient()


Sheets("Клиенты").Select


Call EndOf


End Sub


Sub ViewBirga()


Sheets("Биржа").Select


Call EndOf


End Sub


Sub ViewOst812()


Sheets("Остатки812").Select


Call EndOf


End Sub


Sub ViewOstBirga()


Sheets("ОстаткиБиржа").Select


Call EndOf


End Sub


Sub ViewProgram()


Sheets("Защита").Select


End Sub


'------------------------------ Печать Депозитария ---------------


Sub PrintDepo()


Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer


Dim Flag As Boolean


Dim Code As Long


Dim Str As String


Dim DepoFil() As Integer


Dim Num As Integer


CurDate = Worksheets("Врем").Cells(1; 4)


Call FormBum


Sheets("Депо").Select


BumNum = Worksheets("Врем").Cells(1; 2)


Cells(3; 5) = Worksheets("Врем").Cells(1; 4)


Cells(3; 5).NumberFormat = "Д ММММ, ГГГГ"


Cells(3; 5).HorizontalAlignment = xlCenterAcrossSelection


Cells(3; 5).Font.Bold = True


Num = 9


For i = 1 To BumNum


Cells(6; i + 1) = Worksheets("Врем").Cells(i; 1)


Cells(6; i + 1).Font.Bold = True


Cells(6; i + 1).Interior.ColorIndex = 40


Cells(Num + 1; i + 1).Interior.ColorIndex = 15


Cells(Num + 1; i + 1) = ""


Cells(Num; i + 1).Interior.ColorIndex = 40


Cells(Num; i + 1) = ""


Cells(5; i + 1).Interior.ColorIndex = 40


Next


Cells(Num; 1).Interior.ColorIndex = 40


Cells(Num; 1) = "Итого"


Cells(Num; 1).Font.Bold = True


Cells(Num; 1).Font.Italic = True


Cells(Num; 1).HorizontalAlignment = xlCenter


Cells(Num + 1; 1) = ""


Cells(Num + 1; 1).Interior.ColorIndex = 15


CliNum = Worksheets("Врем").Cells(1; 3)


ReDim DepoArray(CliNum; BumNum)


ReDim DepoFil(BumNum)


a = 2


While Worksheets("Сделки").Cells(a; 1) <> Empty


i = 1


While Worksheets("Клиенты").Cells(i + 1; 2) <> _


Worksheets("Сделки").Cells(a; 2)


If Worksheets("Клиенты").Cells(i + 1; 2) = Empty Then


MsgBox "Неверный номер клиента в Окне 'Сделки' строка: " + CStr(a)


Sheets("Сделки").Select


Cells(a; 2).Select


Exit Sub


End If


i = i + 1


Wend


k = 0


For j = 1 To BumNum


If Worksheets("Врем").Cells(j; 1) = Worksheets("Сделки").Cells(a; 3) Then


k = j


Exit For


End If


Next


If k = 0 Then


a = a + 1


GoTo NNN


End If


If Not IsEmpty(Worksheets("Сделки").Cells(a; 4)) Then


Sign = 1


Else


Sign = -1


End If


If CurDate >= Worksheets("Сделки").Cells(a; 1) Then


If Worksheets("Сделки").Cells(a; 2) = FilialConst Then


DepoFil(k) = DepoFil(k) + Sign * Worksheets("Сделки").Cells(a; 6)


Else


DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets("Сделки").Cells(a; 6)


End If


End If


a = a + 1


NNN:


Wend


n = 7


For i = 1 To CliNum


Flag = False


For k = 1 To BumNum


If DepoArray(i; k) > 0 Then Flag = True


Next


If Flag Then


Str = Format(Worksheets("Клиенты").Cells(i + 1; 2); "0000000000")


Str = Right(Str; 5)


Cells(n; 1).NumberFormat = "@"


Cells(n; 1).Font.Bold = True


Cells(n; 1).HorizontalAlignment = xlCenter


Cells(n; 1).Font.Italic = False


Cells(n; 1).Interior.ColorIndex = 2


Cells(n; 1) = Str


For k = 1 To BumNum


If DepoArray(i; k) <> 0 Then


Cells(n; k + 1) = DepoArray(i; k)


Else


Cells(n; k + 1) = ""


End If


Cells(n; k + 1).Font.Bold = False


Cells(n; k + 1).Font.Italic = False


Cells(n; k + 1).Interior.ColorIndex = 2


Next


If n = 7 Then


n = n + 4


Else


n = n + 1


End If


End If


Next


'расчет по филиалу


Cells(8; 1) = "Филиал"


Cells(8; 1).Font.Bold = True


Cells(8; 1).HorizontalAlignment = xlCenter


Cells(8; 1).Font.Italic = False


Cells(8; 1).Interior.ColorIndex = 2


For k = 1 To BumNum


If DepoFil(k) <> 0 Then


Cells(8; k + 1) = DepoFil(k)


Else


Cells(8; k + 1) = ""


End If


Cells(8; k + 1).Font.Bold = False


Cells(8; k + 1).Font.Italic = False


Cells(8; k + 1).Interior.ColorIndex = 2


Next


For i = 1 To BumNum


Cells(n; i + 1).Interior.ColorIndex = 40


s = 0


For k = 11 To n - 1


s = s + Cells(k; i + 1)


Next


Cells(n; i + 1).Value = s


Next


For i = 1 To BumNum


Cells(9; i + 1) = Cells(7; i + 1) + Cells(8; i + 1)


Next


Cells(n; 1).Interior.ColorIndex = 40


Cells(n; 1) = "Итого 9998"


Cells(n; 1).Font.Bold = True


Cells(n; 1).Font.Italic = True


Range("A1:Z200").Borders(xlLeft).LineStyle = xlNone


Range("A1:Z200").Borders(xlRight).LineStyle = xlNone


Range("A1:Z200").Borders(xlTop).LineStyle = xlNone


Range("A1:Z200").Borders(xlBottom).LineStyle = xlNone


Range("A1:Z200").BorderAround LineStyle:=xlNone


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight:=xlMedium


Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift:=xlToLeft


Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift:=xlToLeft


If DialogPrint("Депо"; 1) Then Exit Sub


Call EditOstBirga(DilerConst)


End Sub


'-------------------------------- Печать Отчеты клиентам -----------


Sub PrintOtchClient()


Dim Sheet; Ost812 As Object


Dim i; j; d; a; Col; m; MM; NN; MMM; k; b; q As Long


Dim FlagBuy; FlagCell; FlagDeal; FlagDepo As Boolean


Dim CliNum As Long


Dim ComStr; StrComS As String


Dim BumNum; z; z1; Index As Integer


Dim s; sum; SumBuy; Ost; SumCom; ComBirga; ComDiler; ComSum As Double


Dim Com As Double


Dim OstIn; OstOut; OstBegin; OstEnd As Double


Dim RowNum As Long


Dim OstInDate; OstOutDate As String


Dim DoFlag As Boolean


Dim Auk As Boolean


Set Sheet = Worksheets("Сделки")


Sheet.Range("A2").Sort Key1:=Sheet.Range("A2"); Order1:=xlAscending; _


Key2:=Sheet.Range("B2"); Order2:=xlAscending; _


Key3:=Sheet.Range("D2"); Order3:=xlAscending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


CurDate = Worksheets("Врем").Cells(1; 4)


Worksheets("ОтчетыИнвесторам").Select


i = 2


FlagDeal = False


FlagBuy = True


FlagCell = True


NN = 29 ' начало


m = NN


Range(Cells(NN - 1; 2); Cells(NN + 200; 6)).Delete shift:=xlToLeft


Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).RowHeight = 28


Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).WrapText = True


Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).HorizontalAlignment = xlCenter


Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).VerticalAlignment = xlBottom


Cells(NN - 1; 2) = "№ выпуска"


Cells(NN - 1; 3) = "Дата погашения"


Cells(NN - 1; 4) = "Цена сделки"


Cells(NN - 1; 5) = "Количество"


Cells(NN - 1; 6) = "Сумма сделки"


Cells(NN - 3; 3) = "Совершенные сделки на рынке РКО"


Cells(NN - 3; 3).Font.Bold = True


sum = 0


SumBuy = 0


SumCom = 0


ComBirga = 0


Call FormBum


BumNum = Worksheets("Врем").Cells(1; 2)


ReDim BumArray(BumNum)


ReDim BumArrayV(BumNum)


Index = CInt(InputBox("Введите номер 1-го ордера"))


Do While Sheet.Cells(i; 1) <> Empty


If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 2) <> DilerConst Then


FlagDeal = True


If FlagBuy And Sheet.Cells(i; 4) <> Empty Then


Покупка = True


CliNum = Sheet.Cells(i; 2)


Cells(m; 2) = "Покупка"


Cells(m; 2).HorizontalAlignment = xlLeft


Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15


m = m + 1


MM = m


FlagBuy = False


End If


If FlagCell And Sheet.Cells(i; 4) = Empty Then


If Not FlagBuy Then


s = 0


Col = 0


SumCom = 0


ComBirga = 0


For a = MM To m - 1


Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10


If Cells(a; 4) <> 100 Then


SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10


ComBirga = ComBirga + _


CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets("Инфо").Cells(1; 2) + 0,001; "0,00"))


Else


Погашение = True


End If


Cells(a; 6).NumberFormat = "# ###"


s = s + Cells(a; 6)


Col = Col + Cells(a; 5)


Next a


sum = sum + s


SumBuy = s


Cells(m; 6) = s


Cells(m; 6).NumberFormat = "# ###"


Cells(m; 5) = Col


Cells(m; 2) = "Итого"


m = m + 1


End If


CliNum = Sheet.Cells(i; 2)


Cells(m; 2) = "Продажа"


Продажа = True


Cells(m; 2).HorizontalAlignment = xlLeft


Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15


m = m + 1


MM = m


FlagCell = False


End If


Cells(m; 2) = Sheet.Cells(i; 3)


q = 2


While Worksheets("Бумаги").Cells(q; 1) <> Empty


If Worksheets("Бумаги").Cells(q; 1) = Cells(m; 2) Then


Cells(m; 3) = Worksheets("Бумаги").Cells(q; 3)


Cells(m; 3).NumberFormat = "ДД.ММ.ГГ"


End If


q = q + 1


Wend


If Sheet.Cells(i; 4) <> Empty Then


Cells(m; 4) = Sheet.Cells(i; 4)


Else


Cells(m; 4) = Sheet.Cells(i; 5)


End If


Cells(m; 4).NumberFormat = "0,00"


Cells(m; 5) = Sheet.Cells(i; 6)


m = m + 1


If CliNum <> Sheet.Cells(i + 1; 2) Or Sheet.Cells(i + 1; 1) <> CurDate Then


s = 0


Col = 0


For a = MM To m - 1


Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10


If Cells(a; 4) <> 100 Then


SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10


ComBirga = ComBirga + _


CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets("Инфо").Cells(1; 2) + 0,001; "0,00"))


Else


Погашение = True


End If


Cells(a; 6).NumberFormat = "# ###,00"


s = s + Cells(a; 6)


Col = Col + Cells(a; 5)


Next a


sum = sum + s


If FlagCell Then SumBuy = s


Cells(m; 6) = s


Cells(m; 6).NumberFormat = "# ###,00"


Cells(m; 5) = Col


Cells(m; 2) = "Итого"


Cells(5; 4) = CliNum


If CliNum = FilialConst Then Cells(5; 4) = DilerConst


k = 2


While Worksheets("Клиенты").Cells(k; 1) <> Empty


If Worksheets("Клиенты").Cells(k; 2) = CliNum Then


Cells(4; 4) = Worksheets("Клиенты").Cells(k; 1)


End If


k = k + 1


Wend


Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlLeft).Weight = xlThin


Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlRight).Weight = xlThin


Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlTop).Weight = xlThin


Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlBottom).Weight = xlThin


Range(Cells(NN - 1; 2); Cells(m; 6)).BorderAround Weight:=xlMedium


For b = 1 To BumNum


BumArray(b) = 0


BumArrayV(b) = 0


Next


b = 2


While Worksheets("Сделки").Cells(b; 1) <> Empty


If CurDate >= Worksheets("Сделки").Cells(b; 1) And _


CliNum = Worksheets("Сделки").Cells(b; 2) Then


z = 0


For z1 = 1 To BumNum


If Worksheets("Врем").Cells(z1; 1) = Worksheets("Сделки").Cells(b; 3) Then


z = z1


Exit For


End If


Next


If z <> 0 Then


If Not IsEmpty(Worksheets("Сделки").Cells(b; 4)) Then


If CurDate > Worksheets("Сделки").Cells(b; 1) Then


BumArrayV(z) = BumArrayV(z) + Worksheets("Сделки").Cells(b; 6)


End If


BumArray(z) = BumArray(z) + Worksheets("Сделки").Cells(b; 6)


Else


If CurDate > Worksheets("Сделки").Cells(b; 1) Then


BumArrayV(z) = BumArrayV(z) - Worksheets("Сделки").Cells(b; 6)


End If


BumArray(z) = BumArray(z) - Worksheets("Сделки").Cells(b; 6)


End If


End If


End If


b = b + 1


Wend


' M+4


MMM = m + 5


Rows(CStr(m + 1) + ":" + CStr(m + 200)).Delete


FlagDepo = False


For b = 1 To BumNum


If BumArray(b) > 0 Or BumArrayV(b) > 0 Then


FlagDepo = True


Cells(MMM; 2) = Worksheets("Врем").Cells(b; 1)


If BumArrayV(b) < BumArray(b) Then


Cells(MMM; 4) = BumArray(b) - BumArrayV(b)


Else


If BumArrayV(b) > BumArray(b) Then


Cells(MMM; 5) = BumArrayV(b) - BumArray(b)


End If


End If


Cells(MMM; 3) = BumArrayV(b)


Cells(MMM; 6) = BumArray(b)


MMM = MMM + 1


End If


Next


If FlagDepo Then


Rows(CStr(m + 4) + ":" + CStr(m + 4)).RowHeight = 28


Rows(CStr(m + 4) + ":" + CStr(m + 4)).WrapText = True


Rows(CStr(m + 4) + ":" + CStr(m + 4)).HorizontalAlignment = xlCenter


Rows(CStr(m + 4) + ":" + CStr(m + 4)).VerticalAlignment = xlBottom


Cells(m + 4; 2) = "№ выпуска"


Cells(m + 4; 3) = "Входящий остаток"


Cells(m + 4; 4) = "Куплено"


Cells(m + 4; 5) = "Продано/ Погашено"


Cells(m + 4; 6) = "Исходящий остаток"


Cells(m + 2; 3).Font.Bold = True


Cells(m + 2; 3) = "Количество бумаг, принадлежащих Инвестору (штук)"


Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlLeft).Weight = xlThin


Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlRight).Weight = xlThin


Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlTop).Weight = xlThin


Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlBottom).Weight = xlThin


Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).BorderAround Weight:=xlMedium


End If


' ------------------------------------------------------


' - расчет остатков


Set Ost812 = Worksheets("Остатки812")


Ost812.Range("B2").Sort Key1:=Ost812.Range("B2"); Order1:=xlAscending; _


Key2:=Ost812.Range("A2"); Order2:=xlDescending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


OstIn = 0


OstOut = 0


OstBegin = 0


OstInDate = ""


OstOutDate = ""


RowNum = 0


k = 2


DoFlag = True


Do While Ost812.Cells(k; 1) <> Empty


If Ost812.Cells(k; 2) = CliNum And DoFlag Then


If Ost812.Cells(k; 1) < CurDate Then


OstBegin = Ost812.Cells(k; 8)


Else


Do While Ost812.Cells(k; 1) <> Empty


If Ost812.Cells(k; 2) <> CliNum Then Exit Do


If Ost812.Cells(k; 1) = CurDate Then


OstBegin = Ost812.Cells(k; 3)


OstIn = Ost812.Cells(k; 4)


OstInDate = Ost812.Cells(k; 5)


OstOut = Ost812.Cells(k; 6)


OstOutDate = Ost812.Cells(k; 7)


RowNum = k


Exit Do


End If


k = k + 1


Loop


End If


DoFlag = False


End If


k = k + 1


Loop


If RowNum = 0 Then RowNum = k


k = RowNum


' - начало таблицы


With DialogSheets("ДиалогКлиент")


.Labels(8).Text = Cells(4; 4) ' Клиент


.Labels(9).Text = sum ' Сумма сделки


.Labels(10).Text = CurDate ' Дата текущая


.Labels(17).Text = CliNum


If CliNum = FilialConst Then .Labels(17).Text = DilerConst


.EditBoxes(1).Text = "0" ' Сумма списания


.EditBoxes(1).InputType = xlNumber


.EditBoxes(2).Text = CurDate ' Дата сделки


.EditBoxes(7).Text = OstOutDate ' списано (дата)


.EditBoxes(8).Text = OstOut ' списано (сумма)


.EditBoxes(8).InputType = xlNumber


.EditBoxes(9).Text = OstInDate ' перечислено (дата)


.EditBoxes(10).Text = OstIn ' перечислено (сумма)


.EditBoxes(10).InputType = xlNumber


Com = 0,00015


Select Case SumCom


Case Is < 36000


Com = 0,005


Case Is < 51000


Com = 0,004


Case Is < 101000


Com = 0,003


Case Is < 301000


Com = 0,002


Case Is < 501000


Com = 0,001


Case Is < 1001000


Com = 0,0005


Case Is < 3001000


Com = 0,00025


End Select


If Cells(4; 4) = "Универсалбанк" Then Com = 0


.EditBoxes(3).Text = Com ' Комиссия дилера


.EditBoxes(3).InputType = xlNumber


.EditBoxes(4).Text = "0" ' Сумма вознаграждения дилера


.EditBoxes(4).InputType = xlNumber


.EditBoxes(5).Text = "" ' Запись о вознаграждении


.EditBoxes(6).Text = OstBegin ' Остаток на 812 счете клиента


.EditBoxes(6).InputType = xlNumber


Cells(MMM + 3; 1) = "Начальник инвестиционно-аналитического отдела_________________"


Cells(MMM + 3; 6) = ""


Again:


Просмотр = False


ExitVar = False


Button = False


.Show


If .EditBoxes(1).Text = "" Then .EditBoxes(1).Text = 0


If .EditBoxes(3).Text = "" Then .EditBoxes(3).Text = 0


If .EditBoxes(4).Text = "" Then .EditBoxes(4).Text = 0


If .EditBoxes(6).Text = "" Then .EditBoxes(6).Text = 0


If .EditBoxes(8).Text = "" Then .EditBoxes(8).Text = 0


If .EditBoxes(10).Text = "" Then .EditBoxes(10).Text = 0


Cells(21; 1) = .EditBoxes(5).Text ' Запись о вознаграждении


Cells(21; 1).Font.Italic = True


Cells(6; 4) = .EditBoxes(2).Text ' Дата сделки


' занесение данных в итоговую таблицу


Cells(10; 6) = .EditBoxes(6).Text ' Входящий остаток


OstBegin = .EditBoxes(6).Text


Cells(14; 6) = SumBuy


Cells(15; 6) = sum - SumBuy


ComStr = Format(SumCom * .EditBoxes(3).Text; "0,00")


ComDiler = CDbl(ComStr)


Cells(16; 6) = ComBirga


Cells(18; 6) = ComDiler


Cells(20; 6) = .EditBoxes(4).Text


Cells(11; 6) = .EditBoxes(8).Text


OstOut = .EditBoxes(8).Text


OstIn = .EditBoxes(10).Text


Cells(12; 6) = .EditBoxes(10).Text


Cells(13; 6) = .EditBoxes(6).Text - .EditBoxes(8).Text + .EditBoxes(10).Text


Cells(11; 1) = "2.Списано на р/с / выдано наличными " + .EditBoxes(7).Text


OstInDate = .EditBoxes(9).Text


OstOutDate = .EditBoxes(7).Text


Cells(12; 1) = "3.Перечислено на покупку " + .EditBoxes(9).Text


Cells(22; 6) = 2 * SumBuy - sum + ComBirga + ComDiler


Cells(23; 6) = .EditBoxes(1).Text


Cells(24; 6) = .EditBoxes(6).Text - .EditBoxes(8).Text + .EditBoxes(10).Text - _


(2 * SumBuy - sum + ComBirga + ComDiler) - _


.EditBoxes(1).Text - .EditBoxes(4).Text


OstEnd = Cells(24; 6)


Ost812.Cells(k; 1) = CurDate


Ost812.Cells(k; 2) = CliNum


Ost812.Cells(k; 3) = OstBegin


Ost812.Cells(k; 4) = OstIn


Ost812.Cells(k; 5) = OstInDate


Ost812.Cells(k; 6) = OstOut


Ost812.Cells(k; 7) = OstOutDate


Ost812.Cells(k; 8) = OstEnd


Ost812.Cells(k; 9) = Cells(14; 6) + Cells(15; 6)


Ost812.Cells(k; 10) = Cells(16; 6)


Ost812.Cells(k; 11) = Cells(18; 6)


Call EditOstBirga(CliNum)


' конец занесения данных


If Просмотр Then


Worksheets("ОтчетыИнвесторам").PrintPreview


GoTo Again


End If


If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2


If ExitVar Then Exit Sub


End With


' печать мемориальных ордеров


Dim StrS As String


Auk = False


With DialogSheets("ДиалогОперация")


.Show


If .OptionButtons(1).Value = xlOn Then StrS = "Покупка"


If .OptionButtons(2).Value = xlOn Then StrS = "Продажа"


If .OptionButtons(3).Value = xlOn Then StrS = "Погашение"


If .OptionButtons(4).Value = xlOn Then StrS = "Покупка / Продажа"


If .OptionButtons(5).Value = xlOn Then StrS = "Покупка / Погашение"


If .OptionButtons(5).Value = xlOn Then Auk = True


End With


Worksheets("Ордер").Select


Dim Pos812 As Integer


Dim Page; Page1 As Object


Set Page = Worksheets("ОтчетыИнвесторам")


Set Page1 = Worksheets("Клиенты")


Pos812 = 2


While (Page1.Cells(Pos812; 1) <> Empty) And (Worksheets("Клиенты").Cells(Pos812; 2) <> CliNum)


Pos812 = Pos812 + 1


Wend


If Page.Cells(14; 6) - Page.Cells(15; 6) > 0 Then


If MemoOrder(Index; Page.Cells(14; 6) - Page.Cells(15; 6); 6; 7; Pos812; _


StrS + " РКО за " + CStr(CurDate)) Then Exit Sub


Index = Index + 1


Else


If MemoOrder(Index; Page.Cells(15; 6) - Page.Cells(14; 6); 7; 6; Pos812; _


StrS + " РКО за " + CStr(CurDate)) Then Exit Sub


Index = Index + 1


End If


Dim SumS As Double


SumS = Page.Cells(16; 6) + Page.Cells(18; 6) + Page.Cells(20; 6)


If SumS > 0 Then


StrS = ""


If Page.Cells(18; 6) > 0 Then StrS = "Комиссия Дилера " + CStr(Page.Cells(18; 6)) + " в т.ч. НДС " + _


CStr(Format(Page.Cells(18; 6) / 6; "0,00"))


If Page.Cells(16; 6) > 0 And Not Auk Then StrS = StrS + " возмещение ком. ВКБ " + CStr(Page.Cells(16; 6)) + " в т.ч. НДС " + _


CStr(Format(Page.Cells(16; 6) / 6; "0,00"))


If CliNum = FilialConst Then


If MemoOrder(Index; SumS; 6; 7; Pos812; StrS) Then Exit Sub


Else


If Auk Then


StrS = StrS + " по приобретению на аукционе"


If MemoOrder(Index; Page.Cells(18; 6) + Page.Cells(20; 6); 6; 12; Pos812; StrS) Then Exit Sub


StrS = "Возмещение ком. ВКБ " + CStr(Page.Cells(16; 6)) + " в т.ч. НДС " + _


CStr(Format(Page.Cells(16; 6) / 6; "0,00"))


Index = Index + 1


If MemoOrder(Index; Page.Cells(16; 6); 6; 8; Pos812; StrS) Then Exit Sub


Else


If MemoOrder(Index; SumS; 6; 8; Pos812; StrS) Then Exit Sub


End If


End If


Index = Index + 1


End If


If CliNum <> FilialConst Then


If Len(StrComS) > 0 Then


StrComS = StrComS + "," + CStr(Right(CliNum; 3))


Else


StrComS = StrComS + CStr(Right(CliNum; 3))


End If


End If


If CliNum <> FilialConst Then ComSum = ComSum + Page.Cells(16; 6)


Worksheets("ОтчетыИнвесторам").Select


'---------------


Rows(CStr(m + 4) + ":" + CStr(m + 4)).RowHeight = 13,8


Rows(CStr(m + 4) + ":" + CStr(m + 4)).WrapText = False


Rows(CStr(m + 4) + ":" + CStr(m + 4)).HorizontalAlignment = xlRight


Rows(CStr(m + 4) + ":" + CStr(m + 4)).VerticalAlignment = xlBottom


Range(Cells(NN; 2); Cells(NN + 200; 6)).Delete shift:=xlToLeft


m = NN


FlagBuy = True


FlagCell = True


ComBirga = 0


sum = 0


SumBuy = 0


SumCom = 0


End If


End If


i = i + 1


Loop


If Not FlagDeal Then


MsgBox "Сделок в текущий день не было"


Else


If ComSum > 0 Then


Worksheets("Ордер").Select


If MemoOrder(Index; ComSum; 9; 7; 2; _


"Комиссия ВКБ по инвесторам " + StrComS + " в т.ч. НДС " + _


CStr(Format(ComSum / 6; "0,00"))) Then Exit Sub


End If


End If


End Sub


'-------------------------------- Печать Отчеты недельные ----------


Sub PrintOtchWeek()


Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer


Dim Flag As Boolean


Dim Code As Long


Dim Str As String


Dim DepoFil() As Integer


Dim Num As Integer


CurDate = Worksheets("Врем").Cells(1; 4)


Call FormBum


Sheets("ОтчетНедельный").Select


BumNum = Worksheets("Врем").Cells(1; 2)


Num = 8


For i = 1 To BumNum


Cells(6; i + 1) = Worksheets("Врем").Cells(i; 1)


Cells(6; i + 1).Font.Bold = True


Cells(6; i + 1).Interior.ColorIndex = 40


Cells(Num; i + 1).Interior.ColorIndex = 15


Cells(Num; i + 1) = ""


Cells(5; i + 1).Interior.ColorIndex = 40


Next


Cells(Num; 1).Interior.ColorIndex = 15


Cells(Num; 1) = ""


Cells(5; 1).Interior.ColorIndex = 40


Cells(5; 1) = ""


Cells(6; 1).Interior.ColorIndex = 40


Cells(6; 1).Font.Bold = True


Cells(6; 1) = "№ бумаги"


Cells(7; 1) = "Дилер"


Cells(6; 1).HorizontalAlignment = xlCenter


Cells(7; 1).HorizontalAlignment = xlCenter


Cells(7; 1).Font.Bold = True


CliNum = Worksheets("Врем").Cells(1; 3)


ReDim DepoArray(CliNum; BumNum)


a = 2


While Worksheets("Сделки").Cells(a; 1) <> Empty


i = 1


While Worksheets("Клиенты").Cells(i + 1; 2) <> _


Worksheets("Сделки").Cells(a; 2)


If Worksheets("Клиенты").Cells(i + 1; 2) = Empty Then


MsgBox "Неверный номер клиента в Окне 'Сделки'"


Exit Sub


End If


i = i + 1


Wend


k = 0


For j = 1 To BumNum


If Worksheets("Врем").Cells(j; 1) = Worksheets("Сделки").Cells(a; 3) Then


k = j


Exit For


End If


Next


If k = 0 Then


a = a + 1


GoTo NNN


End If


If Not IsEmpty(Worksheets("Сделки").Cells(a; 4)) Then


Sign = 1


Else


Sign = -1


End If


If CurDate >= Worksheets("Сделки").Cells(a; 1) Then


DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets("Сделки").Cells(a; 6)


End If


a = a + 1


NNN:


Wend


For k = 1 To BumNum


DepoArray(1; k) = DepoArray(1; k) + DepoArray(2; k)


DepoArray(2; k) = 0


Next k


n = 7


For i = 1 To CliNum


Flag = False


For k = 1 To BumNum


If DepoArray(i; k) > 0 Then Flag = True


Next


If Flag Then


If n > 7 Then


Str = Format(Worksheets("Клиенты").Cells(i + 1; 2); "0000000000")


Str = Right(Str; 5)


Cells(n; 1).NumberFormat = "@"


Cells(n; 1).Font.Bold = True


Cells(n; 1).HorizontalAlignment = xlCenter


Cells(n; 1).Font.Italic = False


Cells(n; 1).Interior.ColorIndex = 2


Cells(n; 1) = Str


End If


For k = 1 To BumNum


If DepoArray(i; k) <> 0 Then


Cells(n; k + 1) = DepoArray(i; k)


Else


Cells(n; k + 1) = ""


End If


Cells(n; k + 1).Font.Bold = False


Cells(n; k + 1).Font.Italic = False


Cells(n; k + 1).Interior.ColorIndex = 2


Next


If n = 7 Then


n = n + 2


Else


n = n + 1


End If


End If


Next


For i = 1 To BumNum


Cells(n; i + 1).Interior.ColorIndex = 40


s = 0


For k = 9 To n - 1


s = s + Cells(k; i + 1)


Next


Cells(n; i + 1).Value = s


Next


Cells(n; 1).Interior.ColorIndex = 40


Cells(n; 1) = "Итого по инвесторам"


Cells(n; 1).Font.Bold = True


Cells(n; 1).Font.Italic = True


Range("A1:Z200").Borders(xlLeft).LineStyle = xlNone


Range("A1:Z200").Borders(xlRight).LineStyle = xlNone


Range("A1:Z200").Borders(xlTop).LineStyle = xlNone


Range("A1:Z200").Borders(xlBottom).LineStyle = xlNone


Range("A1:Z200").BorderAround LineStyle:=xlNone


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin


Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight:=xlMedium


Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift:=xlToLeft


Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift:=xlToLeft


Range("a2") = "на " + CStr(CurDate)


Range(Cells(n + 2; 1); Cells(n + 3; BumNum + 1)).BorderAround Weight:=xlMedium


Cells(n + 2; 1) = "Количество перечисленных облигаций на счета ""Депо"""


Cells(n + 3; 1) = "без совершения сделок купли-продажи"


Cells(n + 2; 1).Font.Bold = True


Cells(n + 3; 1).Font.Bold = True


Cells(n + 5; 1).Font.Size = 12


Cells(n + 5; 1) = "Ответственное лицо Дилера " + _


" _________________________ "


Cells(n + 3; BumNum + 1) = 0


Cells(n + 3; BumNum + 1).Font.Bold = True


If DialogPrint("ОтчетНедельный"; 2) Then Exit Sub


End Sub


'-------------------------------- Печать Отчеты Месячные -----------


Sub PrintOtchMonth()


Dim DateBegin; DateEnd; DateMas() As Date


Dim i; k; m; NumberClients; kk As Long


Dim Sign; BumNum; Row; Col; Num; sum As Integer


Dim DateFlag; Flag; CliInput(); BumInput() As Boolean


Dim Bum(ConstMaxBum) As Long


Dim mas() As Integer


Dim Sheet As Object


Dim Str As String


With DialogSheets("ДиалогМесОтчет")


.EditBoxes(1).InputType = xlDate


.EditBoxes(2).InputType = xlDate


.Show


If Not Button Then Exit Sub


If IsDate(.EditBoxes(1).Text) = False Or _


IsDate(.EditBoxes(2).Text) = False Then


MsgBox "Неверно введены даты"


Exit Sub


End If


DateBegin = CDate(.EditBoxes(1).Text)


DateEnd = CDate(.EditBoxes(2).Text)


If DateBegin >= DateEnd Then


MsgBox "Даты не пересекаются"


Exit Sub


End If


End With


Set Sheet = Worksheets("Бумаги")


i = 2


BumNum = 0


While Sheet.Cells(i; 1) <> Empty


If (Sheet.Cells(i; 2) < DateBegin And Sheet.Cells(i; 3) > DateBegin) Or _


(Sheet.Cells(i; 2) < DateEnd And Sheet.Cells(i; 3) > DateEnd) Or _


(Sheet.Cells(i; 2) > DateBegin And Sheet.Cells(i; 3) < DateEnd) Then


Bum(BumNum + 1) = Sheet.Cells(i; 1)


BumNum = BumNum + 1


End If


i = i + 1


Wend


Set Sheet = Worksheets("Клиенты")


i = 2


k = 0


While Sheet.Cells(i; 1) <> Empty


If Sheet.Cells(i; 2) > k And Sheet.Cells(i; 2) <> FilialConst Then


k = Sheet.Cells(i; 2)


End If


i = i + 1


Wend


NumberClients = k - DilerConst


DateFlag = True


ReDim mas(NumberClients; BumNum * 7)


ReDim DateMas(NumberClients; BumNum)


ReDim CliInput(NumberClients)


ReDim BumInput(BumNum)


i = 2


Worksheets("Сделки").Select


While Cells(i; 1) <> Empty


If Cells(i; 2) <> DilerConst And Cells(i; 2) <> FilialConst Then


If Cells(i; 1) < DateBegin Then


Flag = True


For k = 1 To BumNum ' поиск номера бумаги


If Cells(i; 3) = Bum(k) Then


Flag = False


Exit For


End If


Next k


If Flag Then GoTo cont


Sign = 1


If IsEmpty(Cells(i; 4)) Then Sign = -1


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 1) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 1) + Sign * Cells(i; 6)


End If


If Cells(i; 1) >= DateBegin And DateFlag Then


For k = 1 To NumberClients


For m = 1 To BumNum


mas(k; (m - 1) * 7 + 2) = mas(k; (m - 1) * 7 + 1)


Next m


Next k


DateFlag = False


End If


If Cells(i; 1) >= DateBegin And Cells(i; 1) <= DateEnd Then


Flag = True


For k = 1 To BumNum


If Cells(i; 3) = Bum(k) Then


Flag = False


Exit For


End If


Next k


If Flag Then GoTo cont


If Cells(i; 7) <> "списание" And Cells(i; 7) <> "зачисление" Then


If Not IsEmpty(Cells(i; 4)) Then


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 3) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 3) + Cells(i; 6)


Else


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 4) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 4) + Cells(i; 6)


End If


If DateMas(Cells(i; 2) - DilerConst; k) <> Cells(i; 1) Then


DateMas(Cells(i; 2) - DilerConst; k) = Cells(i; 1)


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 5) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 5) + 1


End If


End If


If Cells(i; 7) = "списание" Then


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 6) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 6) + Cells(i; 6)


End If


If Cells(i; 7) = "зачисление" Then


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 7) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 7) + Cells(i; 6)


End If


Sign = 1


If IsEmpty(Cells(i; 4)) Then Sign = -1


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 2) = _


mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 2) + Sign * Cells(i; 6)


End If


End If


cont:


i = i + 1


Wend


For i = 1 To NumberClients


CliInput(i) = False


For k = 1 To BumNum


If mas(i; (k - 1) * 7 + 1) > 0 Or _


mas(i; (k - 1) * 7 + 2) > 0 Or _


mas(i; (k - 1) * 7 + 3) > 0 Or _


mas(i; (k - 1) * 7 + 4) > 0 Or _


mas(i; (k - 1) * 7 + 5) > 0 Or _


mas(i; (k - 1) * 7 + 6) > 0 Or _


mas(i; (k - 1) * 7 + 7) > 0 Then CliInput(i) = True


Next k


Next i


For k = 1 To BumNum


BumInput(k) = False


For i = 1 To NumberClients


If mas(i; (k - 1) * 7 + 1) > 0 Or _


mas(i; (k - 1) * 7 + 2) > 0 Or _


mas(i; (k - 1) * 7 + 3) > 0 Or _


mas(i; (k - 1) * 7 + 4) > 0 Or _


mas(i; (k - 1) * 7 + 5) > 0 Or _


mas(i; (k - 1) * 7 + 6) > 0 Or _


mas(i; (k - 1) * 7 + 7) > 0 Then BumInput(k) = True


Next i


Next k


Worksheets("ОтчетМесячный").Select


Range(Cells(7; 1); Cells(800; 22)).Delete shift:=xlToLeft


Row = 4


Col = 2


Cells(2; 1) = "за период от " + CStr(DateBegin) + " до " + CStr(DateEnd)


kk = 0


Flag = False


For k = 1 To BumNum


If BumInput(k) Then


Cells(Row; Col) = Bum(k)


Num = 0


For i = 1 To NumberClients


If CliInput(i) Then


If Col = 2 Then


Str = Format(i; "0000000000")


Str = Right(Str; 5)


Cells(Row + Num + 3; Col - 1).NumberFormat = "@"


Cells(Row + Num + 3; Col - 1).Font.Bold = True


Cells(Row + Num + 3; Col - 1).HorizontalAlignment = xlCenter


Cells(Row + Num + 3; Col - 1).Font.Italic = False


Cells(Row + Num + 3; Col - 1).Interior.ColorIndex = 2


Cells(Row + Num + 3; Col - 1) = Str


End If


Cells(Row + Num + 3; Col) = mas(i; (k - 1) * 7 + 1)


Cells(Row + Num + 3; Col + 1) = mas(i; (k - 1) * 7 + 2)


Cells(Row + Num + 3; Col + 2) = mas(i; (k - 1) * 7 + 3)


Cells(Row + Num + 3; Col + 3) = mas(i; (k - 1) * 7 + 4)


Cells(Row + Num + 3; Col + 4) = mas(i; (k - 1) * 7 + 5)


Cells(Row + Num + 3; Col + 5) = mas(i; (k - 1) * 7 + 6)


Cells(Row + Num + 3; Col + 6) = mas(i; (k - 1) * 7 + 7)


Num = Num + 1


End If


Next i


Col = Col + 7


kk = kk + 1


Flag = True


End If


If ((kk > 0) And (kk Mod 3 = 0) And Flag) Or k = BumNum Then


Flag = False


For i = 2 To 22


sum = 0


For m = 1 To NumberClients


sum = sum + Cells(m + 6; i)


Next m


Cells(Num + 7; i) = sum


Cells(Num + 7; i).Font.Bold = True


Cells(Num + 7; i).Interior.ColorIndex = 15


Next i


Cells(Num + 7; 1) = "Итого"


Cells(Num + 7; 1).Font.Bold = True


Cells(Num + 7; 1).HorizontalAlignment = xlCenter


Cells(Num + 7; 1).Interior.ColorIndex = 15


Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlLeft).Weight = xlThin


Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlRight).Weight = xlThin


Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlTop).Weight = xlThin


Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlBottom).Weight = xlThin


Range(Cells(7; 1); Cells(Num + 7; 22)).BorderAround Weight:=xlMedium


Range(Cells(7; 9); Cells(Num + 7; 15)).BorderAround Weight:=xlMedium


Cells(Num + 10; 10) = "Ответственное лицо Дилера______________________________"


If DialogPrint("ОтчетМесячный"; 2) Then Exit Sub


Row = 4


Col = 2


Cells(Row; Col) = " "


Cells(Row; Col + 7) = " "


Cells(Row; Col + 14) = " "


Range(Cells(7; 1); Cells(800; 22)).Delete shift:=xlToLeft


End If


Next k


Worksheets("СписокКлиентов").Select


Num = 5


Range(Cells(Num; 1); Cells(100; 3)).Delete shift:=xlToLeft


For i = 1 To NumberClients


If CliInput(i) Then


k = 2


While Sheet.Cells(k; 2) <> DilerConst + i


k = k + 1


Wend


Cells(Num; 1) = Sheet.Cells(k; 1)


Cells(Num; 2) = Sheet.Cells(k; 2)


Cells(Num; 3) = Sheet.Cells(k; 3)


Cells(Num; 1).HorizontalAlignment = xlLeft


Cells(Num; 2).HorizontalAlignment = xlCenter


Cells(Num; 3).HorizontalAlignment = xlCenter


Cells(Num; 3).WrapText = True


Num = Num + 1


End If


Next i


Cells(2; 1) = "за период от " + CStr(DateBegin) + " до " + CStr(DateEnd)


Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlLeft).Weight = xlThin


Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlRight).Weight = xlThin


Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlTop).Weight = xlThin


Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlBottom).Weight = xlThin


Range(Cells(5; 1); Cells(Num - 1; 3)).BorderAround Weight:=xlMedium


Range(Cells(5; 2); Cells(Num - 1; 2)).BorderAround Weight:=xlMedium


Cells(Num + 2; 2) = "Ответственное лицо Дилера______________________________"


With DialogSheets("ДиалогПечать")


AgainMonthOtch1:


Просмотр = False


ExitVar = False


Button = False


.Show


If Просмотр Then


Worksheets("СписокКлиентов").PrintPreview


GoTo AgainMonthOtch1


End If


If ExitVar Then Exit Sub


If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2


End With


End Sub


'-------------------------------- Перечисление/списание биржа ------


Sub GotoBirga()


Dim Sheet As Object


Dim OstIn; OstOut; OstBegin; CliNum As Double


Dim RowNum; k As Long


Dim DoFlag As Boolean


Set Sheet = Worksheets("ОстаткиБиржа")


Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _


Key2:=Sheet.Range("A2"); Order2:=xlDescending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


Sheet.Select


CurDate = Worksheets("Врем").Cells(1; 4)


k = 2


While Worksheets("Клиенты").Cells(k; 1) <> Empty


k = k + 1


Wend


With DialogSheets("ДиалогБиржа")


.DropDowns.ListFillRange = "Клиенты!$B$2:$B$" + CStr(k - 1)


.EditBoxes(1).InputType = xlNumber


.EditBoxes(2).InputType = xlNumber


.Show


If Button = False Then


MsgBox "Данные не занесены"


Exit Sub


End If


CliNum = .DropDowns(1).List(.DropDowns(1).ListIndex)


If .EditBoxes(1).Text = "" Then


OstIn = 0


Else


OstIn = .EditBoxes(1).Text


End If


If .EditBoxes(2).Text = "" Then


OstOut = 0


Else


OstOut = .EditBoxes(2).Text


End If


OstBegin = 0


k = 2


DoFlag = True


Do While Cells(k; 1) <> Empty


If Cells(k; 2) = CliNum And DoFlag Then


If Cells(k; 1) < CurDate Then


OstBegin = Cells(k; 6)


Else


MsgBox "Невозможен ввод информации"


Exit Sub


End If


DoFlag = False


End If


k = k + 1


Loop


Cells(k; 1) = CurDate


Cells(k; 2) = CliNum


Cells(k; 3) = OstBegin


Cells(k; 4) = OstIn


Cells(k; 5) = OstOut


Cells(k; 6) = OstBegin + OstIn - OstOut


End With


End Sub


'-------------------------------- Просмотр остатков 812 ------------


Sub PrintOst()


Dim Sheet; Sheet1 As Object


Dim i; k; CliNum As Long


Dim Ost As Double


CurDate = Worksheets("Врем").Cells(1; 4)


i = 2


While Worksheets("Сделки").Cells(i; 1) <> Empty


If Worksheets("Сделки").Cells(i; 1) = CurDate Then


Call EditOstBirga(Worksheets("Сделки").Cells(i; 2))


End If


i = i + 1


Wend


Set Sheet = Worksheets("Остатки812")


Set Sheet1 = Worksheets("ОстаткиБиржа")


Sheets("Клиенты").Select


i = 2


Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _


Key2:=Sheet.Range("A2"); Order2:=xlDescending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


Sheet1.Range("B2").Sort Key1:=Sheet1.Range("B2"); Order1:=xlAscending; _


Key2:=Sheet1.Range("A2"); Order2:=xlDescending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


While Cells(i; 2) <> Empty


CliNum = Cells(i; 2)


k = 2


Do


If Sheet.Cells(k; 1) = Empty Then


Ost = 0


Exit Do


End If


If Sheet.Cells(k; 2) = CliNum Then


Ost = Sheet.Cells(k; 8)


Exit Do


End If


k = k + 1


Loop


Cells(i; 4) = Ost


k = 2


Do


If Sheet1.Cells(k; 1) = Empty Then


Ost = 0


Exit Do


End If


If Sheet1.Cells(k; 2) = CliNum Then


Ost = Sheet1.Cells(k; 6)


Exit Do


End If


k = k + 1


Loop


Cells(i; 5) = Ost


i = i + 1


Wend


End Sub


'-------------------------------- Печать портфель ------------------


Sub PrintPortfel()


Dim Sheet As Object


Dim i; k; BumNum; m As Long


Dim Bum(ConstMaxBum); DatePog(ConstMaxBum) As Long


Dim Volume(); BiginIndex(); dates(); V() As Integer


Dim Price(); BumPrice(); DohPog(); DohPriobr() As Double


Dim DateMas() As Date


Dim Flag; BumIndex() As Boolean


Dim SumPog1(); SumPog2(); SumPriobr1(); SumPriobr2() As Double


Dim SumPog11; SumPriobr11; SumPog22; SumPriobr22 As Double


Dim BumVol() As Integer


Dim AllVol As Long


Dim PortfelCost; PortfelBalance As Double


CurDate = Worksheets("Врем").Cells(1; 4)


Set Sheet = Worksheets("Бумаги")


i = 2


BumNum = 0


While Sheet.Cells(i; 1) <> Empty


If (Sheet.Cells(i; 2) <= CurDate And Sheet.Cells(i; 3) > CurDate) Then


Bum(BumNum + 1) = Sheet.Cells(i; 1)


DatePog(BumNum + 1) = Sheet.Cells(i; 3)


BumNum = BumNum + 1


End If


i = i + 1


Wend


Worksheets("Сделки").Select


Range("B2").Sort Key1:=Range("A2"); Order1:=xlAscending; _


Key2:=Range("D2"); Order2:=xlAscending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


ReDim Volume(BumNum; MaxCount)


ReDim Price(BumNum; MaxCount)


ReDim DateMas(BumNum; MaxCount)


ReDim DohPog(BumNum; MaxCount)


ReDim DohPriobr(BumNum; MaxCount)


ReDim dates(BumNum); V(BumNum); BeginIndex(BumNum)


ReDim BumIndex(BumNum); BumPrice(BumNum)


ReDim SumPog1(BumNum); SumPog2(BumNum); SumPriobr1(BumNum); SumPriobr2(BumNum)


ReDim BumVol(BumNum)


For i = 1 To BumNum


dates(i) = 1


Next i


i = 2


While Cells(i; 1) <> Empty


If Cells(i; 2) = DilerConst And Cells(i; 7) <> "списание" _


And Cells(i; 7) <> "зачисление" Then


Flag = True


For k = 1 To BumNum ' поиск номера бумаги


If Cells(i; 3) = Bum(k) Then


Flag = False


Exit For


End If


Next k


If Flag Then GoTo cont


If Cells(i; 1) <= CurDate Then


If Not IsEmpty(Cells(i; 4)) Then


Volume(k; dates(k)) = Cells(i; 6)


Price(k; dates(k)) = Cells(i; 4)


DateMas(k; dates(k)) = Cells(i; 1)


dates(k) = dates(k) + 1


V(k) = V(k) + Cells(i; 6)


Else


V(k) = V(k) - Cells(i; 6)


End If


End If


End If


cont:


i = i + 1


Wend


For k = 1 To BumNum


For i = dates(k) To 1 Step -1


If V(k) > Volume(k; i) Then


V(k) = V(k) - Volume(k; i)


Else


Volume(k; i) = V(k)


BeginIndex(k) = i


Exit For


End If


Next i


Next k


For k = 1 To BumNum


BumIndex(k) = False


If V(k) > 0 Then BumIndex(k) = True


Next k


i = 2


While Cells(i; 1) <= CurDate And Cells(i; 1) <> Empty


If (Cells(i; 1) = CurDate And Cells(i; 2) = DilerConst) _


And (Cells(i; 7) <> "зачисление" And Cells(i; 7) <> "списание") Then


For k = 1 To BumNum


If Cells(i; 3) = Bum(k) Then


BumIndex(k) = True


End If


Next k


End If


i = i + 1


Wend


i = 2


Set Sheet = Worksheets("Биржа")


Flag = True


While Sheet.Cells(i; 1) <> Empty


If Sheet.Cells(i; 1) = CurDate Then


Flag = False


For k = 1 To BumNum


If Sheet.Cells(i; 2) = Bum(k) Then


If Sheet.Cells(i; 6) > 0 Then


BumPrice(k) = Sheet.Cells(i; 6)


Else


BumPrice(k) = 0


End If


End If


Next k


End If


i = i + 1


Wend


If Flag Then


MsgBox "Биржевой информации нет. Портфель сформировать невозможно."


Exit Sub


End If


Worksheets("Портфель1").Select


Cells(4; 3) = CurDate


Range("A7:H200").Delete shift:=xlToLeft


m = 7


PortfelCost = 0


PortfelBalance = 0


For k = 1 To BumNum


If Volume(k; BeginIndex(k)) > 0 Then


For i = BeginIndex(k) To dates(k)


If Volume(k; i) > 0 Then


Cells(m; 1) = Bum(k)


Cells(m; 1).NumberFormat = "0"


Cells(m; 2) = DateMas(k; i)


Cells(m; 2).NumberFormat = "ДД.ММ.ГГ"


Cells(m; 3) = Price(k; i)


Cells(m; 3).NumberFormat = "0,00"


Cells(m; 4) = Volume(k; i)


Cells(m; 4).NumberFormat = "0"


DohPog(k; i) = (100 / Price(k; i) - 1) * 36500 / (DatePog(k) - DateMas(k; i))


Cells(m; 5) = DohPog(k; i)


Cells(m; 5).NumberFormat = "0,00"


Cells(m; 8).NumberFormat = "0"


Dim tmp As Long


tmp = CurDate - DateMas(k; i)


Cells(m; 8) = tmp


PortfelBalance = PortfelBalance + Price(k; i) * Volume(k; i)


If BumPrice(k) > 0 Then


PortfelCost = PortfelCost + BumPrice(k) * Volume(k; i)


Else


PortfelCost = PortfelCost + Price(k; i) * Volume(k; i)


End If


If BumPrice(k) > 0 Then


Cells(m; 6) = BumPrice(k)


Cells(m; 6).NumberFormat = "0,00"


If CurDate <> DateMas(k; i) Then


DohPriobr(k; i) = (BumPrice(k) / Price(k; i) - 1) * 36500 / (CurDate - DateMas(k; i))


Cells(m; 7) = DohPriobr(k; i)


Cells(m; 7).NumberFormat = "0,00"


End If


End If


m = m + 1


End If


Next i


Range(Cells(m; 1); Cells(m; 8)).Interior.ColorIndex = 15


m = m + 1


End If


Next k


Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlLeft).Weight = xlThin


Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlRight).Weight = xlThin


Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlTop).Weight = xlThin


Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlBottom).Weight = xlThin


Range(Cells(7; 1); Cells(m - 1; 8)).BorderAround Weight:=xlMedium


If DialogPrint("Портфель1"; 1) Then Exit Sub


Worksheets("Портфель2").Select


Cells(4; 3) = CurDate


SumPog11 = 0


SumPog22 = 0


SumPriobr11 = 0


SumPriobr22 = 0


AllVol = 0


m = 7


Range("A7:H200").Delete shift:=xlToLeft


For k = 1 To BumNum


If Volume(k; BeginIndex(k)) > 0 Then


SumPog1(k) = 0


SumPog2(k) = 0


SumPriobr1(k) = 0


SumPriobr2(k) = 0


BumVol(k) = 0


For i = BeginIndex(k) To dates(k)


If Volume(k; i) > 0 Then


SumPog1(k) = SumPog1(k) + DohPog(k; i) * Volume(k; i) * (DatePog(k) - DateMas(k; i))


SumPog2(k) = SumPog2(k) + Volume(k; i) * (DatePog(k) - DateMas(k; i))


If CurDate <> DateMas(k; i) Then


SumPriobr1(k) = SumPriobr1(k) + DohPriobr(k; i) * Volume(k; i) * (CurDate - DateMas(k; i))


SumPriobr2(k) = SumPriobr2(k) + Volume(k; i) * (CurDate - DateMas(k; i))


End If


SumPog11 = SumPog11 + SumPog1(k)


SumPog22 = SumPog22 + SumPog2(k)


SumPriobr11 = SumPriobr11 + SumPriobr1(k)


SumPriobr22 = SumPriobr22 + SumPriobr2(k)


BumVol(k) = BumVol(k) + Volume(k; i)


AllVol = AllVol + Volume(k; i)


End If


Next i


Cells(m; 1) = Bum(k)


Cells(m; 1).NumberFormat = "0"


Cells(m; 2) = BumVol(k)


Cells(m; 2).NumberFormat = "0"


Cells(m; 3) = SumPog1(k) / SumPog2(k)


Cells(m; 3).NumberFormat = "0,00"


If SumPriobr2(k) > 0 And SumPriobr1(k) > 0 Then


Cells(m; 4) = SumPriobr1(k) / SumPriobr2(k)


Cells(m; 4).NumberFormat = "0,00"


End If


m = m + 1


End If


Next k


Cells(m; 1) = "Итого"


Cells(m; 1).Font.Bold = True


Cells(m; 1).HorizontalAlignment = xlCenter


Cells(m; 2) = AllVol


Cells(m; 2).NumberFormat = "0"


Cells(m; 3) = SumPog11 / SumPog22


Cells(m; 3).NumberFormat = "0,00"


Cells(m; 4) = SumPriobr11 / SumPriobr22


Cells(m; 4).NumberFormat = "0,00"


Range(Cells(m; 1); Cells(m; 4)).Interior.ColorIndex = 15


Range(Cells(7; 1); Cells(m; 4)).Borders(xlLeft).Weight = xlThin


Range(Cells(7; 1); Cells(m; 4)).Borders(xlRight).Weight = xlThin


Range(Cells(7; 1); Cells(m; 4)).Borders(xlTop).Weight = xlThin


Range(Cells(7; 1); Cells(m; 4)).Borders(xlBottom).Weight = xlThin


Range(Cells(7; 1); Cells(m; 4)).BorderAround Weight:=xlMedium


Range(Cells(m; 1); Cells(m; 4)).BorderAround Weight:=xlMedium


Cells(m + 1; 1) = "Стоимость портфеля по балансу"


Cells(m + 2; 1) = "Текущая стоимость потфеля"


Cells(m + 1; 1).Font.Bold = True


Cells(m + 2; 1).Font.Bold = True


Range(Cells(m + 1; 1); Cells(m + 2; 4)).BorderAround Weight:=xlMedium


Cells(m + 1; 4) = PortfelBalance * 10


Cells(m + 1; 4).NumberFormat = "### ### ###,00"


Cells(m + 1; 4).Font.Bold = True


Cells(m + 2; 4) = PortfelCost * 10


Cells(m + 2; 4).NumberFormat = "### ### ###,00"


Cells(m + 2; 4).Font.Bold = True


If DialogPrint("Портфель2"; 1) Then Exit Sub


End Sub


'-------------------------------- Печать Журнала лицевого учета ---------


Sub PrintMagazine()


Dim Sheet As Object


Dim i; k; BumNum; m; m1; j As Long


Dim Bum(ConstMaxBum) As Long


Dim Volume(); BiginIndex(); dates(); V(); Vol As Integer


Dim sum; Price() As Double


Dim DateMas() As Date


Dim Flag; BumIndex() As Boolean


Dim ComBirga; ComMas(); MagMas(); Mag(4) As Double


CurDate = Worksheets("Врем").Cells(1; 4)


i = 2


Flag = True


Do While Worksheets("Сделки").Cells(i; 1) <> Empty


If Worksheets("Сделки").Cells(i; 1) = CurDate And _


Worksheets("Сделки").Cells(i; 2) = DilerConst Then


Flag = False


Exit Do


End If


i = i + 1


Loop


If Flag Then


MsgBox "Сделок в текущий день не было"


Exit Sub


End If


Set Sheet = Worksheets("Бумаги")


i = 2


BumNum = 0


While Sheet.Cells(i; 1) <> Empty


If (Sheet.Cells(i; 2) <= CurDate And Sheet.Cells(i; 3) >= CurDate) Then


Bum(BumNum + 1) = Sheet.Cells(i; 1)


BumNum = BumNum + 1


End If


i = i + 1


Wend


Worksheets("Сделки").Select


Range("B2").Sort Key1:=Range("A2"); Order1:=xlAscending; _


Key2:=Range("D2"); Order2:=xlAscending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


ReDim Volume(BumNum; MaxCount)


ReDim Price(BumNum; MaxCount)


ReDim DateMas(BumNum; MaxCount)


ReDim dates(BumNum); V(BumNum); BeginIndex(BumNum)


ReDim BumIndex(BumNum); ComMas(BumNum)


ReDim MagMas(BumNum; 4)


For i = 1 To BumNum


ComMas(i) = 0


dates(i) = 1


Next i


i = 2


While Cells(i; 1) <> Empty And CurDate > Cells(i; 1)


If Cells(i; 2) = DilerConst And Cells(i; 7) <> "списание" _


And Cells(i; 7) <> "зачисление" Then


Flag = True


For k = 1 To BumNum ' поиск номера бумаги


If Cells(i; 3) = Bum(k) Then


Flag = False


Exit For


End If


Next k


If Flag Then GoTo cont


If Not IsEmpty(Cells(i; 4)) Then


Volume(k; dates(k)) = Cells(i; 6)


Price(k; dates(k)) = Cells(i; 4)


DateMas(k; dates(k)) = Cells(i; 1)


dates(k) = dates(k) + 1


V(k) = V(k) + Cells(i; 6)


Else


V(k) = V(k) - Cells(i; 6)


End If


End If


cont:


i = i + 1


Wend


For k = 1 To BumNum


For i = dates(k) To 1 Step -1


If V(k) > Volume(k; i) Then


V(k) = V(k) - Volume(k; i)


Else


Volume(k; i) = V(k)


BeginIndex(k) = i


Exit For


End If


Next i


Next k


For k = 1 To BumNum


BumIndex(k) = False


If V(k) > 0 Then BumIndex(k) = True


Next k


ComBirga = Worksheets("Инфо").Cells(1; 2)


i = 2


While Cells(i; 1) <> Empty


If (Cells(i; 1) = CurDate And Cells(i; 2) = DilerConst) _


And (Cells(i; 7) <> "зачисление" And Cells(i; 7) <> "списание") Then


For k = 1 To BumNum


If Cells(i; 3) = Bum(k) Then


BumIndex(k) = True


If Not IsEmpty(Cells(i; 4)) Then


ComMas(k) = ComMas(k) + Format(Cells(i; 4) * Cells(i; 6) * ComBirga * 0,1 + 0,0001; "0,00")


Else


If Cells(i; 5) <> 100 Then


ComMas(k) = ComMas(k) + Format(Cells(i; 5) * Cells(i; 6) * ComBirga * 0,1 + 0,0001; "0,00")


End If


End If


End If


Next k


End If


i = i + 1


Wend


Set Sheet = Worksheets("Сделки")


Worksheets("Журнал лицевого учета").Select


Cells(5; 1) = CurDate


Cells(49; 2) = ComBirga


Покупка = False


Продажа = False


Vol = 0


sum = 0


For k = 1 To BumNum


If BumIndex(k) Then


m = 7


Range("A7:C43").ClearContents


Range("E7:G43").ClearContents


Vol = 0


sum = 0


For i = BeginIndex(k) To dates(k)


If Volume(k; i) > 0 Then


Cells(m; 1) = DateMas(k; i)


Cells(m; 2) = Volume(k; i)


Cells(m; 3) = Format(Price(k; i); "0,00")


Vol = Vol + Volume(k; i)


sum = sum + Format(Price(k; i); "0,00") * Volume(k; i) * 10


m = m + 1


End If


Next i


Cells(6; 2) = Vol


Cells(6; 4) = sum


Cells(49; 3) = ComMas(k)


Cells(5; 3) = CStr(Bum(k)) + "MFTS"


i = 2


m1 = 7


j = BeginIndex(k)


While Sheet.Cells(i; 1) <> Empty


If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 3) = Bum(k) And _


Sheet.Cells(i; 7) <> "зачисление" And Sheet.Cells(i; 7) <> "списание" And _


Sheet.Cells(i; 2) = DilerConst Then


If Not IsEmpty(Sheet.Cells(i; 4)) Then


Покупка = True


Cells(m; 1) = Sheet.Cells(i; 1)


Cells(m; 2) = Sheet.Cells(i; 6)


Cells(m; 3) = Sheet.Cells(i; 4)


Volume(k; dates(k)) = Sheet.Cells(i; 6)


Price(k; dates(k)) = Sheet.Cells(i; 4)


DateMas(k; dates(k)) = Sheet.Cells(i; 4)


dates(k) = dates(k) + 1


m = m + 1


Else


Продажа = True


Vol = Sheet.Cells(i; 6)


If Vol < Volume(k; j) Then


Cells(m1; 5) = Vol


Cells(m1; 6) = Format(Price(k; j); "0,00")


Cells(m1; 7) = Sheet.Cells(i; 5)


Volume(k; j) = Volume(k; j) - Sheet.Cells(i; 6)


m1 = m1 + 1


Else


If Volume(k; j) = 0 Then j = j + 1


While Vol > Volume(k; j) And Volume(k; j) <> Empty


Cells(m1; 5) = Volume(k; j)


Cells(m1; 6) = Format(Price(k; j); "0,00")


Cells(m1; 7) = Sheet.Cells(i; 5)


Vol = Vol - Volume(k; j)


j = j + 1


m1 = m1 + 1


Wend


If Volume(k; j) <> Empty Then


Cells(m1; 5) = Vol


Cells(m1; 6) = Format(Price(k; j); "0,00")


Cells(m1; 7) = Sheet.Cells(i; 5)


Volume(k; j) = Volume(k; j) - Vol


m1 = m1 + 1


End If


End If


End If


End If


i = i + 1


Wend


no_do:


MagMas(k; 1) = Format(Cells(46; 3); "0,00")


MagMas(k; 2) = Format(Cells(47; 3); "0,00")


MagMas(k; 3) = Format(Cells(48; 3); "0,00")


MagMas(k; 4) = Format(Cells(45; 4); "0,00")


If DialogPrint("Журнал лицевого учета"; 1) Then Exit Sub


End If


Next k


' Формирование журнала оборотов


Worksheets("ЖурналОборотов").Select


Cells(6; 1) = CurDate


Range(Cells(7; 1); Cells(100; 6)).Delete shift:=xlToLeft


m = 7


For k = 1 To BumNum


If BumIndex(k) Then


Cells(m; 1) = CStr(Bum(k)) + "MFTS"


Cells(m; 2) = MagMas(k; 1)


Cells(m; 3) = MagMas(k; 2)


Cells(m; 4) = MagMas(k; 3)


Cells(m; 5) = MagMas(k; 4)


Cells(m; 6) = ComMas(k)


Cells(m; 1).Font.Bold = True


Cells(m; 2).NumberFormat = "0,00"


Cells(m; 3).NumberFormat = "0,00"


Cells(m; 4).NumberFormat = "0,00"


Cells(m; 5).NumberFormat = "0,00"


Cells(m; 6).NumberFormat = "0,00"


m = m + 1


End If


Next k


For i = 2 To 6


sum = 0


For m1 = 7 To m - 1


sum = sum + Cells(m1; i)


Next m1


Cells(m; i) = sum


Cells(m; i).NumberFormat = "0,00"


Next i


Mag(1) = Cells(m; 2)


Mag(2) = Cells(m; 3)


Mag(3) = Cells(m; 4)


Mag(4) = Cells(m; 6)


If Cells(m; 2) > 0 Then Cells(m + 1; 2) = "Дт" + S192


If Cells(m; 2) < 0 Then Cells(m + 1; 2) = "Кт" + S192


If Cells(m; 3) > 0 Then Cells(m + 1; 3) = "Дт" + S904


If Cells(m; 3) < 0 Then Cells(m + 1; 3) = "Кт" + S904


If Cells(m; 4) > 0 Then Cells(m + 1; 4) = "Кт" + S960


If Cells(m; 4) < 0 Then Cells(m + 1; 4) = "Дт" + S970


Cells(m + 1; 6) = "Дт" + S970


Range(Cells(m + 1; 2); Cells(m + 2; 6)).HorizontalAlignment = xlCenter


Range(Cells(m + 1; 1); Cells(m + 1; 6)).Interior.ColorIndex = 15


Cells(m + 2; 6) = "Кт" + S904


Cells(m + 2; 6).Interior.ColorIndex = 15


Range(Cells(7; 1); Cells(m - 1; 6)).Borders(xlRight).Weight = xlThin


Range(Cells(m; 1); Cells(m; 6)).Borders(xlRight).LineStyle = xlDouble


Range(Cells(m; 1); Cells(m; 6)).Borders(xlLeft).LineStyle = xlDouble


Range(Cells(m; 1); Cells(m; 6)).Borders(xlTop).LineStyle = xlDouble


Range(Cells(m; 1); Cells(m; 6)).Borders(xlBottom).LineStyle = xlDouble


Cells(m + 2; 4) = "Подпись ответственного"


Cells(m + 3; 4) = "сотрудника"


Range(Cells(m + 2; 4); Cells(m + 3; 4)).Font.Size = 8


Range(Cells(m + 2; 4); Cells(m + 3; 4)).HorizontalAlignment = xlLeft


Range(Cells(7; 1); Cells(m + 4; 6)).BorderAround Weight:=xlMedium


Range(Cells(m + 2; 3); Cells(m + 4; 3)).Borders(xlRight).Weight = xlThin


Range(Cells(m + 1; 1); Cells(m + 1; 5)).Borders(xlBottom).Weight = xlThin


Cells(m + 2; 6).Borders(xlLeft).Weight = xlThin


Cells(m + 2; 6).Borders(xlBottom).Weight = xlThin


If DialogPrint("ЖурналОборотов"; 1) Then Exit Sub


' печать мемориального ордера


Dim StrS As String


With DialogSheets("ДиалогОперация")


.Show


If .OptionButtons(1).Value = xlOn Then StrS = "Покупка"


If .OptionButtons(2).Value = xlOn Then StrS = "Продажа"


If .OptionButtons(3).Value = xlOn Then StrS = "Погашение"


If .OptionButtons(4).Value = xlOn Then StrS = "Покупка / Продажа"


If .OptionButtons(5).Value = xlOn Then StrS = "Покупка / Погашение"


End With


Worksheets("Ордер").Select


i = CInt(InputBox("Введите номер 1-го ордера"))


If Mag(1) > 0 Then


If Mag(2) < 0 Then


If MemoOrder(i; min(Mag(1); Mag(2)); S192; S904; 0; _


StrS + " РКО за " + CStr(CurDate)) Then Exit Sub


i = i + 1


End If


If Mag(3) > 0 Then


If MemoOrder(i; min(Mag(1); Mag(3)); S192; S960; 0; _


"Доход от продажи РКО за " + CStr(CurDate)) Then Exit Sub


i = i + 1


End If


End If


If Mag(2) > 0 Then


If Mag(1) < 0 Then


If MemoOrder(i; min(Mag(2); Mag(1)); S904; S192; 0; _


StrS + " РКО за " + CStr(CurDate)) Then Exit Sub


i = i + 1


End If


If Mag(3) > 0 Then


If MemoOrder(i; min(Mag(2); Mag(3)); S904; S960; 0; _


"Доход от продажи РКО за " + CStr(CurDate)) Then Exit Sub


i = i + 1


End If


End If


If Mag(3) < 0 Then


If Mag(1) < 0 Then


If MemoOrder(i; min(Mag(3); Mag(1)); SR970; S192; 0; _


"Отрицательная разница от продажи РКО за " + CStr(CurDate)) Then Exit Sub


i = i + 1


End If


If Mag(2) < 0 Then


If MemoOrder(i; min(Mag(3); Mag(2)); SR970; S904; 0; _


"Отрицательная разница от продажи РКО за " + CStr(CurDate)) Then Exit Sub


i = i + 1


End If


End If


If Format(Mag(4)) > 0 Then


If MemoOrder(i; Mag(4); S970; S904; 0; _


"Комиссия ВКБ в т.ч. НДС " + CStr(Format(Mag(4) / 6; "0,00"))) Then Exit Sub


End If


End Sub


'-------------------------------------------- Memo Order


Function MemoOrder(Num; sum As Double; n1; n2; Pos As Integer; Order As String)


Dim i As Integer


Dim Flag As Boolean


Dim Str; Str1 As String


Str1 = ""


Str = CStr(sum)


Str = Format(Str; "000000000000,00")


Flag = False


For i = 1 To Len(Str)


If Mid(Str; i; 1) = "," Then


If CInt(Right(Str; 2)) = 0 Then


Str1 = Str1 + "="


Exit For


Else


Str1 = Str1 + "-"


End If


Else


If Mid(Str; i; 1) <> "0" Then Flag = True


If Mid(Str; i; 1) <> "0" Or Flag Then Str1 = Str1 + Mid(Str; i; 1)


End If


Next i


Cells(3; 6) = Str1


If Pos > 0 Then


If n1 > 6 Then


Cells(5; 6) = Worksheets("Клиенты").Cells(2; n1)


Else


Cells(5; 6) = Worksheets("Клиенты").Cells(Pos; n1)


End If


If n2 > 6 Then


Cells(10; 6) = Worksheets("Клиенты").Cells(2; n2)


Else


Cells(10; 6) = Worksheets("Клиенты").Cells(Pos; n2)


End If


Else


Cells(5; 6) = n1


Cells(10; 6) = n2


End If


Cells(16; 1) = Order


Cells(1; 6) = Num


Range("A1:H24").Copy


Range("A32").Select


ActiveSheet.Paste


If DialogPrint("Ордер"; 2) Then


MemoOrder = True


Else


MemoOrder = False


End If


End Function


'-------------------------------- Печать биржевой информации -------


Sub PrintBirgaInfo()


Dim Sheet As Object


Dim Flag As Boolean


Dim i; n; k; Num As Long


Dim mas(3) As Double


Set Sheet = Worksheets("Биржа")


CurDate = Worksheets("Врем").Cells(1; 4)


Sheets("Биржевая Информация").Select


Cells(3; 10) = CurDate


For i = 1 To 3


mas(i) = 0


Next i


i = 2


n = 7


Range(Cells(n; 1); Cells(n + 100; 17)).Delete shift:=xlToLeft


Flag = True


Do While Sheet.Cells(i; 1) <> Empty


If Sheet.Cells(i; 1) = CurDate Then


Flag = False


Cells(n; 1) = Sheet.Cells(i; 2)


Cells(n; 7) = Sheet.Cells(i; 3)


Cells(n; 9) = Sheet.Cells(i; 4)


Cells(n; 10) = Sheet.Cells(i; 5)


Cells(n; 5).Font.Bold = True


Cells(n; 11) = Sheet.Cells(i; 6)


Cells(n; 11).Font.Bold = True


Cells(n; 12) = Sheet.Cells(i; 7)


Cells(n; 13) = Sheet.Cells(i; 8)


k = 2


While Worksheets("Бумаги").Cells(k; 1) <> Empty


If Worksheets("Бумаги").Cells(k; 1) = Cells(n; 1) Then


Cells(n; 2) = Worksheets("Бумаги").Cells(k; 2)


Cells(n; 3) = Worksheets("Бумаги").Cells(k; 3)


Cells(n; 6) = Worksheets("Бумаги").Cells(k; 4)


End If


k = k + 1


Wend


Cells(n; 2).NumberFormat = "ДД.ММ.ГГ"


Cells(n; 3).NumberFormat = "ДД.ММ.ГГ"


Cells(n; 6).NumberFormat = "# ##0"


Cells(n; 9).NumberFormat = "# ##0"


Range(Cells(n; 10); Cells(n; 17)).NumberFormat = "0,00"


Cells(n; 4) = Cells(3; 10) - Cells(n; 2)


Cells(n; 5) = Cells(n; 3) - Cells(3; 10)


Cells(n; 8) = Cells(n; 9) / Cells(n; 6) * 100


Cells(n; 8).NumberFormat = "0,00"


If Cells(n; 7) <> 0 And Cells(n; 5) <> 0 Then


Cells(n; 14) = (100 / Cells(n; 10) - 1) * 36500 / Cells(n; 5) * 0,85


Cells(n; 15) = (100 / Cells(n; 10) - 1) * 36500 / Cells(n; 5)


Cells(n; 16) = (100 / Cells(n; 11) - 1) * 36500 / Cells(n; 5) * 0,85


Cells(n; 16).Font.Bold = True


Cells(n; 17) = (100 / Cells(n; 11) - 1) * 36500 / Cells(n; 5)


mas(1) = mas(1) + Cells(n; 5) * Cells(n; 9) * Cells(n; 14)


mas(2) = mas(2) + Cells(n; 5) * Cells(n; 9) * Cells(n; 16)


mas(3) = mas(3) + Cells(n; 5) * Cells(n; 9)


End If


n = n + 1


End If


i = i + 1


Loop


If Flag Then


MsgBox "Биржевой информации нет"


Exit Sub


End If


Num = n


Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlLeft).Weight = xlThin


Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlRight).Weight = xlThin


Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlTop).Weight = xlThin


Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlBottom).Weight = xlThin


Range(Cells(7; 1); Cells(Num - 1; 17)).BorderAround Weight:=xlMedium


Cells(Num; 1) = "Итого"


Cells(Num; 1).Font.Bold = True


Cells(Num; 1).HorizontalAlignment = xlCenter


Cells(Num; 14) = mas(1) / mas(3)


Cells(Num; 15) = mas(1) / mas(3) / 0,85


Cells(Num; 16) = mas(2) / mas(3)


Cells(Num; 16).Font.Bold = True


Cells(Num; 17) = mas(2) / mas(3) / 0,85


Range(Cells(Num; 14); Cells(Num; 17)).NumberFormat = "0,00"


For i = 1 To 3


mas(i) = 0


Next i


For i = 7 To Num - 1


mas(1) = mas(1) + Cells(i; 6)


mas(2) = mas(2) + Cells(i; 7)


mas(3) = mas(3) + Cells(i; 9)


Next


Cells(Num; 6) = mas(1)


Cells(Num; 6).NumberFormat = "# ##0"


Cells(Num; 7) = mas(2)


Cells(Num; 9) = mas(3)


Cells(Num; 9).NumberFormat = "# ##0"


Cells(Num; 8) = mas(3) / mas(1) * 100


Cells(Num; 8).NumberFormat = "0,00"


Cells(Num; 7).Font.Bold = True


Cells(Num; 9).Font.Bold = True


Range(Cells(Num; 1); Cells(Num; 17)).BorderAround Weight:=xlMedium


Range(Cells(Num; 1); Cells(Num; 17)).Interior.ColorIndex = 15


If DialogPrint("Биржевая Информация"; 1) Then Exit Sub


End Sub


'-------------------------------- Дата -----------------------------


Sub DateChange()


With DialogSheets("ДиалогДата")


.EditBoxes.Text = CurDate


.EditBoxes.InputType = 1


.Show


CurDate = Worksheets("Врем").Cells(1; 4)


If Button = False Then


CurDate = Date


Worksheets("Врем").Cells(1; 4) = CurDate


MsgBox "Дата восстановлена"


Else


If IsDate(.EditBoxes.Text) Then


CurDate = .EditBoxes.Text


MsgBox "Дата изменена"


Worksheets("Врем").Cells(1; 4) = CurDate


Exit Sub


End If


MsgBox "Ошибка при вводе даты"


End If


End With


End Sub


'-------------------------------- Формирование текущей таблицы бумаг ----


Sub FormBum()


Dim L As Object


Dim i; k As Integer


Set L = Worksheets("Бумаги")


CurDate = Worksheets("Врем").Cells(1; 4)


i = 2


k = 1


While L.Cells(i; 1) <> Empty


If L.Cells(i; 2) <= CurDate And L.Cells(i; 3) >= CurDate Then


Worksheets("Врем").Cells(k; 1) = L.Cells(i; 1)


k = k + 1


End If


i = i + 1


Wend


Worksheets("Врем").Cells(1; 2) = k - 1


Set L = Worksheets("Клиенты")


i = 1


While L.Cells(i; 1) <> Empty


i = i + 1


Wend


Worksheets("Врем").Cells(1; 3) = i - 2


End Sub


' ------------------------------- Остатки на бирже --------------------


Sub EditOstBirga(CliNum As Long)


Dim ComBirga; sum; OstBegin As Double


Dim DoFlag As Boolean


Dim Sheet; Sheet1 As Object


Dim i; k; RowNum As Long


Set Sheet = Worksheets("ОстаткиБиржа")


Set Sheet1 = Worksheets("Сделки")


CurDate = Worksheets("Врем").Cells(1; 4)


ComBirga = Worksheets("Инфо").Cells(1; 2)


Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _


Key2:=Sheet.Range("A2"); Order2:=xlDescending; _


Header:=xlYes; OrderCustom:=1; _


MatchCase:=False; Orientation:=xlTopToBottom


OstBegin = 0


RowNum = 0


k = 2


DoFlag = True


Do While Sheet.Cells(k; 1) <> Empty


If Sheet.Cells(k; 2) = CliNum And DoFlag Then


If Sheet.Cells(k; 1) < CurDate Then


OstBegin = Sheet.Cells(k; 6)


Else


Do While Sheet.Cells(k; 1) <> Empty


If Sheet.Cells(k; 2) <> CliNum Then Exit Do


If Sheet.Cells(k; 1) = CurDate Then


OstBegin = Sheet.Cells(k; 3)


RowNum = k


Exit Do


End If


k = k + 1


Loop


End If


DoFlag = False


End If


k = k + 1


Loop


If RowNum = 0 Then RowNum = k


k = RowNum


sum = 0


i = 2


While Sheet1.Cells(i; 1) <> Empty


If Sheet1.Cells(i; 1) = CurDate And Sheet1.Cells(i; 2) = CliNum Then


If Sheet1.Cells(i; 4) <> Empty Then


sum = sum - _


Sheet1.Cells(i; 4) * Sheet1.Cells(i; 6) * 10000 - _


Format(Sheet1.Cells(i; 4) * Sheet1.Cells(i; 6) * 100 * ComBirga + 0,0001; "0,00")


Else


If Sheet1.Cells(i; 5) = 100 Then ComBirga = 0


sum = sum + _


Sheet1.Cells(i; 5) * Sheet1.Cells(i; 6) * 10000 - _


Format(Sheet1.Cells(i; 5) * Sheet1.Cells(i; 6) * 100 * ComBirga + 0,0001; "0,00")


End If


End If


i = i + 1


Wend


Sheet.Cells(k; 3) = OstBegin


Sheet.Cells(k; 6) = OstBegin + sum + Sheet.Cells(k; 4)


Sheet.Cells(k; 1) = CurDate


Sheet.Cells(k; 2) = CliNum


End Sub


Sub Ok()


Button = True


End Sub


Sub Cancel()


Button = False


End Sub


Sub ПросмотрОтчетов()


Просмотр = True


End Sub


Sub Останов()


ExitVar = True


End Sub


Sub EndOf()


Dim i As Long


i = 2


While Cells(i; 1) <> Empty


i = i + 1


Wend


Cells(i; 1).Select


End Sub


Function DialogPrint(Str As String; Count As Integer)


With DialogSheets("ДиалогПечать")


AgainView:


Просмотр = False


ExitVar = False


Button = False


.Show


If Просмотр Then


Worksheets(Str).PrintPreview


GoTo AgainView


End If


If ExitVar Then


DialogPrint = True


Else


DialogPrint = False


End If


If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=Count


End With


End Function


Function min(a; b)


If Abs(a) > Abs(b) Then


min = Abs(b)


Else


min = Abs(a)


End If


End Function


Приложение № 1.3. Журнал оборотов.


Приложение № 1.4. Журнал лицевого учета.


Приложение № 1.5. Мемориальный ордер.


Приложение № 1.6. Отчет инвестору о совершенных сделках.


Приложение № 1.7. Структура пртфеля в разрезе по бумагам.


Приложение № 1.8. Структура портфеля обобщенная.


Приложение № 1.9. Биржевая информация.


Приложение № 1.10. Еженедельный отчет в депозитарий.


Приложение № 1.11. Ежемесячный отчет в депозитарий.



Приложение № 2. Программа анализа эффективности вложений в РКО.
Приложение 2.1. Текст программы.

Option Explicit


Option Base 1


'*************************** Сортировка *************************


' Процедура сортировки страницы


' Параметры:


' Sheet - лист


' RangeSort - первая ячейка для сортировки


' StrKey1 - сортировка сначала производится по этому столбцу


' StrKey2 - а затем по этому


' StrKey3 - и по этому в последнюю очередь


' OrderType1 - Направление сортировки по столбцу StrKey1


' OrderType2 - Направление сортировки по столбцу StrKey2


' OrderType3 - Направление сортировки по столбцу StrKey3


' Пример использования :


' Call Сортировка(Worksheets("Биржа"); "A2"; "A2"; "B2"; "C2"; xlAscending; xlDescending; xlAscending)


'*****************************************************************


Sub Сортировка(Sheet As Object; RangeSort As String; StrKey1 As String; _


StrKey2 As String; StrKey3 As String; TypeOrder1 As Integer; TypeOrder2 As Integer; TypeOrder3 As Integer)


Sheet.Range(RangeSort).Sort Key1:=Sheet.Range(StrKey1); Order1:=TypeOrder1; Key2:= _


Sheet.Range(StrKey2); Order2:=TypeOrder2; Key3:=Sheet.Range(StrKey3); Order3:= _


TypeOrder3; Header:=xlGuess; OrderCustom:=1; MatchCase:=False _


; Orientation:=xlTopToBottom


End Sub


'******************************* Поиск ***************************


' Функция поиска значения в определенном столбце с определенной позиции вперед/назад


' Параметры:


' Sheet - лист


' Column - колонка для поиска


' Row - начальная строка поиска


' Text - искомое значение


' Direction - направление поиска:


' 1 - вперед


' -1 - назад


' Пример использования :


' MsgBox Поиск(Worksheets("Биржа"); 4; 8; 5; -1)


'*******************************************************************


Function Поиск(Sheet As Object; Column As Integer; Row As Integer; Text; Direction As Integer)


Dim i As Integer


Dim Compare; Compare1


If Direction <> 1 And Direction <> -1 Then


MsgBox "Неверно задано направление поиска"


End


End If


On Error GoTo ErrorFuncFind


i = Row


While Not IsEmpty(Sheet.Cells(i; Column))


If IsDate(Text) Then


Compare = CDate(Sheet.Cells(i; Column))


Compare1 = CDate(Text)


Else


If IsNumeric(Text) Then


Compare = CDbl(Sheet.Cells(i; Column))


Compare1 = CDbl(Text)


Else


Compare = CStr(Sheet.Cells(i; Column))


Compare1 = CStr(Text)


End If


End If


If Compare = Compare1 Then


Поиск = i


Exit Function


End If


i = i + Direction


Wend


Поиск = 0


Exit Function


ErrorFuncFind:


MsgBox "Несовпадение типов данных в вызове" + Chr(13) + "функции Поиск и в искомом столбце." _


+ Chr(13) + Chr(13) + "Данные разных типов в столбце базы" + Chr(13)


End


End Function


Option Explicit


Option Base 1


' ---------------------------- Общая часть -------------------------------------


' внешние параметры


' тип данных для записи информации о бумаге


Type BumRecord


Num As Long ' номер бумаги


DateStart As Date ' дата выпуска


DateEnd As Date 'дата погашения


Volume As Long 'объем выпуска


Present As Boolean


End Type


' тип данных для записи информации о структуре портфеля


Type PortfelRecord


Dates() As Date ' дата покупки


Price() As Single ' цена покупки


Volume() As Long ' количество


StartPos() As Integer ' начальный индекс бумаги в массиве бумаг данной серии


EndPos() As Integer ' конечный индекс бумаги в массиве бумаг данной серии


VolumeAll() As Long ' количество бумаг данной серии в портфеле


End Type


' тип данных для записи информации об индксах портфеля и рынка


Type IndexRecord


Dates As Date


Portfel As Single


Birga As Single


End Type


Const MaxBum = 500 ' максимальное количество бумаг в портфеле одной серии


Const DilerConst = 1000900000 ' константа для выборки портфеля дилера


Dim MaxPeriod As Long ' максимальное количество дней для анализа(можно вычислить как последний день анализа-первый день анализа+1)


Dim Portfel As PortfelRecord ' данные о портфеле


Dim BumInfo() As BumRecord ' данные о бумагах


Dim BumNum As Integer ' количество различных серий бумаг


Dim Index() As IndexRecord ' индексы портфеля и рынка


Dim Revenue() As IndexRecord ' доходность к погашению портфеля и рынка


Dim BirgaInfo() As Single ' текущая биржевая информация по каждой серии


Dim CoefIndex As Long ' индекс коэффициента


Dim RevIndex As Long ' индекс доходности


Dim EvalDate As Date ' дата для расчета


Dim StartDate As Date ' начальная дата для постоения индексов


Dim PortfelPricePred; BirgaPricePred As Single


Dim Analize1; Analize2 As Boolean


'------------------------------- Процедура расчета портфеля (главный модуль)-


Sub АнализПортфель()


Dim Sheet As Object


Dim i; Ind As Integer


Dim SumCell As Long


Dim CurDate As Date


Set Sheet = Worksheets("Бумаги")


BumNum = 0


While Sheet.Cells(BumNum + 2; 1) <> Empty


BumNum = BumNum + 1


Wend


With DialogSheets("ДиалогДата")


.EditBoxes(1).Text = "05.02.97"


.EditBoxes(2).Text = "30.05.97"


.EditBoxes(1).InputType = xlDate


.EditBoxes(2).InputType = xlDate


.Show


StartDate = CDate(.EditBoxes(1).Text)


EvalDate = CDate(.EditBoxes(2).Text)


End With


With DialogSheets("ДиалогВыбор")


again:


.Show


Analize1 = False


Analize2 = False


If .CheckBoxes(1).Value = 1 Then Analize1 = True


If .CheckBoxes(2).Value = 1 Then Analize2 = True


If Not Analize1 And Not Analize2 Then


MsgBox "Выберите тип анализа"


GoTo again


End If


End With


MaxPeriod = EvalDate - StartDate + 1


ReDim Index(MaxPeriod)


ReDim Revenue(MaxPeriod)


Index(1).Portfel = 1


Index(1).Birga = 1


Index(1).Dates = StartDate


ReDim BumInfo(BumNum)


ReDim BirgaInfo(BumNum)


For i = 1 To BumNum


With BumInfo(i)


.Num = Sheet.Cells(i + 1; 1)


.DateStart = Sheet.Cells(i + 1; 2)


.DateEnd = Sheet.Cells(i + 1; 3)


.Volume = Sheet.Cells(i + 1; 4)


End With


Next i


ReDim Portfel.Dates(BumNum; MaxBum)


ReDim Portfel.Price(BumNum; MaxBum)


ReDim Portfel.Volume(BumNum; MaxBum)


ReDim Portfel.StartPos(BumNum)


ReDim Portfel.EndPos(BumNum)


ReDim Portfel.VolumeAll(BumNum)


For i = 1 To BumNum


Portfel.StartPos(i) = 1


Portfel.EndPos(i) = 0


Next i


Set Sheet = Worksheets("Сделки")


Call Сортировка(Worksheets("Сделки"); "A2"; "A2"; "B2"; "D2"; _


xlAscending; xlAscending; xlAscending)


i = 2


CoefIndex = 1


RevIndex = 1


CurDate = StartDate


While Sheet.Cells(i; 1) <> Empty And Sheet.Cells(i; 1) <= EvalDate


If Sheet.Cells(i; 2) = DilerConst Then


Ind = ReturnBum(Sheet.Cells(i; 3))


If Not IsEmpty(Sheet.Cells(i; 4)) Then


Portfel.EndPos(Ind) = Portfel.EndPos(Ind) + 1


Portfel.Dates(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 1)


Portfel.Price(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 4)


Portfel.Volume(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 6)


Portfel.VolumeAll(Ind) = Portfel.VolumeAll(Ind) + Sheet.Cells(i; 6)


Else


SumCell = Sheet.Cells(i; 6)


Portfel.VolumeAll(Ind) = Portfel.VolumeAll(Ind) - Sheet.Cells(i; 6)


While SumCell >= Portfel.Volume(Ind; Portfel.StartPos(Ind)) And SumCell > 0


SumCell = SumCell - Portfel.Volume(Ind; Portfel.StartPos(Ind))


Portfel.StartPos(Ind) = Portfel.StartPos(Ind) + 1


Wend


If SumCell < Portfel.Volume(Ind; Portfel.StartPos(Ind)) Then


Portfel.Volume(Ind; Portfel.StartPos(Ind)) = Portfel.Volume(Ind; Portfel.StartPos(Ind)) - SumCell


End If


End If


End If


' в данном месте можео провести анализ на основе данных о портфеле за текущую дату


' дата текущая - это Worksheets("Сделки").cells(i-1;1)


' т.е. анализ за эту текущую дату(доходность к погашению портфеля, индекс,...)


If StartDate <= Sheet.Cells(i; 1) And Sheet.Cells(i; 1) <> CurDate Then


Call Процедура_анализа(Sheet.Cells(i; 1))


CoefIndex = CoefIndex + 1


RevIndex = RevIndex + 1


CurDate = Sheet.Cells(i; 1)


End If


i = i + 1


Wend


If Analize1 Then


Worksheets("РезультатИндекс").Cells(1; 2) = "Портфель"


Worksheets("РезультатИндекс").Cells(1; 3) = "Рынок"


For i = 1 To CoefIndex - 1


Worksheets("РезультатИндекс").Cells(i + 1; 1) = Index(i).Dates


Worksheets("РезультатИндекс").Cells(i + 1; 2) = Index(i).Portfel


Worksheets("РезультатИндекс").Cells(i + 1; 3) = Index(i).Birga


Next i


Charts("ДиаграммаИндекс").ChartWizard Source:=Sheets("РезультатИндекс").Range( _


"A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _


CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _


"Сравнение индекса портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _


"индекс"; ExtraTitle:=""


Charts("ДиаграммаИндекс").Select


MsgBox "Диаграмма Индекса"


End If


If Analize2 Then


Worksheets("РезультатДоходность").Cells(1; 2) = "Портфель"


Worksheets("РезультатДоходность").Cells(1; 3) = "Рынок"


For i = 1 To RevIndex - 1


Worksheets("РезультатДоходность").Cells(i + 1; 1) = Revenue(i).Dates


Worksheets("РезультатДоходность").Cells(i + 1; 2) = Revenue(i).Portfel


Worksheets("РезультатДоходность").Cells(i + 1; 3) = Revenue(i).Birga


Next i


Charts("ДиаграммаДоходность").ChartWizard Source:=Sheets("РезультатДоходность").Range( _


"A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _


CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _


"Сравнение доходности портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _


"доходность"; ExtraTitle:=""


Charts("ДиаграммаДоходность").Select


MsgBox "Диаграмма Доходности"


End If


End Sub


'--------------------- функция возвращает индекс бумаги в массиве BumInfo -------------


Function ReturnBum(bum As Long)


Dim i As Integer


For i = 1 To BumNum


If bum = BumInfo(i).Num Then


ReturnBum = i


Exit Function


End If


Next i


MsgBox "Не найдена бумага в списке бумаг. Занести бумагу в лист Бумаги"


End


End Function


'-------------------- Процедура построения индексов портфеля и рынка -----------------


Sub Процедура_анализа(CurDate As Date)


Dim i; k As Long


Dim Sheet As Object


Dim PortfelPrice; BirgaPrice As Single


Dim BirgaCoef; PortfelCoef As Single


Dim Doh; Volume As Single


Dim Flag As Boolean


Set Sheet = Worksheets("Биржа")


' поиск первой строки начала биржевой информации за текущий день


i = Поиск(Worksheets("Биржа"); 1; 2; CurDate; 1)


If i = 0 Then


'MsgBox "Биржевая информация за " + CStr(CDate(CurDate)) + "не найдена"


'End


CoefIndex = CoefIndex - 1


Exit Sub


End If


' занесение биржевой информации за текущий день


If i <> 0 Then


While Sheet.Cells(i; 1) = CurDate


If Sheet.Cells(i; 6) <> Empty Then


BirgaInfo(ReturnBum(Sheet.Cells(i; 2))) = Sheet.Cells(i; 6)


End If


i = i + 1


Wend


End If


' определение по каждой бумаге обращения на бирже


For i = 1 To BumNum


If BumInfo(i).DateStart <= CurDate And CurDate <= BumInfo(i).DateEnd Then


BumInfo(i).Present = True


Else


BumInfo(i).Present = False


End If


Next i


' если выбран анализ эффективной доходности портфеля и рынка


If Analize2 Then


Doh = 0


Volume = 0


Flag = True


For k = 1 To BumNum


If BumInfo(k).Present Then


For i = Portfel.StartPos(k) To Portfel.EndPos(k)


Flag = False


Doh = Doh + (100 / Portfel.Price(k; i) - 1) * 36500 * Portfel.Volume(k; i)


Volume = Volume + Portfel.Volume(k; i) * (BumInfo(k).DateEnd - Portfel.Dates(k; i))


Next i


End If


Next k


If Flag Then


RevIndex = RevIndex - 1


GoTo Anal1


End If


Revenue(RevIndex).Portfel = Doh / Volume


Revenue(RevIndex).Dates = CurDate


Flag = True


Doh = 0


Volume = 0


For k = 1 To BumNum


If BumInfo(k).Present Then


Flag = False


Doh = Doh + (100 / BirgaInfo(k) - 1) * 36500 * BumInfo(k).Volume


Volume = Volume + BumInfo(k).Volume * (BumInfo(k).DateEnd - CurDate)


End If


Next k


If Flag Then


RevIndex = RevIndex - 1


GoTo Anal1


End If


Revenue(RevIndex).Birga = Doh / Volume


End If


Anal1:


' если выбран анализ индекса портфеля и рынка


If Analize1 Then


' определение стоимости портфеля и биржи по средневзвешенным ценам


PortfelPrice = 0


BirgaPrice = 0


For i = 1 To BumNum


PortfelPrice = PortfelPrice + Portfel.VolumeAll(i) * BirgaInfo(i) * 10000


BirgaPrice = BirgaPrice + BumInfo(i).Volume * BirgaInfo(i) * 10000


Next i


' расчет индексов


If CoefIndex <> 1 Then


' поиск остатков за текущий день


k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1)


If k <> 0 Then


PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2)


End If


' вычисление коэффициента портфеля


If k <> 0 Then


PortfelCoef = (PortfelPrice - Worksheets("Остаток").Cells(k; 3) _


+ Worksheets("Остаток").Cells(k; 4)) / PortfelPricePred


Else


PortfelCoef = PortfelPrice / PortfelPricePred


End If


PortfelPricePred = PortfelPrice


' определение индекса портфеля за текущий день


Index(CoefIndex).Portfel = Index(CoefIndex - 1).Portfel * PortfelCoef


Index(CoefIndex).Dates = CurDate


BirgaCoef = BirgaPrice


k = Поиск(Worksheets("Бумаги"); 2; 2; CurDate; 1)


If k <> 0 Then


BirgaCoef = BirgaCoef - Worksheets("Бумаги").Cells(k; 4)


End If


k = Поиск(Worksheets("Бумаги"); 3; 2; CurDate; 1)


If k <> 0 Then


BirgaCoef = BirgaCoef + Worksheets("Бумаги").Cells(k; 4)


End If


BirgaCoef = BirgaCoef / BirgaPricePred


BirgaPricePred = BirgaPrice


' определение индекса биржи за текущий день


Index(CoefIndex).Birga = Index(CoefIndex - 1).Birga * BirgaCoef


Else


k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1)


If k <> 0 Then


PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2)


End If


PortfelPricePred = PortfelPrice


BirgaPricePred = BirgaPrice


End If


End If


End Sub


Sub Cancel()


End


End Sub


Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка.


Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.


Приложение № 3. Входные статистические данные.
Приложение 3.1. Информация о бумагах.





































































































Дата выпуска


Дата погашения


Объем выпуска


21019


14.11.96


13.02.97


60 000 000


21020


09.01.97


10.04.97


65 000 000


21021


13.02.97


15.05.97


55 000 000


21022


10.04.97


10.07.97


55 000 000


21023


10.07.97


09.10.97


40 000 000


21024


18.12.97


09.04.98


45 000 000


22002


29.08.96


27.02.97


25 000 000


22003


26.09.96


27.03.97


30 000 000


22004


24.10.96


24.04.97


40 000 000


22005


28.11.96


29.05.97


45 000 000


22006


19.12.96


19.06.97


90 000 000


22007


30.01.97


24.07.97


30 000 000


22008


27.02.97


28.08.97


55 000 000


22009


27.03.97


25.09.97


55 000 000


22010


24.04.97


23.10.97


60 000 000


22011


15.05.97


13.11.97


60 000 000


22012


29.05.97


27.11.97


60 000 000


24001


20.03.97


12.03.98


30 000 000


24002


08.05.97


07.05.98


25 000 000



Приложение 3.2. Информация о сделках.
































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Дата


№ бумаги


Цена приобр


Цена продажи


Кол-во


02.12.96


22004


92,99


62


02.12.96


22004


93,00


340


04.12.96


22005


77,50


6


05.12.96


22003


85,14


5


19.12.96


22006


80,05


300


19.12.96


22006


80,21


500


19.12.96


22006


80,37


259


01.01.97


22005


92,06


7


01.01.97


21021


0,00


1126


01.01.97


22005


0,00


95


01.01.97


22008


0,00


75


01.01.97


22009


0,00


457


01.01.97


22008


0,00


29


01.01.97


21020


0,00


642


01.01.97


22004


0,00


12


01.01.97


22006


0,00


20


01.01.97


22009


0,00


16


01.01.97


21020


0,00


90


01.01.97


22006


0,00


26


01.01.97


21020


0,00


20


01.01.97


22004


0,00


15


01.01.97


22006


0,00


5


01.01.97


21021


0,00


12


01.01.97


22006


0,00


27


01.01.97


21020


0,00


0


01.01.97


21021


0,00


63


01.01.97


22004


0,00


159


01.01.97


22005


0,00


146


01.01.97


22009


0,00


46


01.01.97


22007


0,00


32


01.01.97


22008


0,00


13


01.01.97


22006


0,00


73


01.01.97


22006


0,00


59


01.01.97


22006


0,00


56


01.01.97


21020


0,00


29


01.01.97


21021


0,00


8


01.01.97


22005


0,00


12


01.01.97


22006


0,00


27


01.01.97


21021


0,00


10


01.01.97


22008


0,00


28


01.01.97


22008


0,00


57


01.01.97


21021


0,00


42


01.01.97


24001


0,00


34


01.01.97


24001


0,00


69


01.01.97


21021


0,00


104


09.01.97


21020


90,93


300


09.01.97


21020


91,03


600


09.01.97


21020


91,24


900


09.01.97


21020


91,35


600


09.01.97


21020


91,50


500


10.01.97


22004


91,54


24


13.01.97


21020


93,65


50


14.01.97


21020


93,22


32


15.01.97


22005


88,51


10


17.01.97


21020


92,50


10


28.01.97


21020


93,40


7


31.01.97


22007


84,19


16


31.01.97


22007


84,20


184


06.02.97


22004


92,80


60


10.02.97


22006


89,00


500


13.02.97


21021


91,20


430


13.02.97


21021


91,30


430


13.02.97


21021


91,33


320


17.02.97


22005


92,25


78


17.02.97


22007


88,42


78


19.02.97


22005


93,00


122


19.02.97


22003


97,55


41


19.02.97


22007


89,39


122


20.02.97


22005


92,60


28


25.02.97


22005


92,01


100


25.02.97


22005


92,03


60


25.02.97


21020


96,00


101


26.02.97


22004


95,10


12


26.02.97


21021


92,50


12


27.02.97


22008


84,04


300


27.02.97


22008


84,10


432


27.02.97


22008


84,22


318


27.02.97


22008


84,09


311


27.02.97


22008


84,22


182


27.02.97


22008


84,42


100


28.02.97


21021


93,23


80


03.03.97


21020


97,30


200


03.03.97


21021


94,00


154


03.03.97


22006


92,50


200


04.03.97


22006


92,40


24


04.03.97


22006


92,52


200


04.03.97


22006


92,53


200


06.03.97


22006


92,63


25


06.03.97


22004


96,45


4


06.03.97


21020


97,53


108


12.03.97


21020


97,70


489


13.03.97


21020


97,50


822


13.03.97


21021


94,00


399


17.03.97


21021


93,67


100


19.03.97


22003


99,19


128


19.03.97


22003


99,20


229


20.03.97


24001


72,00


50


20.03.97


24001


72,15


290


21.03.97


22005


94,20


2


21.03.97


22005


94,25


100


24.03.97


22005


94,25


108


24.03.97


22005


94,39


27


24.03.97


22005


94,40


598


24.03.97


21020


98,40


200


25.03.97


22006


92,10


70


25.03.97


22005


94,05


320


25.03.97


22003


99,78


403


26.03.97


22006


92,00


314


26.03.97


21021


94,45


80


26.03.97


21020


98,10


50


28.03.97


22005


94,15


7


28.03.97


21021


95,10


135


28.03.97


21021


95,19


378


28.03.97


21021


95,20


90


28.03.97


21020


99,07


288


28.03.97


21020


99,01


300


31.03.97


22006


92,92


200


31.03.97


22006


92,93


400


31.03.97


22006


92,94


100


31.03.97


22005


94,50


10


31.03.97


21020


99,10


88


31.03.97


21020


99,11


12


31.03.97


21020


99,12


2


31.03.97


22006


92,94


100


31.03.97


22006


92,93


400


31.03.97


22006


92,92


200


01.04.97


22006


92,70


1


01.04.97


22006


92,91


89


01.04.97


22004


97,72


10


03.04.97


22004


98,00


100


03.04.97


21020


99,28


38


03.04.97


22006


93,06


29


03.04.97


22006


93,23


5


03.04.97


22006


93,31


145


04.04.97


21020


99,30


370


04.04.97


22006


93,32


50


04.04.97


22006


93,37


47


04.04.97


22006


93,39


45


08.04.97


22004


98,35


239


08.04.97


22008


87,50


167


08.04.97


24001


73,15


23


08.04.97


22004


98,35


53


09.04.97


21020


99,80


13


09.04.97


21020


99,86


27


09.04.97


21020


99,87


325


09.04.97


24001


73,20


117


09.04.97


24001


73,25


200


09.04.97


22009


84,86


61


10.04.97


21022


91,50


2101


10.04.97


21020


100,00


1630


10.04.97


21022


91,50


91


10.04.97


21022


91,65


609


10.04.97


21020


100,00


642


10.04.97


21022


91,65


98


10.04.97


21020


100,00


90


10.04.97


21022


91,50


10


10.04.97


21020


100,00


20


10.04.97


21022


91,65


42


10.04.97


21020


100,00


39


10.04.97


21022


91,65


31


10.04.97


21020


100,00


29


10.04.97


21022


91,50


5458


11.04.97


21022


92,40


1


11.04.97


24001


73,50


300


14.04.97


22009


85,50


340


14.04.97


21021


97,25


300


14.04.97


22006


94,53


157


16.04.97


22008


88,40


330


16.04.97


21021


97,80


600


16.04.97


22004


99,60


90


16.04.97


22009


86,39


340


16.04.97


22004

p>

99,60


50


17.04.97


22009


86,50


60


17.04.97


22004


99,64


3


17.04.97


24001


73,80


1


21.04.97


21022


92,45


515


21.04.97


22006


95,30


500


21.04.97


21022


92,38


3


21.04.97


22006


95,30


321


22.04.97


22004


99,90


189


22.04.97


22008


88,72


112


23.04.97


22005


97,20


12


24.04.97


22004


100,00


572


24.04.97


22010


84,35


14


24.04.97


22004


100,00


12


24.04.97


22010


84,32


10


24.04.97


22004


100,00


15


24.04.97


22010


84,32


28


24.04.97


22010


84,35


34


24.04.97


22004


100,00


53


24.04.97


22010


84,28


586


24.04.97


22010


84,32


355


25.04.97


22008


89,89


18


25.04.97


21022


93,55


48


25.04.97


21022


93,49


2


25.04.97


21022


93,50


4


28.04.97


21022


93,50


790


28.04.97


22005


97,68


200


28.04.97


22005


97,70


500


28.04.97


21022


93,50


1008


28.04.97


21022


93,65


982


28.04.97


21022


93,60


80


28.04.97


21022


93,55


468


28.04.97


21022


93,56


67


28.04.97


21022


93,50


1916


28.04.97


21022


93,61


10


28.04.97


21022


93,51


46


29.04.97


21022


94,01


826


29.04.97


22006


96,50


800


29.04.97


21022


94,00


400


29.04.97


21022


94,01


836


29.04.97


21022


94,05


55


29.04.97


21022


94,10


300


29.04.97


21022


94,15


298


06.05.97


21021


99,40


78


06.05.97


21022


94,70


131


06.05.97


22006


97,00


1


06.05.97


22006


96,90


1


06.05.97


22006


96,65


31


06.05.97


22006


96,61


263


06.05.97


22008


91,20


42


06.05.97


22008


90,80


501


12.05.97


21022


0,00


32


12.05.97


22009


0,00


160


14.05.97


21022


95,40


300


14.05.97


21022


95,45


300


14.05.97


21022


95,48


500


15.05.97


22011


86,30


1190


15.05.97


21021


100,00


500


15.05.97


22011


86,35


477


15.05.97


22011


86,41


826


15.05.97


21021


100,00


1126


15.05.97


22011


86,35


13


15.05.97


21021


100,00


12


15.05.97


22011


86,35


63


15.05.97


21021


100,00


63


15.05.97


21021


100,00


8


15.05.97


21021


100,00


10


15.05.97


22011


86,35


48


15.05.97


21021


100,00


42


15.05.97


21021


100,00


104


16.05.97


24001


79,30


50


16.05.97


22011


87,09


60


16.05.97


22011


87,10


90


16.05.97


22011


87,35


353


16.05.97


21022


95,75


355


16.05.97


21022


95,80


145


19.05.97


21022


96,54


50


20.05.97


21022


96,65


13


20.05.97


21022


96,73


44


21.05.97


22005


99,65


1


22.05.97


22011


88,40


92


22.05.97


22011


88,43


17


22.05.97


22011


88,44


391


22.05.97


22011


88,50


1


22.05.97


22011


88,70


350


22.05.97


22005


99,80


500


22.05.97


22005


99,82


252


23.05.97


22011


88,70


224


23.05.97


22005


99,82


119


26.05.97


22011


88,55


129


26.05.97


22011


88,54


26


26.05.97


22011


88,53


410


27.05.97


22011


0,00


791


28.05.97


22011


88,03


2


28.05.97


21022


96,40


10


28.05.97


21022


96,50


12


28.05.97


21022


96,69


100


28.05.97


21022


96,70


45


28.05.97


21022


96,88


144


28.05.97


22008


93,30


25


28.05.97


22011


88,21


50


28.05.97


22011


88,26


20


28.05.97


22011


88,25


100


28.05.97


22011


88,20


48


29.05.97


22012


87,30


108


29.05.97


22005


100,00


95


29.05.97


22012


87,30


8


29.05.97


22005


100,00


7


29.05.97


22012


87,30


64


29.05.97


22005


100,00


57


29.05.97


22005


100,00


12


29.05.97


22012


87,00


573


30.05.97


22007


95,79


73


30.05.97


22006


98,65


82


30.05.97


22012


87,85


50


30.05.97


22012


87,85


13



Приложение 3.3. Информация о движениях денежных средств.


























































































































































































































































Дата


Остаток на конец


Ввод


Вывод


05.02.97


61 746 712,20


06.02.97


481 785 980,60


10.02.97


36 340 980,60


14.02.97


297 257 974,60


17.02.97


294 129 652,00


19.02.97


249 467 440,70


20.02.97


223 513 512,70


25.02.97


20 918 675,30


26.02.97


21 253 187,30


28.02.97


8 953 377,10


03.03.97


532 789 017,10


04.03.97


140 120 741,10


06.03.97


7 640 493,20


12.03.97


484 915 740,20


13.03.97


660 249 230,20


1 000 000 000,00


17.03.97


566 485 560,20


19.03.97


912 000 229,00


700 000 000,00


21.03.97


570 289 860,00


24.03.97


74 813 572,70


25.03.97


8 058 802,70


26.03.97


6 123 432,20


28.03.97


6 838 506,90


31.03.97


97 060 573,30


01.04.97


3 578 284,40


02.04.97


503 578 284,40


500 000 000,00


03.04.97


368 270 852,10


04.04.97


493 442,10


07.04.97


500 493 442,10


500 000 000,00


08.04.97


427 988 436,10


09.04.97


295 022 078,40


11.04.97


684 663,40


14.04.97


1 152 213,40


16.04.97


678 336 327,40


21.04.97


3 004 364,27


675 000 000,00


22.04.97


290 965 631,22


23.04.97


302 620 883,22


24.04.97


2 620 883,22


300 000 000,00


25.04.97


574 620 883,22


28.04.97


5 756 283,52


29.04.97


72 291,57


06.05.97


122 502,22


980 000 000,00


14.05.97


533 285 039,72


516 000 000,00


16.05.97


5 009 715,72


22.05.97


931 583,51


23.05.97


1 584 837,51


26.05.97


1 432 570,33


500 000 000,00


28.05.97


650 729 151,73


500 000 000,00


29.05.97


151 229 151,73


499 500 000,00


30.05.97


296 336,95



Приложение 3.4. Биржевая информация.




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Дата


№ бумаги


Цена средневзвешенная


06.01.97


21018


99,643


06.01.97


21019


94,126


06.01.97


22001


98,422


06.01.97


22002


94,880


06.01.97


22003


93,288


06.01.97


22004


90,318


06.01.97


22005


87,458


06.01.97


22006


96,187


08.01.97


21018


99,886


08.01.97


21019


96,830


08.01.97


22001


98,422


08.01.97


22002


95,664


08.01.97


22003


93,032


08.01.97


22004


91,372


08.01.97


22005


88,078


08.01.97


22006


86,150


09.01.97


21018


100,000


09.01.97


21020


90,832


10.01.97


21019


97,123


10.01.97


21020


92,340


10.01.97


22001


99,009


10.01.97


22002


95,907


10.01.97


22003


92,999


10.01.97


22004


90,773


10.01.97


22005


88,050


10.01.97


22006


86,316


13.01.97


21019


97,245


13.01.97


21020


93,147


13.01.97


22001


99,176


13.01.97


22002


96,648


13.01.97


22003


94,013


13.01.97


22004


93,042


13.01.97


22005


89,735


13.01.97


22006


90,704


14.01.97


21019


97,670


14.01.97


21020


93,335


14.01.97


22001


99,343


14.01.97


22002


96,617


14.01.97


22003


94,127


14.01.97


22004


92,800


14.01.97


22005


90,000


14.01.97


22006


86,999


15.01.97


21019


97,693


15.01.97


21020


93,354


15.01.97


22001


99,621


15.01.97


22002


96,500


15.01.97


22003


94,369


15.01.97


22004


91,988


15.01.97


22005


89,289


15.01.97


22006


88,008


16.01.97


21019


97,685


16.01.97


21020


92,831


16.01.97


22001


99,634


16.01.97


22002


96,500


16.01.97


22003


94,325


16.01.97


22004


91,525


16.01.97


22005


89,500


16.01.97


22006


87,936


17.01.97


21019


97,413


17.01.97


21020


92,541


17.01.97


22001


99,680


17.01.97


22002


96,544


17.01.97


22003


92,338


17.01.97


22004


91,715


17.01.97


22005


89,000


17.01.97


22006


87,373


20.01.97


21019


97,650


20.01.97


21020


92,538


20.01.97


22001


99,826


20.01.97


22002


95,996


20.01.97


22003


93,943


20.01.97


22004


91,855


20.01.97


22005


87,862


20.01.97


22006


87,631


21.01.97


21019


97,557


21.01.97


21020


92,463


21.01.97


22001


99,801


21.01.97


22002


96,402


21.01.97


22003


94,097


21.01.97


22004


91,114


21.01.97


22005


88,438


21.01.97


22006


86,820


22.01.97


21019


97,691


22.01.97


21020


92,509


22.01.97


22001


99,861


22.01.97


22002


96,990


22.01.97


22003


94,097


22.01.97


22004


91,349


22.01.97


22005


88,389


22.01.97


22006


86,710


23.01.97


22001


100,000


23.01.97


22006


86,597


24.01.97


21019


98,164


24.01.97


21020


92,854


24.01.97


22002


96,740


24.01.97


22003


94,233


24.01.97


22004


91,920


24.01.97


22005


89,055


24.01.97


22006


87,196


27.01.97


21019


98,620


27.01.97


21020


93,200


27.01.97


22002


97,327


27.01.97


22003


94,658


27.01.97


22004


92,081


27.01.97


22005


89,153


27.01.97


22006


87,163


28.01.97


21019


98,681


28.01.97


21020


93,369


28.01.97


22002


97,412


28.01.97


22003


94,732


28.01.97


22004


92,486


28.01.97


22005


89,617


28.01.97


22006


87,152


29.01.97


21019


98,242


29.01.97


21020


93,041


29.01.97


22002


97,485


29.01.97


22003


94,821


29.01.97


22004


91,200


29.01.97


22005


89,617


29.01.97


22006


87,353


30.01.97


22007


83,554


31.01.97


21019


98,864


31.01.97


21020


93,385


31.01.97


22002


97,485


31.01.97


22003


94,652


31.01.97


22004


91,787


31.01.97


22005


85,900


31.01.97


22006


87,419


31.01.97


22007


84,043


03.02.97


21019


99,326


03.02.97


21020


93,500


03.02.97


22002


97,880


03.02.97


22003


94,829


03.02.97


22004


92,601


03.02.97


22005


89,415


03.02.97


22006


88,276


03.02.97


22007


84,480


04.02.97


21019


99,155


04.02.97


21020


93,831


04.02.97


22002


97,954


04.02.97


22003


95,089


04.02.97


22004


92,484


04.02.97


22005


90,000


04.02.97


22006


88,181


04.02.97


22007


84,612


05.02.97


21019


99,245


05.02.97


21020


94,120


05.02.97


22002


97,954


05.02.97


22003


95,330


05.02.97


22004


92,705


05.02.97


22005


90,182


05.02.97


22006


88,575


05.02.97


22007


84,749


06.02.97


21019


99,502


06.02.97


21020


94,255


06.02.97


22002


98,440


06.02.97


22003


95,631


06.02.97


22004


93,010


06.02.97


22005


90,650


06.02.97


22006


89,112


06.02.97


22007


86,097


07.02.97


21019


99,646


07.02.97


21020


94,650


07.02.97


22002


97,238


07.02.97


22003


95,946


07.02.97


22004


93,249


07.02.97


22005


91,013


07.02.97


22006


89,136


07.02.97


22007


86,035


10.02.97


21019


99,771


10.02.97


21020


94,990


10.02.97


22002


98,667


10.02.97


22003


95,760


10.02.97


22004


93,520


10.02.97


22005


90,591


10.02.97


22006


88,109


10.02.97


22007


86,113


11.02.97


21019


99,842


11.02.97


21020


94,759


11.02.97


22002


98,667


11.02.97


22003


96,000


11.02.97


22004


93,565


11.02.97


22005


90,800


11.02.97


22006


89,259


11.02.97


22007


86,157


12.02.97


21019


99,875


12.02.97


21020


94,844


12.02.97


22002


98,571


12.02.97


22003


96,000


12.02.97


22004


93,678


12.02.97


22005


90,520


12.02.97


22006


89,239


12.02.97


22007


86,558


13.02.97


21019


100,000


13.02.97


21021


91,357


14.02.97


21020


95,057


14.02.97


21021


92,133


14.02.97


22002


99,233


14.02.97


22003


96,400


14.02.97


22004


94,100


14.02.97


22005


91,400


14.02.97


22006


90,053


14.02.97


22007


87,650


17.02.97


21020


95,604


17.02.97


21021


92,377


17.02.97


22002


99,535


17.02.97


22003


96,852


17.02.97


22004


94,484


17.02.97


22005


92,159


17.02.97


22006


90,548


17.02.97


22007


88,149


18.02.97


21020


96,133


18.02.97


21021


92,625


18.02.97


22002


99,700


18.02.97


22003


97,191


18.02.97


22004


94,987


18.02.97


22005


92,690


18.02.97


22006


90,988


18.02.97


22007


88,547


19.02.97


21020


96,364


19.02.97


21021


92,841


19.02.97


22002


99,702


19.02.97


22003


97,195


19.02.97


22004


95,049


19.02.97


22005


92,979


19.02.97


22006


91,236


19.02.97


22007


89,245


20.02.97


21020


96,263


20.02.97


21021


93,056


20.02.97


22002


99,800


20.02.97


22003


97,400


20.02.97


22004


95,370


20.02.97


22005


92,948


20.02.97


22006


90,918


20.02.97


22007


89,336


21.02.97


21020


96,490


21.02.97


21021


93,234


21.02.97


22002


99,800


21.02.97


22003


97,496


21.02.97


22004


95,310


21.02.97


22005


92,643


21.02.97


22006


91,359


21.02.97


22007


88,513


24.02.97


21020


96,071


24.02.97


21021


92,965


24.02.97


22002


99,800


24.02.97


22003


97,500


24.02.97


22004


95,200


24.02.97


22005


92,007


24.02.97


22006


90,456


24.02.97


22007


88,500


25.02.97


21020


96,000


25.02.97


21021


90,057


25.02.97


22002


99,852


25.02.97


22003


97,427


25.02.97


22004


95,454


25.02.97


22005


92,054


25.02.97


22006


90,930


25.02.97


22007


88,199


26.02.97


21020


96,119


26.02.97


21021


92,786


26.02.97


22002


99,883


26.02.97


22003


97,734


26.02.97


22004


95,019


26.02.97


22005


92,299


26.02.97


22006


90,874


26.02.97


22007


88,730


27.02.97


22002


100,000


27.02.97


22008


84,092


28.02.97


21020


96,809


28.02.97


21021


93,293


28.02.97


22003


98,120


28.02.97


22004


95,190


28.02.97


22005


93,100


28.02.97


22006


91,725


28.02.97


22007


88,782


28.02.97


22008


84,956


03.03.97


21020


97,293


03.03.97


21021


94,125


03.03.97


22003


98,350


03.03.97


22004


96,362


03.03.97


22005


93,100


03.03.97


22006


92,266


03.03.97


22007


90,333


03.03.97


22008


86,453


04.03.97


21020


97,348


04.03.97


21021


94,392


04.03.97


22003


98,436


04.03.97


22004


96,124


04.03.97


22005


93,939


04.03.97


22006


92,416


04.03.97


22007


89,930


04.03.97


22008


87,157


05.03.97


21020


97,600


05.03.97


21021


94,421


05.03.97


22003


98,811


05.03.97


22004


96,685


05.03.97


22005


94,343


05.03.97


22006


92,647


05.03.97


22007


89,930


05.03.97


22008


87,016


06.03.97


21020


97,654


06.03.97


21021


94,503


06.03.97


22003


98,962


06.03.97


22004


96,782


06.03.97


22005


94,450


06.03.97


22006


92,646


06.03.97


22007


90,257


06.03.97


22008


86,887


07.03.97


21020


97,636


07.03.97


21021


94,630


07.03.97


22003


99,125


07.03.97


22004


96,903


07.03.97


22005


94,450


07.03.97


22006


92,953


07.03.97


22007


90,257


07.03.97


22008


87,081


11.03.97


21020


96,775


11.03.97


21021


94,860


11.03.97


22003


99,209


11.03.97


22004


96,650


11.03.97


22005


94,500


11.03.97


22006


93,162


11.03.97


22007


90,993


11.03.97


22008


87,317


12.03.97


21020


97,700


12.03.97


21021


94,132


12.03.97


22003


97,682


12.03.97


22004


95,787


12.03.97


22005


94,000


12.03.97


22006


92,513


12.03.97


22007


90,000


12.03.97


22008


87,138


13.03.97


21020


97,490


13.03.97


21021


94,000


13.03.97


22003


99,000


13.03.97


22004


96,064


13.03.97


22005


93,625


13.03.97


22006


92,141


13.03.97


22007


90,000


13.03.97


22008


86,400


14.03.97


21020


97,485


14.03.97


21021


94,946


14.03.97


22003


99,090


14.03.97


22004


96,501


14.03.97


22005


93,602


14.03.97


22006


92,133


14.03.97


22007


89,000


14.03.97


22008


86,731


17.03.97


21020


97,955


17.03.97


21021


92,545


17.03.97


22003


99,010


17.03.97


22004


96,800


17.03.97


22005


93,890


17.03.97


22006


92,423


17.03.97


22007


89,064


17.03.97


22008


87,328


18.03.97


21020


98,024


18.03.97


21021


94,576


18.03.97


22003


99,112


18.03.97


22004


96,576


18.03.97


22005


94,031


18.03.97


22006


92,455


18.03.97


22007


89,064


18.03.97


22008


86,166


19.03.97


21020


98,007


19.03.97


21021


94,668


19.03.97


22003


99,195


19.03.97


22004


96,819


19.03.97


22005


93,877


19.03.97


22006


91,269


19.03.97


22007


88,900


19.03.97


22008


86,649


20.03.97


24001


72,152


21.03.97


21020


98,278


21.03.97


21021


94,772


21.03.97


22003


99,600


21.03.97


22004


97,004


21.03.97


22005


94,285


21.03.97


22006


92,474


21.03.97


22007


88,900


21.03.97


22008


86,200


21.03.97


24001


72,503


24.03.97


21020


98,542


24.03.97


21021


94,855


24.03.97


22003


99,782


24.03.97


22004


97,333


24.03.97


22005


94,290


24.03.97


22006


92,693


24.03.97


22007


89,014


24.03.97


22008


86,303


24.03.97


24001


73,415


25.03.97


21020


98,273


25.03.97


21021


94,770


25.03.97


22003


99,784


25.03.97


22004


97,212


25.03.97


22005


94,182


25.03.97


22006


90,967


25.03.97


22007


88,855


25.03.97


22008


86,255


25.03.97


24001


72,600


26.03.97


21020


98,248


26.03.97


21021


94,563


26.03.97


22003


99,845


26.03.97


22004


97,248


26.03.97


22005


94,264


26.03.97


22006


92,016


26.03.97


22007


88,934


26.03.97


22008


86,300


26.03.97


24001


72,495


27.03.97


22003


100,000


27.03.97


22009


83,778


28.03.97


21020


99,032


28.03.97


21021


95,190


28.03.97


22004


97,329


28.03.97


22005


94,188


28.03.97


22006


92,888


28.03.97


22007


89,682


28.03.97


22008


88,090


28.03.97


22009


84,019


28.03.97


24001


72,997


31.03.97


21020


99,106


31.03.97


21021


95,565


31.03.97


22004


97,543


31.03.97


22005


94,517


31.03.97


22006


92,818


31.03.97


22007


89,682


31.03.97


22008


87,300


31.03.97


22009


84,050


31.03.97


24001


72,900


01.04.97


21020


99,249


01.04.97


21021


95,723


01.04.97


22004


97,727


01.04.97


22005


94,517


01.04.97


22006


92,953


01.04.97


22007


90,000


01.04.97


22008


86,996


01.04.97


22009


84,330


01.04.97


24001


73,000


02.04.97


21020


99,250


02.04.97


21021


95,693


02.04.97


22004


97,963


02.04.97


22005


94,736


02.04.97


22006


93,156


02.04.97


22007


90,990


02.04.97


22008


86,940


02.04.97


22009


84,022


02.04.97


24001


73,000


03.04.97


21020


99,268


03.04.97


21021


95,807


03.04.97


22004


98,022


03.04.97


22005


94,922


03.04.97


22006


93,274


03.04.97


22007


90,558


03.04.97


22008


86,610


03.04.97


22009


83,988


03.04.97


24001


72,952


04.04.97


21020


99,308


04.04.97


21021


95,800


04.04.97


22004


98,072


04.04.97


22005


95,226


04.04.97


22006


93,486


04.04.97


22007


90,893


04.04.97


22008


86,444


04.04.97


22009


84,133


04.04.97


24001


72,857


07.04.97


21020


99,642


07.04.97


21021


95,765


07.04.97


22004


98,337


07.04.97


22005


95,438


07.04.97


22006


93,650


07.04.97


22007


91,200


07.04.97


22008


88,400


07.04.97


22009


84,131


07.04.97


24001


73,053


08.04.97


21020


99,790


08.04.97


21021


96,330


08.04.97


22004


98,380


08.04.97


22005


95,533


08.04.97


22006


93,841


08.04.97


22007


91,200


08.04.97


22008


87,490


08.04.97


22009


84,432


08.04.97


24001


73,006


09.04.97


21020


99,862


09.04.97


21021


96,427


09.04.97


22004


98,455


09.04.97


22005


95,674


09.04.97


22006


93,827


09.04.97


22007


91,038


09.04.97


22008


87,525


09.04.97


22009


85,103


09.04.97


24001


73,208


10.04.97


21020


100,00


10.04.97


21022


91,650


11.04.97


21021


96,963


11.04.97


21022


92,066


11.04.97


22004


98,780


11.04.97


22005


95,861


11.04.97


22006


94,384


11.04.97


22007


91,498


11.04.97


22008


87,907


11.04.97


22009


84,907


11.04.97


24001


73,500


14.04.97


21021


97,091


14.04.97


21022


92,221


14.04.97


22004


99,137


14.04.97


22005


96,461


14.04.97


22006


94,535


14.04.97


22007


91,570


14.04.97


22008


88,076


14.04.97


22009


85,445


14.04.97


24001


73,561


15.04.97


21021


97,503


15.04.97


21022


92,419


15.04.97


22004


99,180


15.04.97


22005


96,521


15.04.97


22006


94,953


15.04.97


22007


91,891


15.04.97


22008


88,044


15.04.97


22009


85,768


15.04.97


24001


73,568


16.04.97


21021


97,762


16.04.97


21022


92,643


16.04.97


22004


99,514


16.04.97


22005


96,747


16.04.97


22006


95,016


16.04.97


22007


92,800


16.04.97


22008


88,395


16.04.97


22009


86,464


16.04.97


24001


73,614


17.04.97


21021


97,699


17.04.97


21022


92,528


17.04.97


22004


99,647


17.04.97


22005


96,600


17.04.97


22006


95,063


17.04.97


22007


92,009


17.04.97


22008


88,789


17.04.97


22009


86,860


17.04.97


24001


73,647


21.04.97


21021


97,836


21.04.97


21022


92,444


21.04.97


22004


99,809


21.04.97


22005


96,810


21.04.97


22006


95,262


21.04.97


22007


92,009


21.04.97


22008


86,911


21.04.97


22009


86,487


21.04.97


24001


73,671


22.04.97


21021


97,894


22.04.97


21022


92,642


22.04.97


22004


99,862


22.04.97


22005


96,854


22.04.97


22006


95,350


22.04.97


22007


92,487


22.04.97


22008


88,720


22.04.97


22009


86,314


22.04.97


24001


73,938


23.04.97


21021


98,091


23.04.97


21022


92,955


23.04.97


22004


99,893


23.04.97


22005


97,196


23.04.97


22006


95,347


23.04.97


22007


92,693


23.04.97


22008


88,859


23.04.97


22009


86,535


23.04.97


24001


74,051


24.04.97


22004


100,000


24.04.97


22010


84,320


25.04.97


21021


98,472


25.04.97


21022


93,593


25.04.97


22005


97,478


25.04.97


22006


95,920


25.04.97


22007


92,693


25.04.97


22008


89,248


25.04.97


22009


87,185


25.04.97


22010


84,823


25.04.97


24001


75,000


28.04.97


21021


98,686


28.04.97


21022


93,569


28.04.97


22005


97,687


28.04.97


22006


96,382


28.04.97


22007


93,300


28.04.97


22008


89,248


28.04.97


22009


88,132


28.04.97


22010


86,361


28.04.97


24001


76,105


29.04.97


21021


98,913


29.04.97


21022


94,045


29.04.97


22005


97,880


29.04.97


22006


96,498


29.04.97


22007


93,800


29.04.97


22008


89,248


29.04.97


22009


88,106


29.04.97


22010


86,366


29.04.97


24001


76,318


30.04.97


21021


99,023


30.04.97


21022


94,968


30.04.97


22005


98,284


30.04.97


22006


96,779


30.04.97


22007


93,800


30.04.97


22008


90,700


30.04.97


22009


89,266


30.04.97


22010


86,498


30.04.97


24001


76,811


04.05.97


21021


99,205


04.05.97


21022


94,962


04.05.97


22005


98,202


04.05.97


22006


96,818


04.05.97


22007


94,351


04.05.97


22008


90,750


04.05.97


22009


88,884


04.05.97


22010


86,817


04.05.97


24001


76,987


05.05.97


21021


99,378


05.05.97


21022


94,962


05.05.97


22005


98,500


05.05.97


22006


96,600


05.05.97


22007


94,290


05.05.97


22008


91,176


05.05.97


22009


88,810


05.05.97


22010


86,953


05.05.97


24001


76,983


06.05.97


21021


99,433


06.05.97


21022


94,700


06.05.97


22005


98,331


06.05.97


22006


96,649


06.05.97


22007


94,290


06.05.97


22008


90,865


06.05.97


22009


89,017


06.05.97


22010


86,915


06.05.97


24001


76,880


07.05.97


21021


97,211


07.05.97


21022


94,820


07.05.97


22005


98,369


07.05.97


22006


96,859


07.05.97


22007


94,377


07.05.97


22008


91,100


07.05.97


22009


89,046


07.05.97


22010


86,797


07.05.97


24001


76,980


08.05.97


24002


73,909


12.05.97


21021


99,765


12.05.97


21022


94,939


12.05.97


22005


98,501


12.05.97


22006


95,704


12.05.97


22007


94,377


12.05.97


22008


91,260


12.05.97


22009


89,035


12.05.97


22010


88,008


12.05.97


24001


77,406


12.05.97


24002


73,923


13.05.97


21021


99,850


13.05.97


21022


95,315


13.05.97


22005


98,694


13.05.97


22006


97,399


13.05.97


22007


94,698


13.05.97


22008


90,403


13.05.97


22009


89,313


13.05.97


22010


87,685


13.05.97


24001


77,422


13.05.97


24002


74,508


14.05.97


21021


99,892


14.05.97


21022


95,445


14.05.97


22005


98,872


14.05.97


22006


97,414


14.05.97


22007


95,000


14.05.97


22008


91,750


14.05.97


22009


89,683


14.05.97


22010


87,630


14.05.97


24001


77,601


14.05.97


24002


74,762


15.05.97


21021


100,000


15.05.97


22011


86,347


16.05.97


21022


96,203


16.05.97


22005


99,396


16.05.97


22006


98,034


16.05.97


22007


95,000


16.05.97


22008


92,360


16.05.97


22009


90,972


16.05.97


22010


88,562


16.05.97


22011


87,236


16.05.97


24001


79,057


16.05.97


24002


75,700


19.05.97


21022


96,549


19.05.97


22005


99,577


19.05.97


22006


98,254


19.05.97


22007


95,650


19.05.97


22008


92,754


19.05.97


22009


91,107


19.05.97


22010


88,993


19.05.97


22011


87,497


19.05.97


24001


79,448


19.05.97


24002


77,016


20.05.97


21022


96,686


20.05.97


22005


99,765


20.05.97


22006


98,239


20.05.97


22007


95,852


20.05.97


22008


93,027


20.05.97


22009


91,487


20.05.97


22010


89,323


20.05.97


22011


87,627


20.05.97


24001


79,926


20.05.97


24002


77,002


21.05.97


21022


96,819


21.05.97


22005


99,650


21.05.97


22006


98,492


21.05.97


22007


95,850


21.05.97


22008


93,298


21.05.97


22009


91,846


21.05.97


22010


89,554


21.05.97


22011


87,971


21.05.97


24001


80,371


21.05.97


24002


77,202


22.05.97


21022


98,222


22.05.97


22005


99,804


22.05.97


22006


98,492


22.05.97


22007


96,143


22.05.97


22008


93,672


22.05.97


22009


92,145


22.05.97


22010


89,949


22.05.97


22011


88,536


22.05.97


24001


81,219


22.05.97


24002


78,777


23.05.97


21022


97,250


23.05.97


22005


99,811


23.05.97


22006


98,629


23.05.97


22007


96,232


23.05.97


22008


92,804


23.05.97


22009


92,625


23.05.97


22010


90,014


23.05.97


22011


88,937


23.05.97


24001


81,434


23.05.97


24002


79,200


26.05.97


21022


96,616


26.05.97


22005


99,803


26.05.97


22006


98,649


26.05.97


22007


96,232


26.05.97


22008


93,498


26.05.97


22009


92,338


26.05.97


22010


89,902


26.05.97


22011


88,581


26.05.97


24001


79,606


26.05.97


24002


79,001


27.05.97


21022


96,645


27.05.97


22005


99,890


27.05.97


22006


98,094


27.05.97


22007


27.05.97


22008


93,545


27.05.97


22009


91,260


27.05.97


22010


89,563


27.05.97


22011


88,897


27.05.97


24001


81,543


27.05.97


24002


78,102


28.05.97


21022


96,287


28.05.97


22005


99,869


28.05.97


22006


98,338


28.05.97


22007


28.05.97


22008


93,475


28.05.97


22009


91,221


28.05.97


22010


89,391


28.05.97


22011


88,233


28.05.97


24001


81,067


28.05.97


24002


78,200


29.05.97


22005


100,000


29.05.97


22012


87,303


30.05.97


21022


96,982


30.05.97


22006


98,667


30.05.97


22007


95,814


30.05.97


22008


93,096


30.05.97


22009


90,537


30.05.97


22010


89,430


30.05.97


22011


88,050


30.05.97


22012


87,858


30.05.97


24001


80,994


30.05.97


24002


77,325


Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Анализ эффективности вложений денежных средств в РКО

Слов:35311
Символов:404634
Размер:790.30 Кб.