A idéia era ver se a verdadeira estratégia comercial apresentada por Devavrat Shah e Kang Zhang Laboratory for Information and Decision Systems, Department of EECS Massachusetts Institute of Technology, era adequada para forex.
lilita bogachkova: A idéia era ver se a verdadeira estratégia comercial que foi apresentada era adequada para forex
Pensei ter deixado claro que não era. Mas a boa notícia é que os mercados não estão limitados ao forex. As moedas criptográficas têm um limiar de entrada de algumas libras.
lilita bogachkova: A idéia era ver se a verdadeira estratégia comercial apresentada por Devavrat Shah e Kang Zhang Laboratory for Information and Decision Systems, Department of EECS Massachusetts Institute of Technology, era adequada para forex.
Eu disse que não, não funciona.
A versão russa do link descreve o princípio de cálculo.
"6. Aregressão Bayesiana é semelhante à regressão da crista, mas se baseia na suposição de que o ruído (erro) nos dados é normalmente distribuído - portanto, assume-se que já existe um entendimento geral da estrutura dos dados ".
Não há barulho em forex, muito menos uma distribuição normal. Se houvesse, não haveria fronteira entre um plano e uma tendência, não haveria inversão de tendência, ou seja, com uma distribuição normal. Se tivéssemos uma distribuição normal, o preço iria com o barulho para um lado em algum ângulo e então seríamos aparafusados.
Na versão russa do link, o princípio de cálculo é descrito.
"6. Aregressão Bayesiana é semelhante à regressão da crista, mas se baseia na suposição de que o ruído (erro) nos dados é normalmente distribuído - portanto, supõe-se que já exista um entendimento geral da estrutura de dados ".
Não há ruído em forex, muito menos sua distribuição normal. Se houvesse, não haveria fronteira entre plano e tendência, não haveria inversão de tendência, ou seja, com a distribuição normal. Se tivéssemos uma distribuição normal, o preço iria com o barulho para um lado em algum ângulo e então seríamos aparafusados.
Seria de se pensar que 'Bitcoin' com ruído iria na mesma direção em algum ângulo e bleep.
Se houver um tópico, então espera-se que o tópico seja o tópico de conversa. O tópico é sobre a estratégia apresentada(regressão Bayesiana - Alguém fez uma EA usando este algoritmo?) mas não como uma escolha entre métodos de cálculo de regressão.
Parece que tudo é implementado por mql - há ALGLIB- k-mean e multivariada linear-fit - disponível. Resta saber como funciona o algoritmo (e ninguém está interessado - algumas pessoas elogiam R, outras estão presas em regressão, quem se importa com o quê em geral). Alguém quer discutir o algoritmo?
Parece que tudo é implementado por mql - há ALGLIB- k-mean e multivariada linear-fit - disponível. Resta saber como funciona o algoritmo (e ninguém está interessado - alguns elogiam R, outros estão presos na regressão, quem se importa com o quê em geral). Alguém gostaria de discutir o algoritmo?
Para fazer isso você precisa enviar todos na direção certa. k-mean é implementado pela classeCKMeans localizada no arquivodataanalysis.mqh.
Aqui está a própria classe:
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);
}
Seria de se pensar que 'Bitcoin' e o ruído iriam na mesma direção em algum ângulo e ppl.
Se houver um tópico, então espera-se que o tópico seja um tópico. O tópico é sobre a estratégia apresentada(regressão Bayesiana - alguém fez uma EA usando este algoritmo?) mas não sobre a escolha entre métodos de cálculo de regressão.
Valerii Mazurenko:
Parece ser implementado por mql - há ALGLIB- k-mean e multivariada linear-fit - disponível. Resta saber como funciona o algoritmo (e ninguém está interessado - algumas pessoas elogiam R, outras estão presas em regressão, quem se importa com o quê em geral). Alguém interessado em discutir o algoritmo?
Ok.
A implementação prática começa sempre com um projeto, desde que o projeto valha a pena.
Por que você decidiu que este método é aplicável ao forex?
Eu provavelmente tentaria 10 em cada 10... //Bayesian parece não funcionar em absoluto.
http://datareview.info/article/10-tipov-regressii-kakoy-vyibrat/
O que você acha?
A idéia era ver se a verdadeira estratégia comercial que foi apresentada era adequada para forex
A idéia era ver se a verdadeira estratégia comercial apresentada por Devavrat Shah e Kang Zhang Laboratory for Information and Decision Systems, Department of EECS Massachusetts Institute of Technology, era adequada para forex.
Eu disse que não, não funciona.
A versão russa do link descreve o princípio de cálculo.
"6. Aregressão Bayesiana é semelhante à regressão da crista, mas se baseia na suposição de que o ruído (erro) nos dados é normalmente distribuído - portanto, assume-se que já existe um entendimento geral da estrutura dos dados ".
Não há barulho em forex, muito menos uma distribuição normal. Se houvesse, não haveria fronteira entre um plano e uma tendência, não haveria inversão de tendência, ou seja, com uma distribuição normal. Se tivéssemos uma distribuição normal, o preço iria com o barulho para um lado em algum ângulo e então seríamos aparafusados.
Eu disse que não, não funciona.
Na versão russa do link, o princípio de cálculo é descrito.
"6. Aregressão Bayesiana é semelhante à regressão da crista, mas se baseia na suposição de que o ruído (erro) nos dados é normalmente distribuído - portanto, supõe-se que já exista um entendimento geral da estrutura de dados ".
Não há ruído em forex, muito menos sua distribuição normal. Se houvesse, não haveria fronteira entre plano e tendência, não haveria inversão de tendência, ou seja, com a distribuição normal. Se tivéssemos uma distribuição normal, o preço iria com o barulho para um lado em algum ângulo e então seríamos aparafusados.
Seria de se pensar que 'Bitcoin' com ruído iria na mesma direção em algum ângulo e bleep.
Se houver um tópico, então espera-se que o tópico seja o tópico de conversa. O tópico é sobre a estratégia apresentada(regressão Bayesiana - Alguém fez uma EA usando este algoritmo?) mas não como uma escolha entre métodos de cálculo de regressão.
Parece que tudo é implementado por mql - há ALGLIB- k-mean e multivariada linear-fit - disponível. Resta saber como funciona o algoritmo (e ninguém está interessado - algumas pessoas elogiam R, outras estão presas em regressão, quem se importa com o quê em geral). Alguém quer discutir o algoritmo?
Parece que tudo é implementado por mql - há ALGLIB- k-mean e multivariada linear-fit - disponível. Resta saber como funciona o algoritmo (e ninguém está interessado - alguns elogiam R, outros estão presos na regressão, quem se importa com o quê em geral). Alguém gostaria de discutir o algoritmo?
Para fazer isso você precisa enviar todos na direção certa. k-mean é implementado pela classeCKMeans localizada no arquivodataanalysis.mqh.
Aqui está a própria classe:
Observe o parâmetro:
K - desired number of clusters, K>=1
Portanto, você mesmo deve definir o número desejado de centros.
Seria de se pensar que 'Bitcoin' e o ruído iriam na mesma direção em algum ângulo e ppl.
Se houver um tópico, então espera-se que o tópico seja um tópico. O tópico é sobre a estratégia apresentada(regressão Bayesiana - alguém fez uma EA usando este algoritmo?) mas não sobre a escolha entre métodos de cálculo de regressão.
Parece ser implementado por mql - há ALGLIB- k-mean e multivariada linear-fit - disponível. Resta saber como funciona o algoritmo (e ninguém está interessado - algumas pessoas elogiam R, outras estão presas em regressão, quem se importa com o quê em geral). Alguém interessado em discutir o algoritmo?
Ok.
A implementação prática começa sempre com um projeto, desde que o projeto valha a pena.
Por que você decidiu que este método é aplicável ao forex?
OK.
A implementação prática começa sempre com um projeto, desde que o projeto valha a pena.
O que o faz pensar que este método é aplicável ao forex?
Agora estamos falando sobre como funciona o algoritmo.
Quanto à aplicabilidade, haverá alguma tarefa para a qual ela virá a calhar. Os preços de agrupamento não vão funcionar.
Estamos agora falando sobre como funciona o algoritmo.
É disso que estamos falando.
Certo.
A implementação prática começa sempre com um projeto, desde que o projeto valha a pena.
Por que você decidiu que este método é aplicável ao forex?
Os pesquisadores escolheram um período sem uma tendência pronunciada, razão pela qual os resultados são interessantes.