Математическое обеспечение и администрирование информационных систем

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

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык русский
Дата добавления 19.07.2015
Размер файла 460,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

скальпирование валютный рынок программный

Данная работа посвящена разработке на тему «Прототип программной системы работы на валютном рынке на основе метода системного скальпирования».

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

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

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

Предметом изучения данного исследования является прототип программной системы работы на валютном рынке на основе метода системного скальпирования и его программирование в среде VisualStudio 2013.

Цель данной работы - разработать прототип программной системы работы на валютном рынке на основе метода системного скальпирования и на его основе составить программу.

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

1. Изучить теоретические основы валютного рынка и математических средств технического анализа.

2. Разработать прототип программной системы работы на валютном рынке на основе метода системного скальпирования.

3. Составить программу на основе метода системного скальпирования и провести вычислительные эксперименты по оценке эффективности его работы.

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

Во введении обоснована актуальность темы «прототип программной системы работы на валютном рынке на основе метода системного скальпирования».

Первый раздел - теоретическая часть, в которой раскрываются теоретические основы валютного рынка и математических средств технического анализа.

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

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

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

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

1. Теоретические основы валютного рынка и математических средств технического анализа

1.1 Понятие валютного рынка

скальпирование валютный рынок программный

Валютный рынок (англ. Foreign exchange market, currency market) - это система устойчивых экономических и организационных отношений, возникающих при осуществлении операций по покупке или продаже иностранной валюты, платежных документов в иностранных валютах, а также операций по движению капитала иностранных инвесторов [1].

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

Американский доллар является основной мировой валютой. Все остальные валюты обычно оцениваются с помощью доллара.

Доллар США стал ведущей валютой к концу второй мировой войны в соответствии с Бреттон-Вудсскими соглашениями. Введение в обращение евро в 1999 г. лишь не намного уменьшило роль доллара [2].

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

Основные валюты:

USD - американский доллар, buck (бак), greenback (зеленая спинка).

GBP - фунт стерлингов (cable, стерлинг).

CHF - швейцарский франк (swissie).

JPY - японская йена.

CAD - канадский доллар.

AUD - австралийский доллар (aussie, оси).

NZD - новозеландский доллар (kiwi, киви).

EUR - евро. Евро стало официальной валютой для 11 стран ЕС, начиная с 0.00 по Европейскому времени 1 января 1999 года.

Краткие исторические сведения о торговле валютой

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

Современный рынок валют, сложился в двадцатом столетии. До середины 30-х годов Лондон был ведущим центром валютной торговли, а британский фунт был валютой для расчетов и создания валютных резервов. Поскольку в то время валютой торговали с помощью телексов или по телеграфу, британский фунт имел общепринятое название «cable» (телеграмма).

После второй мировой войны, когда экономика Великобритании была разрушена, а Соединенные Штаты являлись единственной страной, не пострадавшей экономически от войны, доллар США стал основной валютой на земном шаре. В настоящее время валюты всего мира оцениваются в основном с помощью американского доллара [3].

Развитие валютного рынка на современном этапе

Основными вехами дальнейшего развития «Форекса» за последние десятилетия явились:

1) подписание Бреттон-Вудсских соглашений;

2) создание Международного валютного фонда (МВФ);

3) возникновение рынка валют со свободно плавающим курсом;

4) образование валютных резервов;

5) создание Европейского валютного союза и Фонда европейского валютного сотрудничества.

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

В соответствии с Бреттон-Вудскими соглашениями основные торговые валюты были привязаны к доллару США. В свою очередь, доллар США был привязан к стоимости золота из расчета 35 долларов за унцию. Таким образом, доллар США превратился в мировую резервную валюту.

На МВФ были возложены проведения взаимных консультаций в интересах поддержания стабильно действующей системы покупки и продажи валют [4].

Рынок FOREX

