Индивидуальный итоговый проект
Вложение | Размер |
---|---|
![]() | 244.14 КБ |
Муниципальное общеобразовательное учреждение
Иркутского районного муниципального образования
«Карлукская средняя общеобразовательная школа»
Индивидуальный итоговый проект
«Программа для конвертации валют»
Автор работы: Щербаков Никита, 10 класс |
Руководитель: Нацюк Юлия Леонидовна Предметная область: информатика
|
ОГЛАВЛЕНИЕ
1.1 Анализ предметной области 4
1.2 Основы теории валютного курса и экономической модели 5
1.3 Описание языка программирования 14
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 22
Актуальность: в настоящее время острым стал вопрос об информатизации всех сфер жизни. Именно информатизация улучшает качества жизни людей за счет увеличения производительности и облегчения условий их труда. Конечно, такой глобальный процесс, не смог не задеть рутинные сферы жизни общества. Одной из таких сфер стала сфера обмена валют.
Проблема: расширение знаний в программировании на языке Python в направлении изучения новых модулей и объектно-ориентированного пользовательского интерфейса.
Цель: написание на языке программирования Python программы для конвертации валют.
Задачи:
Методы:
Практическая значимость данного проекта реализуется в двух направлениях: личностно-ориентированное – углубление знаний и умений в области объектно-ориентированного программирования; общественно-значимое - созданная программа для конвертации валют может быть использована на пункте обмена валют.
Конвертация — это обмен национальных денег одного государства на национальные деньги другого. В первую очередь эта финансовая операция позволяет развивать отношения и регулировать вопросы на внешнеполитическом уровне. Кроме этого, благодаря конвертации становится возможным сотрудничество между компаниями, расположенными в разных государствах, а также покупка товаров за границей.
Конвертируемость, или обратимость, национальной денежной единицы - это возможность для участников внешнеэкономических сделок легально обменивать ее на иностранные валюты и обратно без прямого вмешательства государства в процесс обмена. Степень конвертируемости обратно пропорциональна объему и жесткости практикуемых в стране валютных ограничений. Под ограничениями понимаются любые действия официальных инстанций, непосредственно ведущие к сужению возможностей, повышению издержек и появлению неоправданных затяжек в осуществлении валютного обмена и платежей по валютным сделкам.
Обратимость валюты не есть чисто техническая категория возможности ее обмена. По сути, это особый характер связи между национальным и мировым хозяйствами, глубокое интегрирование первого во второе.
Валюты делятся на 2 типа:
Конвертируемость национальной валюты требует рыночного типа экономики, так как она основана на свободном волеизъявлении всех владельцев денежных средств. Кроме того, рыночная экономика должна быть достаточно зрелой для противостояния иностранной конкуренции, полноправного участия в международном разделении труда.
Конвертер валют — это, в свою очередь, онлайн-инструмент, позволяющий обычным пользователям узнать актуальные обменные курсы всего парой нажатий клавиш. Большинство конвертеров все-таки примитивные и позволяют конвертировать денежные единицы в режиме реального времени, то есть основываясь на текущих данных ЦБ. Некоторые же конвертеры дают возможность узнать обменный курс, актуальный для любой интересующей пользователя даты. Такие инструменты очень удобны для тех людей, которые запланировали отдых в другой стране и хотели бы узнать текущий курс для обмена.
Существует великое множество теорий валютного курса. Как правило, они мало влияют на повседневную деятельность трейдера, необходимо иметь представление о ключевых идеях, лежащих в основе этих теорий. Главные экономические теории, посвященные валютному курсу, связаны с таким понятием как паритет и арбитраж. Паритет — это экономическое обоснование курса одной валюты по отношению к другой, и он может быть основан на таких факторах, как, например, инфляция или процентные ставки.
Согласно экономическим теориям, если паритет не соблюдается, для участников рынка возникает возможность арбитража. Однако, как и в других ситуациях, рынок быстро об этом узнает, и такая возможность перестает существовать, так что частный инвестор не успевает получить прибыль от арбитражной сделки.
Арбитраж — это операция, включающая покупку или продажу валюты и соответствующую контрсделку, ее цель — извлечение прибыли за счет разницы в курсах на разных рынках (пространственный валютный арбитраж) или в течение определенного периода (временной валютный арбитраж).
Другие теории учитывают такие экономические факторы, как торговля, оборот денежных средств и экономическая политика той или иной страны.
Паритет покупательной способности (ППС). Теория о паритете покупательной способности гласит, что на одну и ту же сумму, пересчитанную по текущему курсу в национальные валюты, в разных странах можно приобрести одинаковые товары. В основу этой теории положена идея, согласно которой один и тот же товар должен иметь одинаковую цену во всем мире. Если же после пересчета по текущему валютному курсу цена на один и тот же товар в двух странах существенно отличается, возникает возможность арбитража, так как товар будет покупаться в той стране, где он стоит дешевле. Другая версия ППС называется относительным ППС и выражается следующей формулой:
E — показатель корректировки валютного курса, а π1 и π2 — показатели инфляции страны 1 и страны 2 соответственно.
Паритет процентных ставок. Теория паритета процентных ставок похожа на теорию паритета покупательной способности и заключается в том, что при равных рисках инвестиции в активы, находящиеся в двух странах, должны приносить одинаковый доход, а иначе возникает возможность арбитража. В основе этой теории тоже лежит закон единой цены, так как покупка ценной бумаги в одной стране должна приносить ту же прибыль, что и покупка точно такого же актива в другой стране; в противном случае валютный курс должен быть скорректирован. Теория паритета процентных ставок описывается следующей формулой:
F — это форвардный обменный курс, S — спотовый курс, i1 — процентная ставка в стране 1, а , i2 — процентная ставка в стране 2.
Международный эффект Фишера. Согласно этой теории, изменение валютного курса между двумя странами должно соответствовать разнице между номинальными процентными ставками этих стран. Если номинальная процентная ставка в одной стране ниже, чем в другой, то цена валюты страны с низкой процентной ставкой должна быть скорректирована относительно цены валюты страны с высокой процентной ставкой на величину этой самой разницы. Международный эффект Фишера можно выразить формулой:
E — это коэффициент валютного курса, а i1 и i2 — показатели инфляции в странах 1 и 2 соответственно.
Теория платежного баланса. Платежный баланс страны состоит из двух разделов: счета текущий операций и капитального счета, которые отражают отток и приток товаров и капитала из страны и в нее. Теория платежного баланса гласит, что изменения валютного курса зависят от торгового баланса, который является частью счета текущих операций. Если имеет место большой дефицит или профицит сальдо текущего счета страны, это говорит о неуравновешенности валютного курса. Чтобы уравновесить сальдо текущего счета, валютный курс необходимо время от времени корректировать. Если имеет место большой дефицит торгового баланса (страна больше импортирует товаров, чем экспортирует), национальная валюта будет обесцениваться. Напротив, в ситуации большого профицита, национальная валюта будет дорожать. Это можно описать следующей формулой:
BCA обозначает счет текущих операций, BKA — капитальный счет, а BRA — счет резервных активов.
Факторы формирования валютного курса. Снижение валютного курса называется ослаблением, или удешевлением валюты (валюта становится дешевле). Если курс валюты зафиксирован по отношению к золоту или другой валюте, то снижение курса называется девальвацией. Увеличение валютного курса называется укреплением, или удорожанием валюты (валюта становится дороже). Если курс зафиксирован, то повышение курса называется ревальвацией.
В условиях международной торговли и других внешнеэкономических операций отношение поступлений и платежей в иностранной валюте и, соответственно, спрос и предложение иностранной валюты не находится в равновесии. При положительном платёжном балансе курсы иностранных валют на валютном рынке данной страны падают, а курс национальной денежной единицы повышается. Обратное происходит в случае, когда страна имеет отрицательный платёжный баланс, так как отечественные импортёры для погашения своих внешних обязательств стараются закупить иностранной валюты больше, чем её предлагают экспортёры.
Режимы валютных курсов. Существует два режима валютных курсов:
В чистом виде эти режимы встречаются редко. Например, курс может быть зафиксирован, но его поддержка на заданном уровне осуществлять путем валютных интервенций, а не в виде прямого требования, установленного в законе. Курс может фиксироваться не точно, а виде диапазона (валютного коридора). Например, Бреттон-Вудские соглашения фиксировали валютные курсы с точностью до 1 %. Соблюдение границ коридора обеспечивалось интервенциями.
Плавающий валютный курс также может подвергаться воздействию. Например, центральный банк может сглаживать его резкие колебания, обеспечивая плавную перестройку в случае значительных событий на рынке.
Экономические данные. Экономические теории могут описывать долгосрочные перспективы изменения валютного курса, но на коротких дистанциях, если вас интересует динамика за день или за неделю, гораздо большее влияние имеют экономические показатели. Часто приходится слышать, что самыми крупными компаниями в мире фактически являются страны, а их валюта — это по сути те же акции. Экономические данные, такие, например, как последний показатель валового внутреннего продукта (ВВП) часто воспринимаются как данные о прибыли компании. Как квартальные отчеты и текущие события влияют на курс акций компании, так и новости о ситуации в какой-то стране могут оказать серьезное влияние на динамику курса ее национальной валюты. Изменение процентных ставок, инфляция, безработица, потребительское доверие, ВВП, политическая стабильность и т. д. могут привести к огромным прибылям или убыткам в зависимости от характера события и текущего положения дел в стране. Каждый день публикуется множество экономических новостей, но лишь на некоторые из них валютному трейдеру следует обращать особое внимание. Ниже перечислены экономические показатели, которые, по общему мнению, оказывают наибольшее влияние на валютный рынок — вне зависимости от того, из какой страны пришли эти новости.
Данные о занятости. Большинство стран публикуют данные об уровне занятости населения. В США этот показатель называется «число занятых в несельскохозяйственном секторе», и эти данные публикуются Бюро статистики труда в первую пятницу месяца. Как правило, увеличение числа занятых свидетельствует о процветании национальной экономики, а рост безработицы говорит о возможном экономическом спаде. Если страна недавно пережила серьезный экономический кризис, рост уровня занятости будет признаком оздоровления экономики, и новость об этом может привести к повышению курса национальной валюты. С другой стороны, высокий уровень занятости может вызвать инфляцию, и в некоторых случаях публикация этих данных приведет к падению национальной валюты. Иначе говоря, экономические данные и динамика курса валют часто зависят от обстоятельств, которые сопровождают публикацию этой информации.
Процентные ставки. Как мы видели на примере некоторых экономических теорий, процентные ставки играют большую роль на рынке форекс. Наибольшее значение для участников рынка имеют совершаемые центральным банком изменения ставки рефинансирования, которые регулируют кредитно-денежную политику страны. В большинстве стран ставку устанавливает группа высокопоставленных сотрудников центрального банка, она может называться по-разному. К примеру, в Европейском Центробанке это управляющий совет, в Банке России — совет директоров, а в Банке Англии — комитет по денежной политике. В США ставку рефинансирования, то есть, процент за кредиты, предоставляемые Министерством финансов коммерческим банкам, определяет Федеральный комитет открытого рынка. Его члены собираются восемь раз в году, чтобы решить, повысить ли ставку рефинансирования, опустить ее или сохранить неизменной. Каждое заседание этого комитета наряду с публикацией протокола имеет большое значение для игроков валютного рынка.
Реальный курс. Валютный курс, устанавливаемый государством или определяемый на рынке, является номинальным. Он используется для осуществления валютных операций на практике. В теоретических моделях, для международных сравнений и для оценки последствий экономической политики используется также реальный курс. Он определяется по следующей формуле:
Где e — номинальный валютный курс (обратная котировка, стоимость единицы иностранной валюты, выраженная в национальной), P* — уровень цен за рубежом, P — уровень цен в стране.
В числителе находится произведение номинального курса на уровень цен за рубежом. Оно показывает стоимость некоторой корзины товаров, продающуюся за рубежом, но выраженную в национальной валюте. В знаменателе находится стоимость той же самой корзины товаров, но продающейся внутри страны. Таким образом, реальный курс показывает относительную стоимость сопоставимых товаров и является безразмерной величиной.
Реальный курс определяется фундаментальными факторами, связанными производительностью труда, доходами и т. п. Поэтому реальный курс более стабилен, чем номинальный. Изменение соотношения цен (темпов инфляции) сказывается в первую очередь на номинальном курсе, если он находится в свободном плавании. Фиксация курса приводит к тому, что инфляция завышает реальный курс, что ставит национальных производителей в невыгодные условия.
Инфляция. Данные об инфляции помогают оценить рост или падение уровня цен за определенный период времени. Так как в мире существует великое множество различных товаров и услуг, для измерения изменений в уровне цен используется потребительская корзина. Это перечень различных товаров и услуг, за ценами на которые следит статистическое ведомство страны. Рост цен является признаком инфляции, что часто приводит к падению курса национальной валюты.
ВВП. Валовый внутренний продукт — это показатель, отражающий рыночную стоимость всех конечных товаров и услуг, произведенных на территории государства за определенный период времени. При расчете ВВП суммируются четыре показателя: потребительские расходы, государственные расходы, инвестиции фирм и чистый экспорт. Считается, что ВВП является лучшим макроэкономическим показателем, характеризующим состоянии экономики государства, и его увеличение свидетельствует об экономическом росте. Чем более здоровой является экономика страны, тем больше она привлекает иностранных инвесторов, что в свою очередь ведет к росту курса национальной валюты, так как деньги начинают притекать в страну.
Денежные потоки и торговый баланс. Между странами образуются огромные денежные потоки, которые могут оказать существенное влияние на курсы национальных валют. Как уже говорилось выше, страна, которая импортирует намного больше товаров, чем экспортирует, столкнется с падением курса национальной валюты, так как ей придется продавать свою валюту, чтобы купить валюты страны-экспортера. Напротив, увеличение инвестиций в экономику страны может привести к значительному росту курса ее национальной валюты. Данные торгового баланса показывают разницу между импортом и экспортом товаров. дефицит торгового баланса означает, что объем импорта превышает объем экспорта. Баланс движения капитала показывает разницу между притоком денежных средств в страну за счет привлечения инвестиций и экспорта товаров и оттоком капитала, вложенного в иностранные инвестиции и потраченного на импорт. В стране с большим объемом инвестиций из-за рубежа, активы которой (акции, недвижимость) привлекательны для иностранных покупателей, сальдо по счету движения капитала будет, скорее всего, положительным. Данные платежного баланса складываются из суммы торгового баланса и баланса движения капитала за определенный период времени. Платежный баланс состоит из трех разделов: счет текущих операций, капитальный счет и финансовый счет. Счет текущих операций фиксирует экспорт и импорт товаров и услуг между странами. Капитальный счет показывает международный оборот денежных средств, предназначенных для покупки капитальных активов. Финансовый счет фиксирует оборот денежных средств, предназначенных для инвестирования.
Розничные продажи. Данные розничных продаж показывают изменения в объемах продаж в сфере розничной торговли за определенный период времени и являются важным показателем потребительских расходов. Как и в случае с ВВП, эти данные основаны на выборке из розничных магазинов разного типа и позволяют получить представление о потребительских расходах. Этот индикатор также информирует участников рынка о состоянии экономики страны в целом, так как увеличение потребительских расходов свидетельствует о сильной экономике.
Товары длительного пользования. Данные о заказах товаров длительного пользования (тех, чей срок эксплуатации составляет три года и больше) показывают, сколько таких товаров было заказано за определенный период времени. К числу таких товаров относятся, например, автомобили и бытовая техника. Этот индикатор показывает, сколько потребители готовы тратить на товары длительного потребления, а также свидетельствует о состоянии дел в производственном секторе экономики. Кроме того, благодаря этому показателю участники рынка могут судить об общем положении дел в экономике страны.
Python — высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ.
Python является мультипарадигмальным языком программирования, поддерживающим императивное, процедурное, структурное, объектно-ориентированное программирование, метапрограммирование и функциональное программирование.
Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений с глобальной блокировкой интерпретатора, высокоуровневые структуры данных. Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты.
Стандартная библиотека включает большой набор полезных переносимых функций, начиная от функционала для работы с текстом и заканчивая средствами для написания сетевых приложений. Дополнительные возможности, такие как математическое моделирование, работа с оборудованием, написание веб-приложений или разработка игр, могут реализовываться посредством обширного количества сторонних библиотек, а также интеграцией библиотек, написанных на С или C++, при этом и сам интерпретатор Python может интегрироваться в проекты, написанные на этих языках.
В ходе выполнения проекта были использованы следующие импортируемые модули Python:
JetBrains PyCharm — это интегрированная среда разработки (IDE), используемая для написания программ на Python. В ней есть инструменты для анализа кода, графический отладчик, встроенное модульное тестирование и поддержка веб-разработки с Django.
В начале выполнения программы импортируются следующие модули: pycbrf, sys, PyQt5.qtWidgets, time. После импорта происходит расчет курса необходимых валют, а так же создание словаря, заполненного курсами различных валют. После запуска программы пользователь увидит графический интерфейс программы, представляющий собой поле ввода, в которое необходимо ввести количество конвертируемой валюты, два выпадающих списка с возможностью выбрать валюту, а также кнопку, которая запускает перевод одной валюты в другую.
Рассмотрим поподробнее основные фрагменты кода программы, (полный текст кода см. в Приложении 1):
Импорт необходимых функций (см рис. 1):
Рис. 1.
Так как при передаче информации о валюте с помощью модуля pycbrf вместо одного числа мы получаем длинную строку, данная функция просто необходима. Она из полученной строки выделяет курс валюты к рублю (см рис. 2):
Рис. 2.
Данная функция, содержащаяся в классе Window (QtWidget) отвечает за создание пользовательского интерфейса (см рис. 3, рис. 4)
Рис. 3.
Рис. 4.
Данная функция, содержащаяся в классе Window(QtWidget) отвечает за перевод валют (см рис. 5):
Рис. 5.
Тестирование программного обеспечения — процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом.
Главной целью тестирования ПО является выявление ошибок, пробелов или отсутствующих требований, заданных на этапе проектирования продукта.
Тестировщик моделирует различные ситуации, которые могут возникнуть в процессе использования предмета тестирования.
В целях проверки работоспособности основного функционала программы проведем тестирование программного кода:
Рис. 6 Программа.
Рис. 7 Список валют.
Рис. 8 Вид программы после выбора валют.
Рис. 9 Вид программы после ввода данных.
Рис. 10 Результат.
Тестирование проводилось 09.03.2023, последующие данные могут измениться.
В настоящее время широко в нашу жизнь внедряются информационные технологии. На сегодняшний день, наверное, не осталось никакой области, где бы они ни применялись. Одной из первых сфер деятельности, в которой информационные технологии получили широкое распространение, является экономика.
В ходе выполнения данной работы была создана программа на языке программирования Python, позволяющая производить удобную конвертацию валют. Проект цели достиг.
Важной частью проекта является то, что я научился работать с новыми модулями, это является небольшим шагом к изучению огромного количества возможностей в программировании. Написав такую программу, я почувствовал себя настоящим программистом, ведь она в разы сложнее, но при этом интереснее того, что я мог написать раньше.
from pycbrf.toolbox import ExchangeRates
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QLineEdit, QComboBox, QPushButton, QHBoxLayout, QVBoxLayout, QSizePolicy
import time
date=time.strftime('%Y-%m-%d')
rates = ExchangeRates('%s'%date)
def clean(temp):
temp1=''
for i in range (len(temp)):
if temp[i] in 'r' and temp[i+1] in 'a':
temp1+=temp[i+14]+temp[i+15]+temp[i+16]+temp[i+17]+temp[i+18]+temp[i+19]+temp[i+20]
else:
temp1+=''
return(temp1)
usd1=str(rates['USD'])
usd2=float(clean(usd1))
eur1=str(rates['EUR'])
eur2=float(clean(eur1))
cny1=str(rates['CNY'])
cny2=float(clean(cny1))
jpy1=str(rates['JPY'])
jpy2=float(clean(jpy1))
inr1=str(rates['INR'])
inr2=float(clean(inr1))
gbp1=str(rates['GBP'])
gbp2=float(clean(gbp1))
EXCHANGE_RATES = {
"Рубль": 1,
"Доллар": usd2,
'Евро': eur2,
'Китайский юань': cny2,
'Фунт стерлингов': gbp2,
'Японская иена': jpy2,
'Индийский рупий': inr2
}
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle("Конвертер валют")
self.main_layout = QHBoxLayout(self)
self.input_layout = QVBoxLayout(self)
self.output_layout = QVBoxLayout(self)
self.input_value = QLineEdit(self)
self.input_value.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.input_type = QComboBox(self)
self.input_type.addItems(EXCHANGE_RATES.keys())
self.input_type.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.convert_button = QPushButton(self)
self.convert_button.setText("-->")
self.convert_button.clicked.connect(self.convert)
self.convert_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.output_value = QLineEdit(self)
self.output_value.setEnabled(False)
self.output_value.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.output_type = QComboBox(self)
self.output_type.addItems(EXCHANGE_RATES.keys())
self.output_type.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.input_layout.addWidget(self.input_value)
self.input_layout.addWidget(self.input_type)
self.output_layout.addWidget(self.output_value)
self.output_layout.addWidget(self.output_type)
self.main_layout.addLayout(self.input_layout)
self.main_layout.addWidget(self.convert_button)
self.main_layout.addLayout(self.output_layout)
self.setLayout(self.main_layout)
def convert(self):
input = float(self.input_value.text()) * EXCHANGE_RATES[self.input_type.currentText()]
output = input / EXCHANGE_RATES[self.output_type.currentText()]
self.output_value.setText(f'{output:.5f}')
App = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(App.exec())
Золотой циркуль
Можно от Солнца уйти...
А. Усачев. Что значит выражение "Белые мухи"?
Рождественский венок
Свинья под дубом