L'idée était de voir si la stratégie de trading réelle présentée par Devavrat Shah et Kang Zhang Laboratory for Information and Decision Systems, Department of EECS Massachusetts Institute of Technology était adaptée au forex.
lilita bogachkova: L'idée était de voir si la stratégie de trading réelle qui était présentée était adaptée au forex.
Je pensais avoir été clair sur le fait que ça ne l'était pas. Mais la bonne nouvelle est que les marchés ne se limitent pas au forex. Les crypto-monnaies ont un seuil d'entrée de quelques quidams.
lilita bogachkova: L'idée était de voir si la stratégie de trading réelle présentée par Devavrat Shah et Kang Zhang Laboratory for Information and Decision Systems, Department of EECS Massachusetts Institute of Technology était adaptée au forex.
J'ai dit non, ça ne marche pas.
La version russe du lien décrit le principe de calcul.
"6. Larégression bayésienne est similaire à la régression ridge, mais elle repose sur l'hypothèse que le bruit (erreur) dans les données est normalement distribué - on suppose donc qu'une compréhension générale de la structure des données est déjà disponible".
Il n'y a pas de bruit dans le forex, et encore moins une distribution normale. Si c'était le cas, il n'y aurait pas de frontière entre un plat et une tendance, il n'y aurait pas de retournement de tendance, c'est-à-dire avec une distribution normale. Si nous avions une distribution normale, le prix irait avec le bruit d'un côté à un certain angle et alors nous serions foutus.
Dans la version russe du lien, le principe de calcul est décrit.
"6. Larégression bayésienne est similaire à la régression ridge, mais elle est basée sur l'hypothèse que le bruit (erreur) dans les données est normalement distribué - on suppose donc qu'une compréhension générale de la structure des données existe déjà".
Il n'y a pas de bruit dans le forex, et encore moins sa distribution normale. Si c'était le cas, il n'y aurait pas de frontière entre le plat et la tendance, il n'y aurait pas de retournement de tendance, c'est-à-dire avec la distribution normale. Si nous avions une distribution normale, le prix irait avec le bruit d'un côté à un certain angle et alors nous serions foutus.
On pourrait penser qu'un "bitcoin" avec du bruit irait dans la même direction, avec un certain angle et un bip.
S'il y a un sujet, alors on s'attend à ce que le sujet soit le sujet de la conversation. Le sujet porte sur la stratégie présentée(régression bayésienne - quelqu'un a-t-il fait un EA en utilisant cet algorithme ?) mais pas sur le choix entre les méthodes de calcul de la régression.
Il semble que tout soit implémenté par mql - il y a ALGLIB- k-mean et multivariate linear-fit - disponible. Il reste à découvrir comment l'algorithme fonctionne (et cela n'intéresse personne - certains font l'éloge de R, d'autres sont bloqués sur la régression, qui se soucie de quoi en général). Quelqu'un veut discuter de l'algorithme ?
Il semble que tout soit implémenté par mql - il y a ALGLIB- k-mean et multivariate linear-fit - disponible. Il reste à découvrir comment l'algorithme fonctionne (et cela n'intéresse personne - certains font l'éloge de R, d'autres sont bloqués sur la régression, qui se soucie de quoi en général). Quelqu'un souhaite-t-il discuter de l'algorithme ?
Pour ce faire, vous devez envoyer tout le monde dans la bonne direction. k-mean est implémenté par la classeCKMeans située dans le fichierdataanalysis.mqh.
Voici le cours lui-même :
class CKMeans
{
private:
//--- private methodstaticbool SelectCenterPP(CMatrixDouble &xy,constint npoints,constint nvars,CMatrixDouble ¢ers,bool &cbusycenters[],constint ccnt,double &d2[],double &p[],double &tmp[]);
public:
//--- constructor, destructor
CKMeans(void);
~CKMeans(void);
//--- public methodstaticvoid KMeansGenerate(CMatrixDouble &xy,constint npoints,constint nvars,constint k,constint restarts,int &info,CMatrixDouble &c,int &xyc[]);
};
//+------------------------------------------------------------------+//| Constructor without parameters |//+------------------------------------------------------------------+
CKMeans::CKMeans(void)
{
}
//+------------------------------------------------------------------+//| Destructor |//+------------------------------------------------------------------+
CKMeans::~CKMeans(void)
{
}
//+------------------------------------------------------------------+//| k-means++ clusterization |//| INPUT PARAMETERS: |//| XY - dataset, array [0..NPoints-1,0..NVars-1]. |//| NPoints - dataset size, NPoints>=K |//| NVars - number of variables, NVars>=1 |//| K - desired number of clusters, K>=1 |//| Restarts - number of restarts, Restarts>=1 |//| OUTPUT PARAMETERS: |//| Info - return code: |//| * -3, if task is degenerate (number of |//| distinct points is less than K) |//| * -1, if incorrect |//| NPoints/NFeatures/K/Restarts was passed|//| * 1, if subroutine finished successfully |//| C - array[0..NVars-1,0..K-1].matrix whose columns|//| store cluster's centers |//| XYC - array[NPoints], which contains cluster |//| indexes |//+------------------------------------------------------------------+staticvoid CKMeans::KMeansGenerate(CMatrixDouble &xy,constint npoints,
constint nvars,constint k,
constint restarts,int &info,
CMatrixDouble &c,int &xyc[])
{
//--- create variablesint i=0;
int j=0;
double e=0;
double ebest=0;
double v=0;
int cclosest=0;
bool waschanges;
bool zerosizeclusters;
int pass=0;
int i_=0;
double dclosest=0;
//--- creating arraysint xycbest[];
double x[];
double tmp[];
double d2[];
double p[];
int csizes[];
bool cbusy[];
double work[];
//--- create matrix
CMatrixDouble ct;
CMatrixDouble ctbest;
//--- initialization
info=0;
//--- Test parametersif(npoints<k || nvars<1 || k<1 || restarts<1)
{
info=-1;
return;
}
//--- TODO: special case K=1//--- TODO: special case K=NPoints
info=1;
//--- Multiple passes of k-means++ algorithm
ct.Resize(k,nvars);
ctbest.Resize(k,nvars);
ArrayResizeAL(xyc,npoints);
ArrayResizeAL(xycbest,npoints);
ArrayResizeAL(d2,npoints);
ArrayResizeAL(p,npoints);
ArrayResizeAL(tmp,nvars);
ArrayResizeAL(csizes,k);
ArrayResizeAL(cbusy,k);
//--- change value
ebest=CMath::m_maxrealnumber;
//--- calculationfor(pass=1;pass<=restarts;pass++)
{
//--- Select initial centers using k-means++ algorithm//--- 1. Choose first center at random//--- 2. Choose next centers using their distance from centers already chosen//--- Note that for performance reasons centers are stored in ROWS of CT,not//--- in columns. We'll transpose CT in the end and store it in the C.
i=CMath::RandomInteger(npoints);
for(i_=0;i_<=nvars-1;i_++)
ct[0].Set(i_,xy[i][i_]);
cbusy[0]=true;
for(i=1;i<=k-1;i++)
cbusy[i]=false;
//--- checkif(!SelectCenterPP(xy,npoints,nvars,ct,cbusy,k,d2,p,tmp))
{
info=-3;
return;
}
//--- Update centers://--- 2. update center positionsfor(i=0;i<=npoints-1;i++)
xyc[i]=-1;
//--- cyclewhile(true)
{
//--- fill XYC with center numbers
waschanges=false;
for(i=0;i<=npoints-1;i++)
{
//--- change values
cclosest=-1;
dclosest=CMath::m_maxrealnumber;
for(j=0;j<=k-1;j++)
{
//--- calculationfor(i_=0;i_<=nvars-1;i_++)
tmp[i_]=xy[i][i_];
for(i_=0;i_<=nvars-1;i_++)
tmp[i_]=tmp[i_]-ct[j][i_];
v=0.0;
for(i_=0;i_<=nvars-1;i_++)
v+=tmp[i_]*tmp[i_];
//--- checkif(v<dclosest)
{
cclosest=j;
dclosest=v;
}
}
//--- checkif(xyc[i]!=cclosest)
waschanges=true;
//--- change value
xyc[i]=cclosest;
}
//--- Update centersfor(j=0;j<=k-1;j++)
csizes[j]=0;
for(i=0;i<=k-1;i++)
{
for(j=0;j<=nvars-1;j++)
ct[i].Set(j,0);
}
//--- change valuesfor(i=0;i<=npoints-1;i++)
{
csizes[xyc[i]]=csizes[xyc[i]]+1;
for(i_=0;i_<=nvars-1;i_++)
ct[xyc[i]].Set(i_,ct[xyc[i]][i_]+xy[i][i_]);
}
zerosizeclusters=false;
for(i=0;i<=k-1;i++)
{
cbusy[i]=csizes[i]!=0;
zerosizeclusters=zerosizeclusters || csizes[i]==0;
}
//--- checkif(zerosizeclusters)
{
//--- Some clusters have zero size - rare,but possible.//--- We'll choose new centers for such clusters using k-means++ rule//--- and restart algorithmif(!SelectCenterPP(xy,npoints,nvars,ct,cbusy,k,d2,p,tmp))
{
info=-3;
return;
}
continue;
}
//--- copyfor(j=0;j<=k-1;j++)
{
v=1.0/(double)csizes[j];
for(i_=0;i_<=nvars-1;i_++)
ct[j].Set(i_,v*ct[j][i_]);
}
//--- if nothing has changed during iterationif(!waschanges)
break;
}
//--- 3. Calculate E,compare with best centers found so far
e=0;
for(i=0;i<=npoints-1;i++)
{
for(i_=0;i_<=nvars-1;i_++)
tmp[i_]=xy[i][i_];
for(i_=0;i_<=nvars-1;i_++)
tmp[i_]=tmp[i_]-ct[xyc[i]][i_];
//--- calculation
v=0.0;
for(i_=0;i_<=nvars-1;i_++)
v+=tmp[i_]*tmp[i_];
e=e+v;
}
//--- checkif(e<ebest)
{
//--- store partition.
ebest=e;
//--- function call
CBlas::CopyMatrix(ct,0,k-1,0,nvars-1,ctbest,0,k-1,0,nvars-1);
//--- copyfor(i=0;i<=npoints-1;i++)
xycbest[i]=xyc[i];
}
}
//--- Copy and transpose
c.Resize(nvars,k);
//--- function call
CBlas::CopyAndTranspose(ctbest,0,k-1,0,nvars-1,c,0,nvars-1,0,k-1);
//--- copyfor(i=0;i<=npoints-1;i++)
xyc[i]=xycbest[i];
}
//+------------------------------------------------------------------+//| Select center for a new cluster using k-means++ rule |//+------------------------------------------------------------------+staticbool CKMeans::SelectCenterPP(CMatrixDouble &xy,constint npoints,
constint nvars,CMatrixDouble ¢ers,
bool &cbusycenters[],constint ccnt,
double &d2[],double &p[],double &tmp[])
{
//--- create variablesbool result;
int i=0;
int j=0;
int cc=0;
double v=0;
double s=0;
int i_=0;
//--- create arraydouble busycenters[];
//--- copyArrayCopy(busycenters,cbusycenters);
//--- initialization
result=true;
//--- calculationfor(cc=0;cc<=ccnt-1;cc++)
{
//--- checkif(!busycenters[cc])
{
//--- fill D2for(i=0;i<=npoints-1;i++)
{
d2[i]=CMath::m_maxrealnumber;
for(j=0;j<=ccnt-1;j++)
{
//--- checkif(busycenters[j])
{
for(i_=0;i_<=nvars-1;i_++)
tmp[i_]=xy[i][i_];
for(i_=0;i_<=nvars-1;i_++)
tmp[i_]=tmp[i_]-centers[j][i_];
//--- calculation
v=0.0;
for(i_=0;i_<=nvars-1;i_++)
v+=tmp[i_]*tmp[i_];
//--- checkif(v<d2[i])
d2[i]=v;
}
}
}
//--- calculate P (non-cumulative)
s=0;
for(i=0;i<=npoints-1;i++)
s=s+d2[i];
//--- checkif(s==0.0)
return(false);
//--- change value
s=1/s;
for(i_=0;i_<=npoints-1;i_++)
p[i_]=s*d2[i_];
//--- choose one of points with probability P//--- random number within (0,1) is generated and//--- inverse empirical CDF is used to randomly choose a point.
s=0;
v=CMath::RandomReal();
//--- calculationfor(i=0;i<=npoints-1;i++)
{
s=s+p[i];
//--- checkif(v<=s || i==npoints-1)
{
for(i_=0;i_<=nvars-1;i_++)
centers[cc].Set(i_,xy[i][i_]);
busycenters[cc]=true;
//--- break the cyclebreak;
}
}
}
}
//--- return resultreturn(result);
}
On pourrait penser que "Bitcoin" et le bruit vont dans la même direction, à un certain angle, et les gens...
S'il y a un sujet, alors on s'attend à ce que le sujet soit un sujet. Le sujet concerne la stratégie présentée(régression bayésienne - quelqu'un a-t-il fait un EA en utilisant cet algorithme ?) mais pas le choix entre les méthodes de calcul de la régression.
Valerii Mazurenko:
Il semble être implémenté par mql - il y a ALGLIB- k-mean et multivariate linear-fit - disponible. Il reste à découvrir comment l'algorithme fonctionne (et cela n'intéresse personne - certains font l'éloge de R, d'autres sont bloqués sur la régression, qui se soucie de quoi en général). Quelqu'un souhaite discuter de l'algorithme ?
Ok.
La mise en œuvre pratique commence toujours par un projet, à condition que le projet en vaille la peine.
Pourquoi avez-vous décidé que cette méthode est applicable au forex ?
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
J'essaierais probablement 10 sur 10... //Bayesian ne semble pas fonctionner du tout.
http://datareview.info/article/10-tipov-regressii-kakoy-vyibrat/
Qu'en pensez-vous ?
L'idée était de voir si la stratégie de trading réelle qui était présentée était adaptée au forex.
L'idée était de voir si la stratégie de trading réelle présentée par Devavrat Shah et Kang Zhang Laboratory for Information and Decision Systems, Department of EECS Massachusetts Institute of Technology était adaptée au forex.
J'ai dit non, ça ne marche pas.
La version russe du lien décrit le principe de calcul.
"6. Larégression bayésienne est similaire à la régression ridge, mais elle repose sur l'hypothèse que le bruit (erreur) dans les données est normalement distribué - on suppose donc qu'une compréhension générale de la structure des données est déjà disponible".
Il n'y a pas de bruit dans le forex, et encore moins une distribution normale. Si c'était le cas, il n'y aurait pas de frontière entre un plat et une tendance, il n'y aurait pas de retournement de tendance, c'est-à-dire avec une distribution normale. Si nous avions une distribution normale, le prix irait avec le bruit d'un côté à un certain angle et alors nous serions foutus.
J'ai dit non, ça ne marche pas.
Dans la version russe du lien, le principe de calcul est décrit.
"6. Larégression bayésienne est similaire à la régression ridge, mais elle est basée sur l'hypothèse que le bruit (erreur) dans les données est normalement distribué - on suppose donc qu'une compréhension générale de la structure des données existe déjà".
Il n'y a pas de bruit dans le forex, et encore moins sa distribution normale. Si c'était le cas, il n'y aurait pas de frontière entre le plat et la tendance, il n'y aurait pas de retournement de tendance, c'est-à-dire avec la distribution normale. Si nous avions une distribution normale, le prix irait avec le bruit d'un côté à un certain angle et alors nous serions foutus.
On pourrait penser qu'un "bitcoin" avec du bruit irait dans la même direction, avec un certain angle et un bip.
S'il y a un sujet, alors on s'attend à ce que le sujet soit le sujet de la conversation. Le sujet porte sur la stratégie présentée(régression bayésienne - quelqu'un a-t-il fait un EA en utilisant cet algorithme ?) mais pas sur le choix entre les méthodes de calcul de la régression.
Il semble que tout soit implémenté par mql - il y a ALGLIB- k-mean et multivariate linear-fit - disponible. Il reste à découvrir comment l'algorithme fonctionne (et cela n'intéresse personne - certains font l'éloge de R, d'autres sont bloqués sur la régression, qui se soucie de quoi en général). Quelqu'un veut discuter de l'algorithme ?
Il semble que tout soit implémenté par mql - il y a ALGLIB- k-mean et multivariate linear-fit - disponible. Il reste à découvrir comment l'algorithme fonctionne (et cela n'intéresse personne - certains font l'éloge de R, d'autres sont bloqués sur la régression, qui se soucie de quoi en général). Quelqu'un souhaite-t-il discuter de l'algorithme ?
Pour ce faire, vous devez envoyer tout le monde dans la bonne direction. k-mean est implémenté par la classeCKMeans située dans le fichierdataanalysis.mqh.
Voici le cours lui-même :
Notez le paramètre :
K - desired number of clusters, K>=1
Vous devez donc définir vous-même le nombre de centres souhaité.
On pourrait penser que "Bitcoin" et le bruit vont dans la même direction, à un certain angle, et les gens...
S'il y a un sujet, alors on s'attend à ce que le sujet soit un sujet. Le sujet concerne la stratégie présentée(régression bayésienne - quelqu'un a-t-il fait un EA en utilisant cet algorithme ?) mais pas le choix entre les méthodes de calcul de la régression.
Il semble être implémenté par mql - il y a ALGLIB- k-mean et multivariate linear-fit - disponible. Il reste à découvrir comment l'algorithme fonctionne (et cela n'intéresse personne - certains font l'éloge de R, d'autres sont bloqués sur la régression, qui se soucie de quoi en général). Quelqu'un souhaite discuter de l'algorithme ?
Ok.
La mise en œuvre pratique commence toujours par un projet, à condition que le projet en vaille la peine.
Pourquoi avez-vous décidé que cette méthode est applicable au forex ?
OK.
La mise en œuvre pratique commence toujours par un projet, à condition que le projet en vaille la peine.
Qu'est-ce qui vous fait penser que cette méthode est applicable au forex ?
Nous parlons maintenant du fonctionnement de l'algorithme.
En ce qui concerne l'applicabilité, il y aura toujours une tâche pour laquelle il sera utile. Le regroupement des prix ne fonctionnera pas.
Nous parlons maintenant du fonctionnement de l'algorithme.
C'est de ça qu'il s'agit.
Ok.
La mise en œuvre pratique commence toujours par un projet, à condition que le projet en vaille la peine.
Pourquoi avez-vous décidé que cette méthode est applicable au forex ?
Les chercheurs ont choisi une période sans tendance prononcée, d'où l'intérêt des résultats.