Рынок FOREX сформировался в 70-е годы, когда международная торговля перешла от системы фиксированных курсов к системе плавающих обменных курсов валют. С 1971 до недавних пор действительными владельцами и основными участниками этого рынка были банки, многонациональные корпорации и большие брокерские фирмы. На рынке FOREX банки всего мира производят валютообменные операции для выполнения расчетов между партнерами, находящимися в разных странах, межгосударственных расчетов, спекулятивных сделок и т.д. Если некоторое лицо хотело вложить капитал в этот рынок, оно должно было осуществлять операцию совместно с банком на сумму порядка одного миллиона долларов (так как существовали требования в 5-10 миллионов долларов к минимальной стоимости сделки). Несколько лучший выбор обеспечивался брокерскими фирмами, которые могли понизить минимальный депозит в среднем до четверти миллиона долларов [5].

Начиная с 1978 г., МВФ официально санкционировал плавающий курс валют. Это означает, что данной валютой может торговать любой желающий, ее цена определяется как функция текущего спроса и предложения на рынке.

В настоящее время рынок FOREX открыт и для маломасштабных вкладчиков. В отличие от огромных сумм, ранее требуемых банками и брокерскими фирмами, существующие минимальные требования к игровому счету ($200 и меньше) стали доступными большинству участников и позволяют практически любому лицу играть «на равных» с «большими акулами». Кроме того, мелкие вкладчики в настоящее время используют преимущества Интернет, который сделал валютный рынок таким же доступным для всех, каким он раньше был только для крупных игроков.

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

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

FOREX объединяет более 17000 дилинговых центров, около 3,5 млн. клиентов - участников из 83 стран мира. Участниками рынка Forex являются следующие группы:

- центральные банки,

- коммерческие банки,

- международные корпорации,

- брокерские и финансовые компании,

- иные юридические и физические лица.

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

Федеральная резервная система США и центральные банки других стран «Большой семерки»

Федеральная резервная система США

(FED - Federal Reserve Board - c 2006 года председатель Джон Сноу).

Как и другие центральные банки, Федеральная резервная система США оказывает влияние на валютный рынок тремя традиционными способами:

· изменением учетной ставки;

· инструментами финансового рынка и

· посредством валютных операций.

· Центральные банки других стран «Большой семерки»

· Европейский центральный банк (ЕЦБ) был основан 1 июня 1988 г. Для управления обращением евро.

· Японский банк (the Bank of Japan)

· Английский банк (the Bank of England)

1.2 Обзор математических средств технического анализа

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

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

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

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

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

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

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

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

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

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

Осцилляторы предназначены для получения сигналов о возникновении на рынке ситуаций «рынок перекуплен» (overbought) и «рынок перепродан» (oversold). Сигналы осцилляторов полезны, в основном, в верхней и нижней областях их измерительных шкал, а генерируются они в результате расхождений между графиком цены анализируемой валюты и графиком осциллятора. В момент пересечения нулевой линии, если таковая имеется, вырабатывается сигнал об изменении направления движения валюты [6].

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

2. Разработка алгоритма прототипа программной системы работы на валютном рынке на основе метода системного скальпирования

2.1 Основные положения метода системного скальпирования

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

Рассмотрим одну из стратегий системного скальпирования при покупке Евро.

Предварительно необходимо открыть четыре окна с графиками валютных пар EURUSD, USDCHF, GBPUSD и USDJPY и установить на всех графиках период 15 мин.

На каждом графике следует вывести два индикатора экспоненциальной скользящей средней и применить к ценам Close: для одного индикатора - выбрать период 7 и синий цвет, для другого - выбрать период 34 и красный цвет. Масштаб графика рекомендуется выбрать в соответствии с рисунком 2.1.

Рисунок 2.1 - Рекомендуемый масштаб графика

Рассматриваемая стратегия продажи Евро состоит в следующем:

1. Необходимо определить момент, когда на графике EURUSD возникает боковой тренд и построить границы ценового коридора с помощью одного из описанных ранее методов (рисунок 2.2).

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рисунок 2.2 - Выявление бокового тренда

2. Для открытия короткой позиции по Евро необходимо одновременное выполнение следующих условий:

а) на графиках EURUSD и GBPUSD появились «сильные скачки» вниз, величиной не менее на 12-14 пунктов, и движение цены вниз продолжается за пределами построенного ценового коридора. Информация о появлении того или иного события на графике сохраняется в соответствующих глобальных переменных.

