Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью и заслужи признание тысячи трейдеров!
SAMER
801
SAMER 2015.05.01 17:27 

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

 

Строю регрессию используя данный пример:

 

//*************************************************************************
  //  Аппроксимация до прямой:
  //
  //  dY[nI] = dA + dB * nX[nI] - общая формула прямой
  //  
  //  dB = (nN*dSumXY - dSumX*dSumY) / (nN*dSumX2 - dSumX*dSumX)
  //
  //  dA = (dSumY - dB*dSumX) / nN
  //
  //  dSumXY = nX[0]*dY[0] + nX[1]*dY[1] + ... + nX[nN-1]*dY[nN-1]
  //
  //  dSumX  = nX[0] + nX[1] + ... + nX[nN-1]
  //  
  //  dSumY  = dY[0] + dY[1] + ... + dY[nN-1]  
  //  
  //  dSumX2 = nX[0]*nX[0] + nX[1]*nX[1] + ... + nX[nN-1]*nX[nN-1]
  //    
  //  Функция  вычисляет  коэффициенты  аппроксимирующей прямой.     
  //  
  //  Входные параметры:
  //      X  -   массив  целых чисел с нумерацией элементов от 0 до N-1.
  //              Содержит набор абсцисс, в которых известны значения функции.
  //      Y   -  массив  вещественных  чисел с нумерацией элементов от 0 до N-1.
  //              Содержит набор значений функции.
  //      N   -  число точек. N>=1
  //                                  
  //  Выходные параметры:
  //      A, B - коэффициенты аппроксимирующей прямой y=a+b*x
  //
  //  Реализация функции: Volt ( voltair@inbox.ru ) 
  //*************************************************************************/
void OnStart()
  {

   int      N=6;                 // Размер массива
   double   Y[],X[],A=0.0, B=0.0;
   
  ArrayResize(X,N);
  ArrayResize(Y,N);
      
// проверка 
    X[0]=1;
    X[1]=2;
    X[2]=3;
    X[3]=4;
    X[4]=5;
    X[5]=6;
    
    Y[0]=1;
    Y[1]=3;    
    Y[2]=2;
    Y[3]=6;    
    Y[4]=4;    
    Y[5]=5;
    
  LinearRegr(X, Y, N, A, B);
  
  for(int i=0;i<6;i++)
  Print(A*X[i]+B);
  }
//+------------------------------------------------------------------+
void LinearRegr(double &X[],double &Y[],int N,double &A,double &B)
  {
   double mo_X=0.0,mo_Y=0.0,var_0=0.0,var_1=0.0;

   for(int i=0; i<N; i++)
     {
      mo_X +=X[i];
      mo_Y +=Y[i];
     }
   mo_X /=N;
   mo_Y /=N;

   for(int i=0; i<N; i++)
     {
      var_0 +=(X[i]-mo_X)*(Y[i]-mo_Y);
      var_1 +=(X[i]-mo_X)*(X[i]-mo_X);
     }
   A = var_0 / var_1;
   B = mo_Y - A * mo_X;
  }
//+------------------------------------------------------------------+
Dmitry Fedoseev
41190
Dmitry Fedoseev 2015.05.01 17:32  
Класс! Сам вопрос задал, сам себе ответил. Все бы так.
SAMER
801
SAMER 2015.05.01 17:35  
Integer:
Класс! Сам вопрос задал, сам себе ответил. Все бы так.
Что сделать с лотом чтобы регрессия была как у баланса? 
Dmitry Fedoseev
41190
Dmitry Fedoseev 2015.05.01 18:00  
Summer:
Что сделать с лотом чтобы регрессия была как у баланса? 

Масштаб по вертикали увеличить у графика лота. Шутка конечно.

Если сам лот увеличить, то и линия баланса круче станет. Следовательно задача не решаема. 

Avals
3157
Avals 2015.05.03 04:02  
Summer:
Что сделать с лотом чтобы регрессия была как у баланса? 
разница наклона в величине используемого плеча. Поэтому, чтобы они были одинаковыми нужно входить без плеча)) Правда тогда линия баланса опустится к линии лота, а не наоборот
Юсуфходжа
3533
Юсуфходжа 2015.05.04 23:19  
Summer:
Что сделать с лотом чтобы регрессия была как у баланса? 
Нормировать.
Дмитрий
1046
Дмитрий 2015.05.05 07:27  
ну лот из "0" идти не может....
Дмитрий
1046
Дмитрий 2015.05.05 07:28  

а лучше создавайте систему для тестирования с постоянным лотом, умножить всегда успеете

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий