Разработка в среде MetaTrader 4 советника для закрытия позиции на основе метода системного скальпирования
Необходимость совершения операций по покупке, продаже валютных контрактов с целью получения прибыли за счет изменения во времени курсов валют. Автоматический и мобильный трейдинг. Разработка в среде MetaTrader 4 советника на основе метода скальпирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 22.04.2019 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http: //www. allbest. ru/
Белгородский государственный национальный исследовательский университет Белгород, Россия
Belgorod National Research University Belgorod, Russia
Разработка в среде MetaTrader 4 советника для закрытия позиции на основе метода системного скальпирования
Development of the advisor to close a position on the basis of the method of the systemic scalping in the medium the metatrader
Межаков А.В., Сенина А.С.
Mezhakov A. V., Senina A. S.
Введение
При получении прибыли возникает проблема правильного построения прогноза о направлении изменения цены валюты и покупки валюты, цена на которую, как предполагается, будет повышаться, или продажи валюты, цена на которую по оценке участников рынка будет падать, а затем, совершив обратную сделку, получение прибыли.
Под системным скальпированием обычно понимают различные стратегии, целью которых является получение незначительных прибылей, порядка 3-10 пунктов, при обнаружении изменений цены.
Таким образом, актуальность темы работы обусловлена необходимостью совершения операций по покупке и продаже валютных контрактов с целью получения прибыли за счет изменения во времени курсов валют.
1. Обоснование выбора среды разработки
Metatrader4 - это самый популярный в мире торговый терминал, который представляет собой универсальное орудие, позволяющее с высокой эффективностью анализировать и прогнозировать рынки, мгновенно получать информацию о состоянии валютных пар и совершать выгодные торговые операции. metatrader скальпирование трейдинг валютный
По производительности она обогнала все разработки конкурентов. MetaTrader4 может обслуживать более 10 тысяч одновременно работающих трейдеров. Стоит помнить, что в это же время сервер обрабатывает десятки всевозможных финансовых инструментов, с многолетней историей котировок.
Платформа имеет распределенную архитектуру, совершенную систему безопасности, автоматический и мобильный трейдинг. С ее помощью можно контролировать настройки групп, баз данных, инструментов, источников котировок.
Терминал MetaTrader4 позволяет создавать неограниченное количество графиков с поддержкой различных временных периодов. При необходимости графики можно распечатать. Многоязычный интерфейс гарантирует дополнительное удобство использования. Также MetaTrader4 предоставляет пользователям полную конфиденциальность всех проводимых операций.
В MetaTrader4 интегрирована среда разработки MQL4, которая использует собственный специализированный редактор MetaEditor. Он позволяет создавать советники (эксперты), пользовательские индикаторы, скрипты и библиотеки любой сложности для дальнейшего использования в платформе.
Готовые приложения автоматически появляются в MetaTrader4 и могут быть немедленно запущены на исполнение.
Помимо стандартных функций редактора программ, MetaEditor обладает также встроенной Справкой, имеет выход на MQL4.community и позволяет мгновенно скачивать программы из базы бесплатных экспертов.
2. Разработка алгоритма для закрытия позиции
Алгоритм для закрытия позиции на основе метода системного скальпирования будет включать следующие шаги:
1. Определяем кол-во открытых ордеров - функция OrdersTotal()
2. Если не выбран ордер для дальнейшей работы - переходим к следующему ордеру if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
3. Выбираем только те, открытые по нашему финансовому
инструменту OrderSymbol();
Если символ, который выбрали, не равен нашему инструменту (на который перетянули мышкой скрипт), то переходим к следующему ордеру if (OrderSymbol() != Symbol()) continue;
4. Определяем тип открытого ордера - функция OrderType()
5. Задаем условия для закрытия ордера с прибылью: А. Если тип ордера BUY, то проверяем условие if (Bid > OrderOpenPrice() + TakeProfit*Point), где Bid - последняя известная цена покупки (предложение на покупку) текущего инструмента,
OrderOpenPrice() - цена открытия выбранного ордера, TakeProfit - прибыль в пунктах, Point - размер пункта текущего инструмента.
Б. Если условие А выполняется, закрываем ордер - функция
OrderClose() bool Ans=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage), где OrderTicket() - номер тикета текущего выбранного ордера, OrderLots() - количество лотов выбранного ордера, Bid - последняя известная цена покупки (предложение на покупку) текущего инструмента, Slippage - максимальное проскальзывание, т.е. насколько цена закрытия может сместиться.
В. Если тип ордера SELL, то проверяем условие
if (Ask < OrderOpenPrice() - TakeProfit*Point), где Ask - последняя известная цена продажи (запрашиваемая цена) текущего инструмента,
OrderOpenPrice() - цена открытия выбранного ордера, TakeProfit - прибыль в пунктах, Point - размер пункта текущего инструмента.
Г. Если условие В выполняется, закрываем ордер - функция
OrderClose() bool Ans=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage), где OrderTicket() - номер тикета текущего выбранного ордера, OrderLots() - количество лотов выбранного ордера, Ask - последняя известная цена продажи (запрашиваемая цена) текущего инструмента, Slippage - максимальное проскальзывание, т.е. насколько цена закрытия может сместиться.
6. Задаем условия для закрытия ордера с минимальными потерями: А. Если тип ордера BUY, то проверяем условие if (Ask < OrderOpenPrice() - StopLoss*Point), где Ask - последняя известная цена продажи (запрашиваемая цена) текущего инструмента,
OrderOpenPrice() - цена открытия выбранного ордера, StopLoss - убыток в пунктах, Point - размер пункта текущего инструмента.
Б. Если условие А выполняется, закрываем ордер - функция
OrderClose() bool Ans=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage), где OrderTicket() - номер тикета текущего выбранного ордера, OrderLots() - количество лотов выбранного ордера, Bid - последняя известная цена покупки (предложение на покупку) текущего инструмента, Slippage - максимальное проскальзывание, т.е. насколько цена закрытия может сместиться.
В. Если тип ордера SELL, то проверяем условие if (Bid > OrderOpenPrice() + StopLoss*Point), где Bid - последняя известная цена покупки (предложение на покупку) текущего инструмента, OrderOpenPrice() - цена открытия выбранного ордера, StopLoss - убыток в пунктах, Point - размер пункта текущего инструмента.
Г. Если условие В выполняется, закрываем ордер - функция
OrderClose() bool Ans=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage), где OrderTicket() - номер тикета текущего выбранного ордера, OrderLots() - количество лотов выбранного ордера, Ask - последняя известная цена продажи (запрашиваемая цена) текущего инструмента, Slippage - максимальное проскальзывание, т.е. насколько цена закрытия может сместиться.
3. Программная реализация разработанного алгоритма
//+------------------------------------------------------------------+
//| closeorder.mq4 |
//| Copyright 2015, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict extern int TakeProfit = 2; extern int Slippage = 2; extern int StopLoss = 2;
Функция pribyl отвечает за закрытие ордера с прибылью. Если при открытии ордера указывается цена TakeProfit, то ордер закрывается по достижении указанной цены, иначе закрывается при прибыли заданной в программе, в данном случае 2 пунктов.
void pribyl () {
if (TakeProfit == 0 || OrderTakeProfit() != 0) return; int cnt = OrdersTotal(); for (int i=cnt-1; i >= 0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; int type = OrderType(); if (type == OP_BUY) {
if (Bid > OrderOpenPrice() + TakeProfit*Point)
bool Ans=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage);
}
if (type == OP_SELL) {
if (Ask < OrderOpenPrice() - TakeProfit*Point)
bool Ans=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
}
}
}
Функция potery отвечает за закрытие ордера с минимальными потерями. Если при открытии ордера указывается цена StopLoss, то ордер закрывается по достижении указанной цены, иначе закрывается при потерях
заданных в программе, в данном случае 2 пунктов.
void potery () {
if (StopLoss == 0 || OrderStopLoss() != 0) return; int cnt = OrdersTotal(); for (int i=cnt-1; i >= 0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; int type = OrderType(); if (type == OP_BUY) {
if (Ask < OrderOpenPrice() - StopLoss*Point)
bool Ans=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage);
}
if (type == OP_SELL) {
if (Bid > OrderOpenPrice() + StopLoss*Point)
bool Ans=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
}
}
}
Функция start запускает наши функции.
void start() { potery (); pribyl (); }
4. Проверка работоспособности алгоритма
Для проверки работоспособности были выбраны следующие данные: тип ордера - BUY; объём - 0,01 лота; валютная пара - EUR/USD, цена
покупки - 1,08089.
В соответствии с рисунком 1, видно открытие ордера на покупку.
Рисунок 1 Открытие ордера на покупку
Закрывается ордер по цене 1,08092. Следовательно, прибыль наша составила 3 пункта.
В соответствии с рисунком 2, видно закрытие ордера на покупку.
Рисунок 2 Закрытие ордера на покупку
Таким образом, вычислительный эксперимент показал, что использование метода системного скальпирования позволяет извлекать прибыль при отсутствии существенных трендов.
Заключение
Forex очень важен для мировой экономики, имеется большая необходимость его работы. Международная торговля развивается вместе с новыми технологиями и коммуникациями. Этот рынок необходим для того, чтобы одни страны имели возможность продавать свою продукцию в другие страны, а также могли получить валюту своего государства в обмен на доллары.
Суть алгоритма для закрытия рыночных ордеров заключается в том, чтобы получить прибыль при отсутствии существенных трендов. Скальпирование на форексе - довольно безопасный метод: если сделка не удастся, трейдер теряет ничтожный процент депозита. Правда, минимальный риск компенсируется и минимальной прибылью.
Вычислительный эксперимент показал, что использование метода системного скальпирования позволяет извлекать прибыль при отсутствии существенных трендов.
Список литературы:
1. Бэстенс, Д. Нейронные сети и финансовые рынки: принятие решений в торговых операциях / Д. Бэстенс, В.М. Ван-Ден Берг, Д.
Вуд - М.: ТВП, 2007. - 366 с.
2. Мэрфи, Д.Д. Технический анализ фьючерсных рынков: Теория и практика / Д.Д. Мэрфи; Пер. с англ. О. Новицкая. - М.: Альпина
Пабл., 2011. - 610 c.
3. Черноморец, А.А. Информационные системы валютного рынка. - Белгород, БИГМУ (филиал) ОРАГС, 2006. - 173 с.
4. Элдер, А. Как играть и выигрывать на бирже. Психология. Технический анализ. Контроль над капиталом / А. Элдер; Пер. с англ. М. Волкова, А. Волков. - М.: Альпина Пабл., 2013. - 472 c.
5. Якимкин, Я. Рынок Форекс - Ваш путь к успеху / Я. Якимкин - Москва: "Светоч Л", 2005. - 68 с.
Размещено на Allbest.ru
...Подобные документы
Понятие и закономерности функционирования валютного рынка. Обзор математических средств технического анализа и подходы к их выбору. Разработка алгоритма прототипа программной системы работы на валютном рынке на основе метода системного скальпирования.
отчет по практике [460,8 K], добавлен 19.07.2015Описание ДСМ-метода автоматического порождения гипотез. Исследование результатов влияния компонентов ДСМ-метода на качество определения тональности текстов. Алгоритм поиска пересечений. N-кратный скользящий контроль. Программная реализация ДСМ-метода.
курсовая работа [727,0 K], добавлен 12.01.2014Алгоритмы поиска динамических шумов и их компенсации на основе метода Motion estimation. Разработка программного продукта для детектирования движения капель дождя и их удаления на видеопоследовательностях, и его реализация среде Microsoft Visual Studio.
магистерская работа [6,6 M], добавлен 09.02.2013Принципы разработки алгоритмов и программ на основе процедурного подхода и на основе объектно-ориентированного подхода. Реализация программы Borland Pascal 7.0, ее интерфейс. Разработка простой программы в среде визуального программирования Delphi.
отчет по практике [934,7 K], добавлен 25.03.2012Разработка программного обеспечения автоматической системы научных исследований (АСНИ) в интегрированной среде программирования Borland C++ Builder 6.0, работающего в среде ОС Windows, позволяющего осуществлять управление процессом спектрального анализа.
курсовая работа [569,3 K], добавлен 05.03.2009- Разработка и исследование метода сетевого оператора для адаптивного управления динамическим объектом
Понятие адаптивного управления как совокупности действий и методов, характеризующихся способностью управляющей системы реагировать на изменения внешней среды. Применение метода сетевого оператора для синтеза адаптивного управления мобильным роботом.
дипломная работа [1,4 M], добавлен 17.09.2013 Определение состава таблиц проектируемой реляционной базы данных, их полей и первичных ключей с использованием ER-метода логического проектирования БД. Особенности ER-метода для экономических приложений. Физическое проектирование БД в среде СУБД Access.
курсовая работа [1,7 M], добавлен 14.02.2012Разработка программного продукта для экспорта спецификации из приложения PartList. Выбор метода передачи информации в файл, формата для представления. Разработка конвертера, реализация пользовательского интерфейса. Обоснование актуальности разработки.
дипломная работа [2,6 M], добавлен 25.09.2014Описание документооборота института и кафедры. Анализ технологии документооборота на основе диаграмм SADT (IDEF0). Обоснование проектных решений по видам обеспечения. Разработка базы данных на основе даталогического моделирования в среде MS Access.
дипломная работа [3,1 M], добавлен 09.02.2012Принципы организации и структура валютного рынка, основы организации валютных операций. Разработка информационной модели системы "Учет валютных операций" в СУБД Access. Функциональная схема программного приложения, нормализация информационных объектов.
курсовая работа [1,9 M], добавлен 11.11.2010Разработка функциональной модели предметной области. Построение UML диаграмм в среде Pacestar UML Diagrammer. Выбор программных средств разработки. Разработка логической и физической модели данных. Разработка клиентского приложения ИС в среде Access.
курсовая работа [2,2 M], добавлен 09.03.2011Обеспечение наибольшей прибыли от реализации выпускаемой продукции мебельной фабрики. Решение задачи в среде MS Excel. Выполнение преобразования симплексной таблицы методом Жордана-Гаусса. Применение метода динамического программирования и сечения Гомори.
курсовая работа [58,9 K], добавлен 28.10.2014Разработка программы, позволяющей регистрировать значения измерений, оценивать процесс и предлагать варианты приемки на основе результатов измерений. Использование метода пошаговой проверки процентной части от общего количества поступившей продукции.
курсовая работа [1014,4 K], добавлен 20.10.2009Разработка аппаратно-программного комплекса для осуществления идентификации объектов управления на основе вещественного интерполяционного метода. Анализ работоспособности аппаратно-программного комплекса, пример идентификации объекта управления.
магистерская работа [2,2 M], добавлен 11.11.2013Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.
лабораторная работа [254,4 K], добавлен 23.11.2014Разработка и освоение в современном производстве информационной подсистемы. Создание базы данных в среде MS SQL Server 2008 и приложения в среде MS Visual Studio 2012. Процесс ввода при выборе пунктов меню. Заполнение формы с критериями на фильтрацию.
отчет по практике [834,4 K], добавлен 27.11.2013Проектирование устройства, выполняющего функцию определения минимального давления на основе информации о показаниях полученных от 7 датчиков. Разработка набора команд управления микроконтроллером в среде программного обеспечения Code Vision AVR.
курсовая работа [24,5 K], добавлен 28.06.2011Разработка головоломки на основе гравюры Альбрехта Дюрера "Магический квадрат". Главные составные части среды программирования Delphi, особенности ее стандартных компонентов и процесса сохранения программы. Компоненты и алгоритмы создаваемой программы.
курсовая работа [147,1 K], добавлен 05.02.2015Алгоритм декомпозиции графов и расчеты динамики логических сетей. Преобразование пространства булевых векторов. Описание блоков программной реализации и их взаимодействие. Разработка программы "слияния" статистик на основе алгоритма объединения.
дипломная работа [111,8 K], добавлен 07.03.2012Понятие фрактала, принципы создания изображения. Разработка алгоритма и режимов генерации ландшафта. Описание программы FracLandscapes.exe. в среде разработки Delphi 10. Примеры построения ландшафта с использованием различных режимов и количества изгибов.
курсовая работа [688,9 K], добавлен 04.05.2014