Пример указанного изменения цены показан на рисунке 2.3.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рисунок 2.3 - «Сильные скачки»

б) на графиках USDCHF и USDJPY появились «сильные скачки» вверх, величиной не менее на 12-14 пунктов, и движение цены вверх продолжается за пределами построенного ценового коридора,

в) на графиках EURUSD и GBPUSD красная скользящая средняя располагается выше синей скользящей средней,

г) на графиках USDCHF и USDJPY синяя скользящая средняя располагается выше красной скользящей средней.

Схематично данные условия можно изобразить следующим образом, на схеме указаны цвета свечей и скользящих средних (рисунок 2.4).

Рисунок 2.4 - Схематичное представление условий

3. Закрытие короткой позиции по Евро выполняется в том случае, когда цена четыре раза подряд (пример 1.1990, 1.1992, 1.1994, 1.1996) увеличивается (рисунок 2.5).

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рисунок 2.5 - Изменение цены в сторону увеличения

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

Аналогично строится стратегия покупки Евро:

1. Необходимо определить момент, когда на графике EURUSD возникает боковой тренд и построить границы ценового коридора с помощью одного из описанных ранее методов (рисунок 2.6).

Рисунок 2.6 - Выявление бокового тренда по EURUSD

2. Для открытия длиной позиции по Евро необходимо одновременное выполнение следующих условий:

а) на графиках EURUSD и GBPUSD появились «сильные скачки» вверх, величиной не менее на 12-14 пунктов, и движение цены вверх продолжается за пределами построенного ценового коридора. Пример такого изменения цены на графике EURUSD приведен на рисунке 2.7.

Рисунок 2.7 - «Сильные скачки» вверх по EURUSD

В соответствии с рассматриваемой стратегией в данный момент ситуация на графике GBPUSD имеет аналогичный вид (рисунок 2.8).

Рисунок 2.8 - «Сильные скачки» вверх по GBPUSD

б) на графиках USDCHF и USDJPY появились «сильные скачки» вниз, величиной не менее на 12-14 пунктов, и движение цены вниз продолжается за пределами построенного ценового коридора. Пример ситуации на графике USDJPY, возникшей одновременно с ситуацией на графике EURUSD, приведен на рисунке 2.9.

Рисунок 2.9 - «Сильные скачки» вниз по USDJPY

Ситуация на графике USDCHF выглядит аналогично (рисунок 2.10).

Рисунок 2.10 - «Сильные скачки» вниз по USDCHF

в) на графиках EURUSD и GBPUSD красная скользящая средняя располагается ниже синей скользящей средней,

г) на графиках USDCHF и USDJPY синяя скользящая средняя располагается ниже красной скользящей средней.

Схематично данные условия можно изобразить следующим образом, на схеме указаны цвета свечей и скользящих средних (рисунок 2.11).

Рисунок 2.11 - Схематичное представление условий

3. Закрытие длинной позиции по Евро выполняется в том случае, когда цена четыре раза подряд (например 1.2090, 1.2088, 1.2086, 1.2084) уменьшается.

При использовании данной стратегии максимально допустимые потери составляют 7 пунктов. При малейшем сомнении в дальнейшем направлении изменения цены и при наличии прибыли любой величины следует закрывать позицию [6].

2.2 Основные положения алгоритма прототипа системы работы на валютном рынке на основе метода системного скальпирования

Исходные данные:

N0 - длинна массивов: EURUSD, GBPUSD, USDCHF, USDJPY.

sizeW - ширина окна анализа.

i - момент времени, в который проверяется открывать позицию или нет (i>sizeW).

Delta1Min - минимальная разность между соседними котировками.

Delta2Min - минимальная разность между первым и последним элементом окна анализа.

USD - американский доллар.

GBP - фунт стерлингов.

CHF - швейцарский франк.

JPY - японская йена.

EUR - евро.

WorkPair - рабочая валютная пара: EURUSD, или GBPUSD, или USDCHF, или USDJPY.

iw - номер элемента в окне.

