среда, 8 декабря 2010 г.

Карточка №173 «Русское сафари на FOREX: геометрическое прогрессорство»

ИСТОЧНИК:
Марков С., «Русское сафари на FOREX: облава на маленьких зеленых человечков»

СИТУАЦИЯ:
Рассмотрим ситуацию, возникающую при торговле на валютном рынке FOREX. В ходе успешной торговли (что, к глубокому сожалению сообщества трейдеров, случается не так часто, как хотелось бы) депозит, то есть средства на торговом счете, увеличивается. Идеально было бы по мере увеличения средств тут же выставлять на торги большую сумму (увеличить размер лота), что повышает норму прибыли. Делать это вручную – трудоемкая и времязатратная вспомогательная операция.

Другая вероятная, хоть и нежеланная ситуация: при не слишком успешной торговле или же при выводе части средств с депозита необходимо, наоборот, пропорционально уменьшить лот, т.е. сумму, выводимую на торги. Эту операцию также желательно было бы автоматизировать, исключив «ручные» подсчеты и управление размером лота. Возможно ли реализовать указанные операции виде программы?

ИДЕАЛЬНЫЙ КОНЕЧНЫЙ РЕЗУЛЬТАТ:
Программа САМА подстраивается под изменение торгового баланса.

СИСТЕМНОЕ ПРОТИВОРЕЧИЕ:
Депозит должен сам управлять размером лота… и не должен сам управлять.

РЕШЕНИЕ:        
Ниже приведен фрагмент программного кода, позволяющий автоматически и гибко управлять размером лота (частью депозита, выводимой на торги).

………………………………………………………….
Lots=MathFloor (AccountEquity()*XL/BALANCE_INIT)/10;

/*Размер лота выполнен динамичным, гибко меняющимся соответственно изменению капитала. */
………………………………………………………..

где
Lots – размер контракта в базовой валюте инструмента (для примера: минимально допустимый размер лота  Lots = 0.1)

AccountEquitydouble AccountEquity( )
Возвращает сумму собственных средств для текущего счета. Расчет equity зависит от настроек торгового сервера.

BALANCE_INIT – размер начального депозита; для примера: 10000 «убитых енотов» ( у.е., валюта депозита :))

MathFloor double MathFloor (double x)
Функция возвращает числовое значение, представляющее наибольшее целое число, которое меньше или равно x. (В совокупности с операцией деления на 10 используется для округления данных с точностью до одного знака после запятой).

XL - коэффициент экспоненциальности, эмпирически выведенный параметр (для примера: XL = 0.87)
…………….

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

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

ИСПОЛЬЗОВАНЫЙ ПРИЕМ:
Закон повышения идеальности системы
Закон динамизации систем
Функционально-идеальное моделирование (свертывание)
Прием «посредник»

КОММЕНТАРИЙ:
Для тех, кто пока не имеет представления о валютном трейдинге, торговой платформе MetaTrader  и об MQL-программировании, данный пример будет совершенно не интересен. Привожу его лишь в качестве одной из немногих известных мне иллюстраций применения элементов ТРИЗ в таких «невещественных», «нежелезных» технических областях как программирование.

Некоторые интересные соображения о возможностях применения ТРИЗ в программировании заинтересованный читатель сможет найти в книге: 
Уразаев В. ТРИЗ в электронике. – М.:ТЕХНОСФЕРА, 2006. – С.221-224

КАТЕГОРИЯ:
ТРИЗ в программировании

Комментариев нет:

Отправить комментарий