Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по практике.docx
Скачиваний:
8
Добавлен:
16.03.2016
Размер:
436.17 Кб
Скачать

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;

}