FlagOpen - индикатор закрыта позиция (0) /открыта позиция (1).

sizeR - количество возвратов.

sizeW+1 - элемент, у которого рассматривается позиция.

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

1. Проанализировать величину всего скачка sign0.

2. Если скачок оказался не меньше Delta2Min, то проверить, скачок был направлен вверх или вниз.

3. Провести анализ элементов в окне. Если расстояние между соседними элементами было не меньше Delta1Min, то проверить на знак разность между соседними элементами.

4. Если все разности между соседними элементами имеют такой же знак, как и скачок всего окна, то в этом окне есть сильный монотонный скачок.

Алгоритм открытия позиции состоит в следующем:

1. Определить знаки для каждой рабочей пары (WorkPair) на одинаковой ширине окна sizeW;

2. Знаки EURUSD и GBPUSD должны совпадать, также должны совпадать знаки USDCHF и USDJPY. Причем знаки EURUSD и USDCHF должны быть противоположными;

3. Открыть позицию по выбранной рабочей паре;

4. Для скачка направленного вниз открыть короткую позицию, т.е. продать;

5. Для скачка направленного вверх открыть длинную позицию, т.е. покупать;

6. Положить FlagOpen=1 (позиция открыта).

Алгоритм закрытия позиции состоит в следующем:

1. Если найдены sizeR подряд скачка между соседними элементами, направленные в противоположную сторону от основного направления скачка всего окна, то закрываем позицию (FlagOpen=0);

2. В противном случае держать позицию открытой.

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

1. Изначально все позиции закрыты (FlagOpen=0);

2. Выбираем элемент, у которого хотим узнать позицию;

3. Если позиции были закрыты, то проверить выполняются ли условия для открытия позиции;

4. Если все условия выполнены, то применить алгоритм открытия позиции;

5. Если позиции были открыты, то применить алгоритм закрытия позиции;

6. Перейти к следующему анализируемому элементу.

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

3. Программная реализация прототипа программной системы работы на валютном рынке на основе метода системного скальпирования

В качестве среды разработки [7, 8] прототипа системы работы на валютном рынке на основе метода системного скальпирования выбрана среда MSVisualStudio 2013.

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

3.1 Интерфейс программной реализации

«Прототип программной системы работы на валютном рынке на основе метода системного скальпирования» реализован в виде консольного приложения Win32 написанного на языке программирования С++ [10, 11].

Исходные данные о значениях котировок валютных пар вводятся из соответствующих файлов.

В окне консольного приложения выводятся исходные данные, введенные из файла, и их количество.

Затем в окне консольного приложения появляется диалог, позволяющий выбрать одну из четырёх рабочих валютных пар: e - EURUSD, g - GBPUSD, c - USDCHF, j - USDJPY (рисунок 3.1).

Рисунок 3.1 - Ввод в окне рабочей валютной пары консольного приложения «Прототип программной системы работы на валютном рынке на основе метода системного скальпирования»

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

Рисунок 3.2 - Вывод результатов системного скальпирования

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

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

В ходе программной реализации основных функций работы метода системного скальпирования в среде VisualStudio 2013 [12, 13] на языке С++ разработаны следующие фрагменты кода программы.

Приведём листинг подключения стандартных библиотек.

Начало листинг 1

#include «stdafx.h»

#include <iostream>

#include <fstream>

#include <math.h>

Конец листинг 1

Функция, которая ищет «сильный скачок», приведена в листинге 2.

Начало листинг 2

int JumpExists (double*Mas, int i, double Delta1Min, double Delta2Min, int sizeW)

 // Функция ищет сильный скачок, возвращает знак этого скачка

