Metatrader 5에서 고유한 기호 및 데이터 피드 - 페이지 14

 
zaskok :

대부분의 사용자는 GA가 무엇인지조차 들어본 적이 없다고 생각합니다. 따라서 기적의 알고리즘은 누구보다 필요하지 않습니다.

그게 내가 말하는거야

자스코크 :

포럼은 데자뷰를 남기지 않습니다. 진술의 증거를 요구할 때. 그러나 동시에 그들 중 누구도 받아 들여지지 않습니다. 왜냐하면. 설득하기 위해 무엇을 제공해야 하는지는 전혀 명확하지 않습니다.

예, MetaQuots는 상업 조직이라는 점만 기억하면 됩니다. 그리고 그녀는 그것이 이익을 가져올 것이라고 생각하는 경우에만 개발에 자원을 투자할 것입니다. 글쎄, 그것은 여기에서 방법이어야합니다.

저는 여기서 " Renat 의 편집증"을 찾아야 한다고 생각하지 않습니다. 이것은 "경제적 근시안적"에 가깝습니다. 실제로 MetaTrader에 질문이 표시되는 즉시 MetaQuots의 수익이 한 배 더 증가할 것입니다. 그러나 그는 이것을 이해하지 못합니다 ... 글쎄, 나는 제안이 경제적으로 정당화되어야한다고 생각합니다. 어떤 솔루션이 증가하고 이익이 변하지(또는 낮추지) 않았는지 "메타쿼트의 주방"을 모릅니다... 추측할 수 있을 뿐입니다...

 
Prival-2 :

자스코크 응원합니다

나는 개인적으로 유전 알고리즘이 가장 적합한 도구가 될 단일 문제를 만난 적이 없습니다. 게다가 유전 알고리즘을 통해 얻은 계산 결과가 나에게 긍정적인 영향을 미치는 것을 본 적이 없습니다.


따라서 GA의 주요 장점은 "특정 문제를 해결하는 데 가장 적합한 도구"가 아니라 보편적이라는 것입니다!

결국 GA는 이차 방정식을 푸는 데에도 사용할 수 있으며 허용 가능한 정확도로 솔루션을 현저하게 찾을 수 있습니다. 잘 알려진 공식이이 경우에 훨씬 더 적합하지만 ...

 

간단히 말해서,

1. 사용자는 다른 알고리즘과 마찬가지로 ha에 대해 잘 모를 수 있습니다. 특별히 달라지는 것은 없습니다.

2. ha보다 더 나은 알고리즘이 있더라도(일부 작업의 경우 어쨌든 존재함), 그것이 동일한 보편적일 것이라는 것은 사실이 아닙니다. 즉, 비교분석은 보편성의 맥락을 잃지 않아야 한다.

3. 다른 알고리즘을 직접 구현하는 데 방해가 되는 것은 없습니다.

Prival-2, 종종 가장 적합한 도구가 필요하지는 않지만 충분합니다(두꺼운 전략을 최적화하려면 상당히 수용 가능합니다).

다른 알고리즘에 대한 설명을 보고 싶습니다.

 
Renat :

당신은 그와 대화하는 데 시간을 낭비하고 있습니다.

이 사람은 MetaTrader 5를 전혀 사용하지 않고 4개만 사용합니다. 이것은 로그에서 볼 수 있습니다. 수년 동안 MT5를 출시하지 않았지만 비판합니다.

몇 년 전에 나는 이미 그가 "몇 달 전에 MT5를 한 번 출시했는데 어떻게 평가와 비판을 관리합니까?"라고 말하는 것을 보았습니다. 그는 또한 이제 그의 다음 클론으로서 그것을 부인했습니다.

익숙한 행동. 나는 그와 MT5용 내 제품에 대해 논의한 것을 기억합니다. 결국 그는 데모도 다운로드하지 않았습니다. 그러나 "익숙하지 않지만 정죄합니다"라는 시리즈에서 항상 할 말이 있습니다.
 
joo :

2. 내 GA가 더 좋습니다. :)

...

그래서 채팅뿐만 아니라 "어떤 알고리즘이 더 낫습니까?"라는 주제를 끝내기 위해 테스트 및 비교 분석을 위한 알고리즘을 제공하고 싶은 사람들이 있습니다.


GA에서 int NaturalSelection() 함수는 https://www.mql5.com/ru/articles/55 기사에서 설명한 것과 완전히 다르게 작동합니다 .

테스트는 다음과 같습니다.

 // 256+255+253+249+241+225+193+129+50+ -1 = 1850  сумма всех  выпадений

int PopulChromosCount = 10 ;
double Population[][ 10 ];
int count[ 10 ];

void OnStart (){
         ArrayResize (Population, 2 );
        Population[ 0 ][ 0 ] = 256.0 ;
        Population[ 0 ][ 1 ] = 128.0 ;
        Population[ 0 ][ 2 ] = 64.0 ;
        Population[ 0 ][ 3 ] = 32.0 ;
        Population[ 0 ][ 4 ] = 16.0 ;
        Population[ 0 ][ 5 ] = 8.0 ;
        Population[ 0 ][ 6 ] = 4.0 ;
        Population[ 0 ][ 7 ] = 2.0 ;
        Population[ 0 ][ 8 ] = 0.0 ;
        Population[ 0 ][ 9 ] = - 1.0 ;
                
         ArrayInitialize (count, 0 );
         for ( int k= 0 ; k< 1850 ; ++k){
                 int idx = NaturalSelection();
                ++count[idx];
        }
        printCount(count);
}
  
