神经网络,如何掌握它们,从哪里开始? - 页 17

 
Andrey4-min писал(а)>>

你的例子中的三行都有w1,应该是这样吗?

不,我犯了一个错误。我很抱歉。

我想知道w0将执行什么功能,假设它就像历史上的一个步骤,你知道,就像在循环中一样,如果不是,请多解释一下......

想象一下,你需要考虑钉在房子屋顶上的一块木板的表面纹理。你会怎么做?这是正确的,你爬上屋顶,近距离检查一切。如果把这样的任务交给我们的国家安全局,它将负责任地执行,它不会走到屋顶下,而是与屋顶上有木板的整个房子一起研究木板!

因此,为了排除NS的不必要的工作(和学习,这个过程是非常资源密集型的),我们引入了一个具有固定偏移的 "额外 "输入。现在看:NS在学习过程中本身会对这个输入选择必要的权重(+/-1或其他),它相当于你会把梯子放到房子里,以便上升到你感兴趣的板块!在这个过程中,你会发现,你是一个很好的朋友。现在,NS不会翻阅堆积如山的不必要的信息,而只是通过简单的运动,采取一个舒适的(在它的理解中)位置,进一步舒适地学习。

 
int    w0=1;
double w1=(High[1]-Low[1])/Point*(Close[1]-Open[1])/Point;
double w2=(High[2]-Low[2])/Point*(Close[2]-Open[2])/Point;
double w3=(High[3]-Low[3])/Point*(Close[3]-Open[3])/Point;
double w4=(High[4]-Low[4])/Point*(Close[4]-Open[4])/Point;
double w5=(High[5]-Low[5])/Point*(Close[5]-Open[5])/Point;
double w6=(High[0]-Low[0])/Point*(Close[0]-Open[0])/Point;
如果我们根据第1条的结果进入,那么
w6=(High[0]-Low[0])/Point*(Close[0]-Open[0])/Point;

将在交易开始后形成,也就是说,这个进场(w6)不能以任何方式影响未平仓交易的质量。

如果我没有理解错的话,w6的引入是为了根据对前五个柱子(w1、w2、w3、w4、w5)的分析,检测开仓后的价格走势。

 

我们将根据形成的五条杠的分析结果进入。因此,零杠将不被用作入场杠。

对。

double w0=1.;
double w1=(High[1]-Low[1])/Point*(Close[1]-Open[1])/Point;
double w2=(High[2]-Low[2])/Point*(Close[2]-Open[2])/Point;
double w3=(High[3]-Low[3])/Point*(Close[3]-Open[3])/Point;
double w4=(High[4]-Low[4])/Point*(Close[4]-Open[4])/Point;
double w5=(High[5]-Low[5])/Point*(Close[5]-Open[5])/Point;

让我们介绍一下高-低系列的归一化系数--HL和闭-开系列的归一化系数--CO。让我们把它们定义为与平均窗口对应的增量的标准偏差,比如说100。

double HL=0.;

double CO=0.;

for(i=0;i<100;i++) {

HL=HL+(High[i] -Low[i] )*(High[i] -Low[i] );

CO=CO+(Close[i]-Open[i])*(Close[i]-Open[i]);

}

HL=MathSqrt(HL/100);

CO=MathSqrt(CO/100);

让我们运行一个归一化函数(将整个数字轴映射成一个+/-1段)。

double th(double x)
{
if(MathAbs(x)<100.)S=(MathExp(x)-MathExp(-x))/(MathExp(x)+MathExp(-x));
else S=MathAbs(x)/x;
return(S);
}

然后,NS的归一化输入将被计算如下。

double d0=1.;
double d1=th((High[1]-Low[1])/HL*(Close[1]-Open[1])/CO);
double d2=th((High[2]-Low[2])/HL*(Close[2]-Open[2])/CO);
double d3=th((High[3]-Low[3])/HL*(Close[3]-Open[3])/CO);
double d4=th((High[4]-Low[4])/HL*(Close[4]-Open[4])/CO);
double d5=th((High[5]-Low[5])/HL*(Close[5]-Open[5])/CO);