{

int sign0, iw;

 // Анализ величины всего скачка

sign0 = 0;

if (fabs (Mas[i] - Mas [i - sizeW]) < Delta2Min)

{

cout << «There isn't big leap i=» << i << endl;

return 0;

}

 // Проверить этот скачок был вверх или вниз

if (Mas[i] < Mas [i - sizeW])

{

sign0 = -1; // вниз

cout << «There is common jump down i=» << i << endl;

}

else

{

sign0 = 1; // вверх

cout << «There is common jump up i=» << i << endl;

}

 // Анализ элементов в окне

for (iw = 1; iw<sizeW; iw++)

{

 // проверка на величину разности

if (fabs (Mas[i - sizeW + iw] - Mas [i - sizeW + iw - 1]) < Delta1Min)

{

cout << «There isn't leap iw=» << iw << endl;

return 0;

}

 // проверка на знак разности

if (sign0 < 0) // должно быть вниз

{

if (Mas [i - sizeW + iw]>Mas [i - sizeW + iw - 1])

{

 // найдено движение вверх

cout << «Differently directed leaps iw=» << iw << endl;

return 0;

}

}

else // должно быть вверх

{

if (Mas [i - sizeW + iw] < Mas [i - sizeW + iw - 1])

{

 // найдено движение вниз

cout << «Differently directed leaps iw=» << iw << endl;

return 0;

}

}

}

return sign0;

}

Конец листинг 2

Функция, которая ищет, когда график валютной пары sizeR раз пошёл в противоположном направлении от направления «сильного скачка», приведена в листинге 3.

Начало листинг 3

int ReturnExists (double*Mas, int i, int sign0, int sizeR)

 // Функция ищет, когда график sizeR раз пошёл в противоположном направлении от главного

 // 0-нет обратного движения, 1-обнаружено обратное движение

{

for (int iw = 1; iw<sizeR; iw++)

{

 // проверить на знак разности

if (sign0 < 0) // открытие было вниз

{

if (Mas [i - sizeR + iw] < Mas [i - sizeR + iw - 1])

 // обнаружено движение вниз

return 0;

}

else // открытие было вверх

{

if (Mas [i - sizeR + iw]>Mas [i - sizeR + iw - 1])

 // обнаружено движение вверх

return 0;

}

}

return 1;

}

Конец листинг 3

Фрагмент программы открытия позиции по выбранной рабочей валютной паре приведён в листинге 4.

Начало листинг 4

// открыть позицию

switch (WorkPair)

{

case 'e': {if (signEURUSD < 0)

cout << «Open short position EURUSD (sell) i= «<< i << endl;

else

cout << «Open long position EURUSD (buy) i= «<< i << endl;

break;}

case 'g': {if (signGBPUSD < 0)

cout << «Open short position GBPUSD (sell) i= «<< i << endl;

else

cout << «Open long position GBPUSD (buy) i= «<< i << endl;

break;}

case 'c': {if (signUSDCHF < 0)

cout << «Open short position USDCHF (sell) i= «<< i << endl;

else

cout << «Open long position USDCHF (buy) i= «<< i << endl;

break;}

case 'j': {if (signUSDCHF < 0)

cout << «Open short position USDJPY (sell) i= «<< i << endl;

else

cout << «Open long position USDJPY (buy) i= «<< i << endl;

break;}

default: cout << «error1» << endl;

} //switch

FlagOpen = 1;

Конец листинг 4

Фрагмент программы закрытия позиции по выбранной рабочей валютной паре приведён в листинге 5.

Начало листинг 5

// закрыть позицию

switch (WorkPair)

