Site About Forex.com Информационный сайт о рынке Форекс

Матожидание — ничто, управление капиталом и риском — все!

Существует идиотское утверждение о том, что якобы для управления капиталом и риском необходима торговая система с положительным математическим ожиданием. Вот что пишет об этом Ральф Винс в своей книжонке \»Математика управления капиталом\»:
Матожидание - ничто, управление капиталом и риском - все!
\»В отношении управления капиталом очень важно понимать, что при игре с отрицательным ожиданием нет схемы управления деньгами, которая может сделать вас победителем.

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

Приведу рабочий код МТС для MetaTrader4, который работает по вышеизложенному принципу:

//+——————————————————————————+
//| NeuroMoneyManagement.mq4 |
//| Copyright c 2006, Yury V. Reshetov |
//| http://bigforex.biz|
//+——————————————————————————+
#property copyright \»Copyright c 2006, Yury V. Reshetov http://bigforex.biz\»
#property link \»http://bigforex.biz\»

//—- input parameters
extern int x1 = 61;
extern int x2 = 184;
extern int x3 = 92;
extern int x4 = 7;
extern double MaximumRisk = 0.82;
// StopLoss level
extern double sl = 50;
extern int MagicNumber = 888;
static int prevtime = 0;
//+——————————————————————+
//| expert initialization function |
//+——————————————————————+
int init()
{
//—-

//—-
return(0);
}
//+——————————————————————+
//| expert deinitialization function |
//+——————————————————————+
int deinit()
{
//—-

//—-
return(0);
}
//+——————————————————————+
//| expert start function |
//+——————————————————————+
int start() {

//—- check new bar

if (Time[0] == prevtime) return(0);
prevtime = Time[0];

//—- check allowed for trade

if (IsTradeAllowed()) {
RefreshRates();
} else {
prevtime = Time[1];
return(0);
}

// — indexed variable
int i = 0;

// check for opened position
int total = OrdersTotal();
for (i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
// check for symbol & magic number
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
// found opened position — exit
return(0);
}
}

//— check for type last position
total = OrdersHistoryTotal();
int op = OP_BUY;
for (i = 0; i 0) lt = getLots();
ticket = OrderSend(Symbol(), OP_BUY, lt, Ask, 3, Bid — sl * Point, Bid + sl * Point, \»NeuroMM\», MagicNumber, 0, Blue);
if (ticket < 0) {
Sleep(30000);
prevtime = Time[1];
}
} else { // short
if (perceptron() < 0) lt = getLots();
ticket = OrderSend(Symbol(), OP_SELL, lt, Bid, 3, Ask + sl * Point, Ask — sl * Point, \»NeuroMM\», MagicNumber, 0, Red);
if (ticket < 0) {
Sleep(30000);
prevtime = Time[1];
}
}
//— exit
return(0);
}
//+— The PERCEPRRON —+
// a perceiving and recognizing function

double perceptron() {
double w1 = x1 — 100.0;
double w2 = x2 — 100.0;
double w3 = x3 — 100.0;
double w4 = x4 — 100.0;
double a1 = iAC(Symbol(), 0, 0);
double a2 = iAC(Symbol(), 0, 7);
double a3 = iAC(Symbol(), 0, 14);
double a4 = iAC(Symbol(), 0, 21);
return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}

//+—————Calculate optimal lot size ————————-+

double getLots() {
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
int round = MathAbs(MathLog(minlot) / MathLog(10.0)) + 0.5;
double lot = minlot;
//—- select lot size
lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / 1000.0, round);
if (AccountFreeMargin() < lot * MarketInfo(Symbol(), MODE_MARGINREQUIRED)) {
lot = NormalizeDouble(AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED), round);
}
if(lot maxlot) lot = maxlot;
//—- return lot size
return(lot);
}

Принципы оптимизации МТС такие же, как и у его предшественника — AI:

Входные параметры:

x1, x2, x3, x4 — от 0 до 200 с шагом 1
MaximumRisk — от 0.01 до 1 с шагом 0.01
sl — от 10 до 70 с шагом 5

Скачать исходники советника можно ЗДЕСЬ

Посмотреть результаты бектеста можно ЗДЕСЬ. Оптимизация и тестирование проводилось на котировках взятых по OnDemand с реального счета ДЦ \»SystemForex\».
Если тактика применения нейронных сетей в качестве регулятора для управления капиталом и риском способна дать профит даже на заведомо убыточной торговой стратегии и даже вообще без всякой стратегии, то появляется резон ее прикладного применения к стратегиям профитным. Вот пример такого советника: МТС \»NeuroMACDwithMM\»

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

avatar
  Подписаться  
Уведомление о