还有一件事,w1...w5不是NS输入,它们是在包皮手术过程中可以调整的权重。输入将被表示为d1,d2...。d5
 

进入正常化=以点为单位的蜡烛

double a;
int CandleMax=20, CandleMin=-20, Diapazon;
Diapazon= CandleMax- CandleMin;

a=(Close[ i]-Open[ i])/Point;
if( a> CandleMax) a= CandleMax;
if( a< CandleMin) a= CandleMin;
a=( a- CandleMin)/ Diapazon;
P.S. древний вариант
 
Korey,我们将使用 "精细 "的归一化(其中+/-1段将被均匀地填充)。这是一个原则问题。
 

中子,再次感谢你如此详细的解释。

我可能会花60分钟来研究你刚才写的东西,如果不嫌麻烦的话,在一个小时内研究一下这个话题。

如果我对此感兴趣,我可以把图表连同EA算法描述和非网络系数的描述发给你。

 

说实话,我不喜欢私下交流。如果原则上没有限制,最好在这里沟通。另外,我可能会对这个话题失去兴趣(以防万一),所以我不承诺一定要保持这个话题:-)

成交吗?

 
Neutron писал(а)>>
Korey,我们将使用 "薄 "归一化(当段+/-1将被均匀地填充)。这是一个原则问题。

这也是均匀地填充,但边缘没有曲率,也就是说,古老的版本不是一个完整的线段映射。

 
Korey писал(а)>>

这也是均匀地填充,但边缘没有折痕,也就是说,古代版本不是完整地映射成一个部分

是的,但我们同时需要所有的东西!

 
Neutron >> :

说实话,我不喜欢私下交流。如果原则上没有限制,最好在这里沟通。另外,我可能会对这个话题失去兴趣(以防万一),所以我不承诺一定要保持这个话题:-)

我们有一个协议吗?

>> 交易。

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
//Введём нормировочные коэффициенты для ряда High-Low - HL и для ряда Close-Open - CO. 
//Определим их как стандартное отклонение от соответствующих приращений с окном усреднения, например 100.
double HL=0.;

double CO=0.;

for(int i=0; i<100; i++) {

HL= HL+(High[ i] -Low[ i] )*(High[ i] -Low[ i] ); //Эти значения умножаются друг на друга, 
                                             //чтобы в случае если значение будет отрицательным
CO= CO+(Close[ i]-Open[ i])*(Close[ i]-Open[ i]); //при умножении оно стало положительным?

}
HL=MathSqrt( HL/100);//Получилось среднее значение диапазона 100 последних баров
CO=MathSqrt( CO/100);//Получилось среднее значение диапазона между open b close 100 последних баров

//Ведём нормализующую функцию (отображает всю числовую ось в отрезок +/-1):
double th(double x); // что значит эта строчка?
{
if(MathAbs( x)<100.) S=(MathExp( x)-MathExp(- x))/(MathExp( x)+MathExp(- x));
else S=MathAbs( x)/ x;
return( S); // для чего вычислялась S? 
}

//Тогда нормализованные входа для НС будут считаться следующим образом:
double w0=1.; // что значит точка после числа?
double w1= th((High[1]-Low[1])/ HL*(Close[1]-Open[1])/ CO);
double w2= th((High[2]-Low[2])/ HL*(Close[2]-Open[2])/ CO);
double w3= th((High[3]-Low[3])/ HL*(Close[3]-Open[3])/ CO);
double w4= th((High[4]-Low[4])/ HL*(Close[4]-Open[4])/ CO);
double w5= th((High[5]-Low[5])/ HL*(Close[5]-Open[5])/ CO);

//И ещё. w1...w5 это не входа НС, это настраиваемые в процессе её обцчения веса. Входа будем обозначать как d1, d2... d5

   
//----
   return(0);
  }
//+------------------------------------------------------------------+