Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 3267

 
mytarmailS #:


para cada función hay ayuda "signo de interrogación + nombre de la función" en la consola





También existen paquetes especializados para la simulación de series temporales


https://cran.r-project.org/web/packages/simts/vignettes/vignettes.html

https://search.r-project.org/CRAN/refmans/forecast/html/simulate.ets.html

Gracias
 
mytarmailS #:


para cada función hay ayuda "signo de interrogación + nombre de la función" en la consola

mal, haces una distribución normal, pero en primer plano es una distribución de cola

 
Maxim Dmitrievsky #:

Incorrecto, estás haciendo una distribución normal, y la forex tiene cola.

Mostré un método simple, las simulaciones más correctas en paquetes especiales, allí todo es mucho más complicado que simplemente repetir la distribución.

 
Maxim Dmitrievsky #:

Incorrecto, estás haciendo una distribución normal, y la forex tiene cola.

++

Si ya tienes un array de ticks descargado, yo haría como sugirió fxsaber por aquí, generar un nuevo array de ticks con una probabilidad del 50% al alza o a la baja. Y haría 100500 muestras tan diferentes.
.

Sería una SB, con volatilidad como los ticks originales.
 
sibirqk #:

++

Si ya hay un array de ticks descargado, yo haría como sugirió fxsaber por aquí, generar un nuevo array de ticks con un 50% de probabilidad de subir o bajar. Y haría 100500 muestras tan diferentes.
.

Sería un SB, con volatilidad como los ticks originales.
Lo hice a través de KDE (kernel density estimation), obtengo distribución de mercado también
 

¡Es un gran libro!

Debe cubrir todos los problemas del Ministerio de Defensa.

Tidy Modeling with R
Tidy Modeling with R
  • Max Kuhn and Julia Silge
  • www.tmwr.org
The tidymodels framework is a collection of R packages for modeling and machine learning using tidyverse principles. This book provides a thorough introduction to how to use tidymodels, and an outline of good methodology and statistical practice for phases of the modeling process.
 

R destaca por su mezcolanza. En un momento dado, tiene de todo, cualquier paquete para cualquier ocasión.

Pero al cabo de un año o dos, es inimitable: será imposible ejecutar los ejemplos del libro.

 
Maxim Kuznetsov #:

R es maravilloso....

Todo lo demás no es cierto)
 
Forester #:

Creo que PearsonCorrM2 funcionará rápidamente. Alimentamos 1 matriz completa, 2 ª matriz de una fila para ser comprobado. Y si vas desde el final, se puede especificar el tamaño de la primera matriz como el número de la fila siguiente, para no volver a calcular la correlación repetidamente a filas por debajo de la fila que se está comprobando.

Al principio intenté hacer la variante frontal: contar todas las filas cada vez. Me dio la impresión de que hay algún error en Alglib, porque yo mismo no pude encontrarlo.

#include <Math\Alglib\statistics.mqh> // https://www.mql5.com/ru/code/11077

const matrix<double> CorrMatrix( const matrix<double> &Matrix )
{
  matrix<double> Res = {};
  
  const CMatrixDouble MatrixIn(Matrix);
  CMatrixDouble MatrixOut;  

  if (CBaseStat::PearsonCorrM(MatrixIn, MatrixIn.Rows(), MatrixIn.Cols(), MatrixOut)) // https://www.mql5.com/ru/code/11077
    Res = MatrixOut.ToMatrix();
  
  return(Res);
}

const matrix<double> CorrMatrix2( const matrix<double> &Matrix )
{
  matrix<double> Res = {};
  Res.Init(Matrix.Cols(), Matrix.Cols());
  
  const CMatrixDouble MatrixIn(Matrix);
  CMatrixDouble Vector(Matrix);
  CMatrixDouble Corr;

  for (int i = 0; i < (int)Matrix.Cols(); i++)
  {
    if (i)
      Vector.SwapCols(0, i);
    
    CBaseStat::PearsonCorrM2(Vector, MatrixIn, MatrixIn.Rows(), 1, MatrixIn.Cols(), Corr);
      
    Res.Col(Corr.Row(0), i);
  }
  
  return(Res);
}

#property script_show_inputs

input int inRows = 5; // Длина строки
input int inCols = 100; // Количество строк

void FillArray( double &Array[], const int Amount )
{
  for (uint i = ArrayResize(Array, Amount); (bool)i--;)
    Array[i] = MathRand();
}

bool IsEqual( matrix<double> &Matrix1, const matrix<double> &Matrix2, const double Sens = 1 e-10 )
{
  Matrix1 -= Matrix2;  
  
  const bool Res = (MathMax(MathAbs(Matrix1.Max()), MathAbs(Matrix1.Min())) < Sens);
  
  Matrix1 += Matrix2;
  
  return(Res);
}

#define  TOSTRING(A) #A + " = " + (string)(A) + " "

void OnStart()
{  
  double Array[];
  FillArray(Array, inRows * inCols);

  matrix<double> Matrix;  
  Matrix.Assign(Array);
  Matrix.Init(inCols, inRows);
  Matrix = Matrix.Transpose();
  
  Print(TOSTRING(inRows) + TOSTRING(inCols));
  
  matrix<double> Matrix1 = CorrMatrix(Matrix);
  matrix<double> Matrix2 = CorrMatrix2(Matrix);
  matrix<double> Matrix3 = Matrix.CorrCoef(false);
  
  Print(TOSTRING(IsEqual(Matrix1, Matrix2)));  
  Print(TOSTRING(IsEqual(Matrix1, Matrix3)));  
}


El resultado suele coincidir.

inRows = 5 inCols = 90 
IsEqual(Matrix1, Matrix2) = true 
IsEqual(Matrix1, Matrix3) = true 


Pero en algunas situaciones no lo hace.

inRows = 5 inCols = 100 
IsEqual(Matrix1, Matrix2) = false 
IsEqual(Matrix1, Matrix3) = true 


Si siempre fuera así, seguro que sería un error mío. Pero hay algo sucio aquí.

 
Maxim Kuznetsov #:

R destaca por su mezcolanza. En cualquier momento tiene de todo, cualquier paquete para cualquier ocasión.

Pero al cabo de un año o dos, es inimitable: será imposible ejecutar los ejemplos del libro.

Un sistemabien estructurado con un excelente aparato de referencia creado por un equipo profesionalno puede ser un batiburrillo. El Sistema R está orientado al trading, sin distracciones hacia todo y nada en aras de la universalidad y el populismo.

Esto es exactamente lo que demuestra el libro.

Y otra cosa que hace el libro basado en R es romper la ilusión de que se puede obtener un modelo basado en MO a toda prisa, sin poseer un gran conjunto de herramientas, y lo más importante, sin entender por qué se necesita tal o cual herramienta (paquete, función), por qué se necesita tal o cual etapa de la construcción del modelo, sin entender que no se puede tirar algo - todo se vendrá abajo.