{

case'e': {

ReturnEURUSD = ReturnExists (EUR, i, signEURUSD, sizeR);

if (ReturnEURUSD > 0)

{

cout << «Close position EURUSD i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

case'g': {

ReturnGBPUSD = ReturnExists (GBP, i, signGBPUSD, sizeR);

if (ReturnGBPUSD > 0)

{

cout << «Close position GBPUSD i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

case'c': {

ReturnUSDCHF = ReturnExists (CHF, i, signUSDCHF, sizeR);

if (ReturnUSDCHF > 0)

{

cout << «Close position USDCHF i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

case'j': {

ReturnUSDJPY = ReturnExists (JPY, i, signUSDJPY, sizeR);

if (ReturnUSDJPY > 0)

{

cout << «Close position USDJPY i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

default: cout << «error2» << endl;

} //switch

Конец листинг 5

Полный листинг кода программы, реализующей метод оптимальной классификации, приведён в приложении.

3.3 Проверка работоспособности программы

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

Исходные данные о значениях котировок валютных пар вводятся из файлов EUR1.txt, GBP1.txt, CHF1.txt, JPY1.txt (рисунок 3.3).

Рисунок 3.3 - Файлы с исходными данными

В каждом файле находятся 20 исходных элементов.

В окне консольного приложения выводятся исходные данные, введенные из файла, и их количество для каждой валютной пары (рисунок 3.4).

Рисунок 3.4 - Вывод исходных данных для EURUSD

Аналогично выводятся исходные данные для GBPUSD, USDCHF, USDJPY.

Затем в окне консольного приложения вводится одна из рабочих валютных пар (вводится буква e, то есть EURUSD). После выполнения системного скальпирования в окне консольного приложения выводятся знаки «сильных скачков» валютных пар (signEURUSD, signGBPUSD, signUSDCHF, signUSDJPY), моменты времени i, когда необходимо открывать, держать или закрывать позицию по EURUSD (рисунок 3.5).

Рисунок 3.5 - Результаты метода системного скальпирования для EURUSD

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

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

Заключение

При выполнении работы на тему «Прототип программной системы работы на валютном рынке на основе метода системного скальпирования» цели - разработать прототип программной системы работы на валютном рынке на основе метода системного скальпирования и на его основе составить программу - выполнены в полном объёме.

Для достижения поставленных целей были решены следующие задачи:

1. Изучить теоретические основы валютного рынка и математических средств технического анализа.

2. Разработать прототип программной системы работы на валютном рынке на основе метода системного скальпирования.

3. Составить рабочую программу на основе метода системного скальпирования и провести вычислительные эксперименты по оценке эффективности его работы.

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

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

В работе приведена реализация программы «Прототип программной системы работы на валютном рынке на основе метода системного скальпирования». Обоснован выбор среды разработки MSVisualStudio 2013. Описан интерфейс и выполнена проверка работы программы. Также были проведены вычислительные эксперименты по оценке эффективности работы алгоритма метода системного скальпирования.

Список использованных источников

1. Артемов Н. Валютные рынки. - М.: Профобразование, 2001. - 96 с.

2. Ашраф Лайди. Валютный трейдинг и межрыночный анализ. Как зарабатывать на изменениях глобальных рынков. - М.: Альпина Паблишер, 2013. - 288 с.

3. Гребенщиков С., Саядов В. Как делать деньги на рынке Forex. - М.: Альпина Паблишер, 2014. - 144 с.

4. Даражанов А., Банов В., Козаров М. 100% Forex. Учимся и зарабатываем. - СПб.: Admiral Markets, 2009. - 260 с.

5. Кортни Смит. Как стабильно зарабатывать на рынке FOREX. - М.: Альпина Паблишер, 2014. - 224 с.

6. Черноморец А.А. Информационные системы валютного рынка. - Белгород, БИГМУ (филиал) ОРАГС, 2006. - 173 с. / Белгородский институт государственного и муниципального управления (филиал) ОРАГС.

7. Архангельский А.Я. Язык С++ в С++Builder. - М.: Бином-Пресс, 2008. - 944 с.

8. Архангельский А.Я. Програмирование в С++ Builder 6. - М.: ООО «Бином-Пресс», 2005. - 1168 с.

9. Мартынов Н.Н. Программирование для Windows на C/C++. В 2 томах. Том 1. - М.: Бином, 2012. - 528 с.

10. Мартынов Н.Н. Программирование для Windows на С/С++. В 2 томах. Том 2. - М.: Бином-Пресс, 2013. - 480 с.

11. Пахомов Б. C/C++ и MS Visual C++ 2010 для начинающих. - СПб.: БХВ-Петербург, 2010. - 711 с.

12. Страуструп Б. Язык программирования С++. - М.: Бином, 2011. - 1136 с.

13. Фридман А.Л. Язык программирования Си++. Курс лекций. - М.: Интернет-университет информационных технологий, 2010. - 264 с.

Приложение

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

#include «stdafx.h»

#include <iostream>

#include <math.h>

#include <fstream>

using namespace std;

int JumpExists (double*Mas, int i, double Delta1Min, double Delta2Min, int sizeW);

int ReturnExists (double*Mas, int i, int sign0, int sizeR);

int main(void)

{

double EUR[30], GBP[30], CHF[30], JPY[30], z, Delta1Min, Delta2Min;

int N0, FlagOpen, signEURUSD, signGBPUSD, signUSDCHF, signUSDJPY, sizeW, sizeR, ReturnEURUSD, ReturnGBPUSD, ReturnUSDCHF, ReturnUSDJPY;

char WorkPair;

ifstream infile;

int NN0 = 30; // максимальное количество элементов в массивах вылют

sizeW = 3;

Delta1Min = 1;

Delta2Min = 5;

sizeR = 4;

 // -чтение EUR-

 // открыть файл *.txt под именем infile

infile.open («EUR1.txt»);

 // Проверить, открылся ли файл

if (! infile)

{

cout << «File EUR1.txt can't be opened» << endl;

system («pause»);

return 0;

}

N0 = 0;

 // читаем из потока, пока не найден конец файла eof

while (! infile.eof())

{

 // чтение очередной координаты из потока

infile >> z;

cout << «z=» << z << endl;

EUR [N0++] = z;

 // ограничение количества данных для ввода limited amount of input data

if (N0 >= NN0)

{

cout << «In classification is used only first 30» << NN0 <<» elements»;

break;

}

} //while (! infile.eof())

infile.close(); // закрыть файл, связанный с потоком infile

 // Отладочная печать

cout << «N0=» << N0 << endl;

for (int i = 0; i < N0; i++)

{

cout << «EUR i EUR[i]=» << i << " " << EUR[i] << endl;

}

 // -чтение GBP-

 // открыть файл *.txt под именем infile

infile.open («GBP1.txt»);

 // Проверить, открылся ли файл

if (! infile)

{

cout << «File GBP1.txt can't be opened» << endl;

system («pause»);

return 0;

}

N0 = 0;

 // читаем из потока, пока не найден конец файла eof

while (! infile.eof())

{

 // чтение очередной координаты из потока

infile >> z;

cout << «z=» << z << endl;

GBP [N0++] = z;

 // ограничение количества данных для ввода limited amount of input data

if (N0 >= NN0)

{

cout << «In classification is used only first 30» << NN0 <<» elements»;

break;

}

} //while (! infile.eof())

infile.close(); // закрыть файл, связанный с потоком infile

 // Отладочная печать

cout << «N0=» << N0 << endl;

for (int i = 0; i < N0; i++)

{

cout << «GBP i GBP[i]=» << i << " " << GBP[i] << endl;

}

 // -чтение CHF-

 // открыть файл *.txt под именем infile

infile.open («CHF1.txt»);

 // Проверить, открылся ли файл

if (! infile)

{

cout << «File CHF1.txt can't be opened» << endl;

system («pause»);

return 0;

}

N0 = 0;

 // читаем из потока, пока не найден конец файла eof

while (! infile.eof())

{

 // чтение очередной координаты из потока

infile >> z;

cout << «z=» << z << endl;

CHF [N0++] = z;

 // ограничение количества данных для ввода limited amount of input data

if (N0 >= NN0)

{

cout << «In classification is used only first 30» << NN0 <<» elements»;

break;

}

} //while (! infile.eof())

infile.close(); // закрыть файл, связанный с потоком infile

 // Отладочная печать

cout << «N0=» << N0 << endl;

for (int i = 0; i < N0; i++)

{

cout << «CHF i CHF[i]=» << i << " " << CHF[i] << endl;

}

 // -чтение JPY-

 // открыть файл *.txt под именем infile

infile.open («JPY1.txt»);

 // Проверить, открылся ли файл

if (! infile)

{

cout << «File JPY1.txt can't be opened» << endl;

system («pause»);

return 0;

}

N0 = 0;

 // читаем из потока, пока не найден конец файла eof

while (! infile.eof())

{

 // чтение очередной координаты из потока

infile >> z;

cout << «z=» << z << endl;

JPY [N0++] = z;

 // ограничение количества данных для ввода limited amount of input data

if (N0 >= NN0)

{

cout << «In classification is used only first 30» << NN0 <<» elements»;

break;

}

} //while (! infile.eof())

infile.close(); // закрыть файл, связанный с потоком infile

 // Отладочная печать

cout << «N0=» << N0 << endl;

for (int i = 0; i < N0; i++)

{

cout << «JPY i JPY[i]=» << i << " " << JPY[i] << endl;

}

 // =========================================

cout << «Input is finished»<< endl;

 // =================================================

FlagOpen = 0; // нет открытой позиции

cout << «Input WorkPair (e, g, c, j)»;

 //e-EURUSD, g-GBPUSD, c-USDCHF, j-USDJPY

cin >> WorkPair;

for (int i = sizeW + 1; i<N0; i++)

{

if (FlagOpen == 0)

{

 // открыть позицию

int i1 = i;

cout << «===EURUSD is analysed===» << endl;

signEURUSD = JumpExists (EUR, i1, Delta1Min, Delta2Min, sizeW);

if (signEURUSD == 0)

continue;

cout << «signEURUSD» << signEURUSD << endl;

cout << «===GBPUSD is analysed===» << endl;

signGBPUSD = JumpExists (GBP, i1, Delta1Min, Delta2Min, sizeW);

if (signGBPUSD == 0)

continue;

cout << «signGBPUSD» << signGBPUSD << endl;

cout << «===USDCHF is analysed===» << endl;

signUSDCHF = JumpExists (CHF, i1, Delta1Min, Delta2Min, sizeW);

if (signUSDCHF == 0)

continue;

cout << «signUSDCHF» << signUSDCHF << endl;

cout << «===USDJPY is analysed===» << endl;

signUSDJPY = JumpExists (JPY, i1, Delta1Min, Delta2Min, sizeW);

if (signUSDJPY == 0)

continue;

cout << «signUSDJPY» << signUSDJPY << endl;

if ((signEURUSD == signGBPUSD) && (signUSDCHF == signUSDJPY) && (signEURUSD!= signUSDCHF))

{

 // открыть позицию

switch (WorkPair)

{

case 'e': {if (signEURUSD < 0)

cout << «Open short position EURUSD (sell) i= «<< i << endl;

else

cout << «Open long position EURUSD (buy) i= «<< i << endl;

break;}

case 'g': {if (signGBPUSD < 0)

cout << «Open short position GBPUSD (sell) i= «<< i << endl;

else

cout << «Open long position GBPUSD (buy) i= «<< i << endl;

break;}

case 'c': {if (signUSDCHF < 0)

cout << «Open short position USDCHF (sell) i= «<< i << endl;

else

cout << «Open long position USDCHF (buy) i= «<< i << endl;

break;}

case 'j': {if (signUSDCHF < 0)

cout << «Open short position USDJPY (sell) i= «<< i << endl;

else

cout << «Open long position USDJPY (buy) i= «<< i << endl;

break;}

default: cout << «error1» << endl;

} //switch

FlagOpen = 1;

} //if sign

} //if Flag

else

{

 // закрыть позицию

switch (WorkPair)

{

case'e': {

ReturnEURUSD = ReturnExists (EUR, i, signEURUSD, sizeR);

if (ReturnEURUSD > 0)

{

cout << «Close position EURUSD i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

case'g': {

ReturnGBPUSD = ReturnExists (GBP, i, signGBPUSD, sizeR);

if (ReturnGBPUSD > 0)

{

cout << «Close position GBPUSD i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

case'c': {

ReturnUSDCHF = ReturnExists (CHF, i, signUSDCHF, sizeR);

if (ReturnUSDCHF > 0)

{

cout << «Close position USDCHF i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

case'j': {

ReturnUSDJPY = ReturnExists (JPY, i, signUSDJPY, sizeR);

if (ReturnUSDJPY > 0)

{

cout << «Close position USDJPY i=» << i << endl;

FlagOpen = 0;

}

else

cout << «Keep open position i=» << i << endl;

break;}

default: cout << «error2» << endl;

} //switch

} //else

} //for

system («pause»);

return 0;

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.