//Естественный отбор.
int NaturalSelection(){
   int     i= 0 ,u= 0 ;
   double p= 0.0 ,start= 0.0 ;
   double           fit[][ 2 ];
   ArrayResize (fit,PopulChromosCount);
   ArrayInitialize (fit, 0.0 );
   double delta=(Population[ 0 ][ 0 ]-Population[ 0 ][PopulChromosCount- 1 ])* 0.01 -Population[ 0 ][PopulChromosCount- 1 ];

   for (i= 0 ;i<PopulChromosCount;i++)
     {
      fit[i][ 0 ]=start;
      fit[i][ 1 ]=start+ MathAbs (Population[ 0 ][i]+delta);
      start=fit[i][ 1 ];
     }
   p=RNDfromCI(fit[ 0 ][ 0 ],fit[PopulChromosCount- 1 ][ 1 ]);

   for (u= 0 ;u<PopulChromosCount;u++)
       if ((fit[u][ 0 ]<=p && p<fit[u][ 1 ]) || p==fit[u][ 1 ])
         break ;

   return (u);
}

//Генератор случайных чисел из заданного интервала.
double RNDfromCI( double RangeMinimum, double RangeMaximum)
  { return (RangeMinimum+((RangeMaximum-RangeMinimum)* MathRand ()/ 32767.5 ));}

void printCount( int &ncount[]){
         int summ = 0 ;
         for ( int k= 0 ;k< ArraySize (ncount);++k){
                summ+=ncount[k];
        }
         Print ( "Сумма выпадений= " + IntegerToString (summ));
         Print ( "VFF 256: count= " + IntegerToString (ncount[ 0 ]) + " заявлено 256" );
         Print ( "VFF 128: count= " + IntegerToString (ncount[ 1 ]) + " заявлено 255" );
         Print ( "VFF  64: count= " + IntegerToString (ncount[ 2 ]) + " заявлено 253" );
         Print ( "VFF  32: count= " + IntegerToString (ncount[ 3 ]) + " заявлено 249" );
         Print ( "VFF  16: count= " + IntegerToString (ncount[ 4 ]) + " заявлено 241" );
         Print ( "VFF   8: count= " + IntegerToString (ncount[ 5 ]) + " заявлено 225" );
         Print ( "VFF   4: count= " + IntegerToString (ncount[ 6 ]) + " заявлено 193" );
         Print ( "VFF   2: count= " + IntegerToString (ncount[ 7 ]) + " заявлено 129" );
         Print ( "VFF   0: count= " + IntegerToString (ncount[ 8 ]) + " заявлено  50" );
         Print ( "VFF  -1: count= " + IntegerToString (ncount[ 9 ]) + " заявлено  -1" );
}
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  -1: count= 6 заявлено  -1
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   0: count= 13 заявлено  50
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   2: count= 21 заявлено 129
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   4: count= 19 заявлено 193
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   8: count= 40 заявлено 225
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  16: count= 74 заявлено 241
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  32: count= 121 заявлено 249
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  64: count= 218 заявлено 253
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 128: count= 423 заявлено 255
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 256: count= 915 заявлено 256
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	Сумма выпадений= 1850

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Laryx :

과거 데이터에 대한 디버거의 디버깅은 어떻습니까? 곧 될 것 같나요?

우리는 이미 이 문제를 다루고 있습니다. 곧 첫 결과가 나옵니다
 
Prival-2 :

이 과학자를 반박하려고

유전자 알고리즘을 사용하는 가능성에 대해 많은 회의론자들이 있습니다. 예를 들어, IEEE Institute Award를 수상한 유명한 알고리즘 연구자인 Stony Brook University의 컴퓨터 공학 교수인 Steven S. Skiena는 다음 과 같이 썼습니다.

유전학은 무엇이든 최적화할 수 있는 다재다능한 것입니다. 거의 경사 하강법과 유사하며 문제의 종류 측면에서 훨씬 더 보편적입니다.

이는 모든 작업에 대해 항상 더 잘 작동하는 작업별 최적화 방법을 제시할 수 있음을 의미합니다.

 
stringo :
우리는 이미 이 문제를 다루고 있습니다. 곧 첫 결과가 나옵니다
브라보! 기다리고 있습니다.
 
다음은 Wikipedia의 Annealing 방법 에 대한 설명에 대한 링크입니다. https://en.wikipedia.org/wiki/%C0%EB%E3%EE%F0%E8%F2%EC_%E8%EC%E8%F2%E0%F6%E8%E8_%EE%F2%E6 %E8%E3%E0 이 알고리즘이 어떻게 작동하는지 설명하는 비디오 예제가 있습니다. 이를 통해 반복적으로 최대값에 접근하고 거의 최대값 자체를 찾습니다. 그러나 그것은 또한 다른 최고점을 설명합니다. 계산 횟수는 GA보다 훨씬 적으며 GA보다 더 컴팩트하고 실제 데이터에 훨씬 가깝습니다. 어쨌든 번거로운 GA는 어떤 속도로든 수행합니다.
 
파일 세트를 저장하고 로드하는 기능이 상위 5위 안에 드는 것이 좋습니다. 아주 편리한 아이템.
사유: