신경망, 마스터하는 방법, 어디서부터 시작해야 할까요? - 페이지 17

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

귀하의 예에서 세 줄 모두에 w1이 있습니다. 이것이 어떻게 되어야 합니까?

아니, 내가 틀렸어. 양해를 구합니다.

나는 w0이 어떤 기능을 수행할 것인지 이해하려고 노력하고 있으며, 역사 속으로 들어가는 단계와 같다고 가정했습니다.

집 지붕에 못을 박은 판자의 표면 질감을 고려해야 한다고 상상해 보십시오. 당신은 무엇을 할거야? 맞습니다. 당신은 지붕에 올라가서 모든 것을 가까이에서 신중하게 고려합니다. 그런 과업이 우리 국회에 맡겨지면 본연의 책임을 다해 과업을 완수할 것이요, 바로 그 지붕 아래로 올라가지 않고 이 판자가 있는 지붕 위의 집 전체와 함께 판자를 연구하게 될 것입니다. 위치!

여기에서 NN의 불필요한 작업(및 교육, 프로세스는 리소스 집약적임)을 제외하기 위해 고정 오프셋이 있는 "추가" 입력을 도입합니다. 이제 보십시오: 국회는 학습 과정에서 이 입력(+/-1 또는 다른 것)에 필요한 가중치를 자체적으로 선택합니다. 이것은 보드에 오르기 위해 집에 사다리를 놓는 것과 같습니다. 관심! 이제 국회는 불필요한 정보를 산더미처럼 퍼뜨리지 않고 이 입구의 도움으로 약간의 움직임으로 더 편안한 학습을 위한 편리한(이해하는) 자세를 취하게 될 것입니다.

 
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)은 공개 거래의 품질에 어떤 식으로든 영향을 미칠 수 없습니다.

제가 제대로 이해했다면, 이전 5개 막대(w1, w2, w3, w4, w5)의 분석을 바탕으로 거래를 시작한 후 가격이 어느 방향으로 이동했는지 인식하기 위해 w6을 도입한 것입니까?

 

우리는 5개의 형성된 막대의 분석 결과를 기반으로 입력합니다. 따라서 영점 막대는 입력으로 사용되지 않습니다.

다음과 같이 수정합니다.

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 ;

High-Low - HL 시리즈와 Close-Open - 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);
}

그런 다음 NN에 대한 정규화된 입력은 다음과 같이 계산됩니다.

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는 국회의 인풋이 아니라, 국회가 다듬는 과정에서 조정된 가중치입니다. 입력은 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이 고르게 채워질 때). 이것이 근본적인 요점입니다.
 

Neutron, 이렇게 자세한 설명에 다시 한 번 감사드립니다.

방금 작성한 내용으로 60분 정도 걸릴 것입니다. 한 시간 안에 이 주제를 보는 것이 어렵지 않다면 이해하세요.

또한 이미 작성된 조언자 에게 neroset을 연결하는 방법에 대한 제안이 있습니다. 연락 방법에 관심이 있는 경우 조언자 알고리즘에 대한 설명과 neroset에 대한 계수 설명이 포함된 그래프를 보내드릴 수 있습니다. .

 

솔직히 말해서, 나는 사적인 커뮤니케이션의 팬이 아닙니다. 근본적인 제한이 없다면 여기에서 의사 소통하는 것이 좋습니다. 그러나 나는 이 주제에 대한 관심을 잃을 수 있으므로(그냥 갑자기) 필수 유지 관리에 대한 의무를 지지 않습니다 :-)

거래?

 
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 ) ;
  }
//+------------------------------------------------------------------+