Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 1064

 
Maksim Dmitrievski :

Modeller hala berbat olduğundan ^) büyük hatalarla, daha uzun süre çalışan modellere ihtiyacınız var

örneğin 2 aylık öğrenme ve 1 haftalık ticaret

Haklı olabilirsiniz, ancak "ALPHA ZERO" algosuna benzer sınırsız rastgele mum simülasyonları yapana kadar tam bir gün için bile çalışan böyle bir modelin RDF tarafından keşfedileceğini sanmıyorum.

Çünkü piyasalar neredeyse her saat değişir ve aniden bir haber olayı meydana gelirse veya piyasa herhangi bir nedenle davranışını değiştirirse bir model korkunç bir şekilde başarısız olur. Ancak milyonlarca mum simülasyonu yaptıysak, muhtemelen sistem piyasa değişikliğinde minimum kayıpla toparlayabilir ve sonrasında kaybı hızla geri alabilir. Bu mümkün görünüyor.

Her şeyin nasıl gittiğini görmek için hem model seçim yönteminizi hem de mum simülasyon yöntemimi deneyeceğim :))

Bu arada 1 günlük antrenman, 5 günlük antrenman vs denedim ertesi gün başarısız oldu :)))))))))))))))

Yani bir model çalışmayabilir..yanılıyor olabilirim...

 

Ayrıca bir isteğim daha var Maxim...

Makalenizi yayınladığınızda, başkalarının kodu anlaması için hızlı ve kolay olması için mümkün olduğunca kodu yorumlamaya çalışın, böylece daha hızlı ilerleyebiliriz..

Aksi takdirde, kodu anlamam uzun sürecekse, değiştirmem daha da uzun sürecektir.

Bu yüzden, koda mümkün olduğunca çok yorum ve açıklama eklemenizi rica ediyorum. Şimdilik hızlıca anlamaya çalışacağım ve anlamadığım bir şey olup olmadığını soracağım :))

 
FxTrader562 :

Ayrıca bir isteğim daha var Maxim...

Makalenizi yayınladığınızda, başkalarının kodu anlaması için hızlı ve kolay olması için mümkün olduğunca kodu yorumlamaya çalışın, böylece daha hızlı ilerleyebiliriz..

Aksi takdirde, kodu anlamam uzun sürecekse, değiştirmem daha da uzun sürecektir.

Bu yüzden, koda mümkün olduğunca çok yorum ve açıklama eklemenizi rica ediyorum. Şimdilik hızlıca anlamaya çalışacağım ve anlamadığım bir şey olup olmadığını soracağım :))

Tamam, şimdi sürekli olarak birçok şeyi değiştiriyorum ve yorum yapmanın bir anlamı yok

ayrıca çıktıları nasıl değiştireceğinizi de düşünebilirsiniz .. belki ödül işlevi veya başka bir şey yerine farklı ayarlarla zikzak kullanın
 
Maksim Dmitrievski :

Tamam, şimdi sürekli olarak birçok şeyi değiştiriyorum ve yorum yapmanın bir anlamı yok

ayrıca çıktıları nasıl değiştireceğinizi de düşünebilirsiniz .. belki ödül işlevi veya başka bir şey yerine farklı ayarlarla zikzak kullanın

Sadece koda hızlı bir bakış attım. Ancak şu ana kadar göstergelerin tam olarak nerede olduğunu veya ticaret girişlerine nasıl karar verdiğini çözemedim. Bu yüzden çıktı ile ne yapacağımdan emin değilim. GDMH kullanarak çıktı mı demek istiyorsun?

Testi çeşitli ayarlarla çalıştırdım, ancak tamamen rastgele işlemler yapıyor gibi görünüyor.

Ayrıca, test aşamasında "Mtrees" metin dosyalarını oluşturmaz. değil mi?

Demek istediğim, verdiğiniz kod tam değil. değil mi? Veya optimizasyon olmadan doğrudan grafiğe eklenirse alım satım yapabilir mi?

 
FxTrader562 :

Sadece koda hızlı bir bakış attım. Ancak şu ana kadar göstergelerin tam olarak nerede olduğunu veya ticaret girişlerine nasıl karar verdiğini çözemedim. Bu yüzden çıktı ile ne yapacağımdan emin değilim.

Testi çeşitli ayarlarla çalıştırdım, ancak tamamen rastgele işlemler yapıyor gibi görünüyor ve bazı garip davranışlar gösterdi ve bu nedenle sunucumu yeniden başlattım. VPS'nin gerçek çekirdekleriyle herhangi bir şey yapmak zorunda mı?

Ayrıca, test aşamasında "Mtrees" metin dosyalarını oluşturmaz. değil mi?

Test cihazında ilk çalıştırıldığında "true" seçeneğini seçin

Rastgele ticaret yapacak ve sonra öğrenecek ve modelleri kaydedecek.

2. çalıştırma false seçin. Bu kadar. Ve modelleri yükler ve takas eder +

Daha sonra, EA'da temsilci ekleyebilirsiniz, artık 5 temsilciniz, her temsilci için 100 özellik, 50 ağaç var

CRLAgents *ag1= new CRLAgents( "RlExp1iter" , 5 , 100 , 50 ,regularize,learn);

Bu fonksiyonda her aracı için 100 kapanış fiyatı ekliyoruz (100 tahmin edici). Ve sonra verileri normalleştirin. Farklı göstergeler ekleyebilirsiniz, örneğin ilk 50 özellik - yakın fiyatlar, sonraki 25 rsi, sonraki 25 adx veya aracı beyan ettiğinizde tahmincilerin sayısını değiştirin

 void calcSignal()
  {
   sig1= 0 ;
       
   for ( int i= 0 ;i< ArraySize (ag1.agent);i++) - the agents are stored in "ag1.agent" array. We have 5 agents, so array size is 5
     {   
       CopyClose ( _Symbol , 0 , 0 , 100 ,ag1.agent[i].inpVector); - for each agent from array (now we have 5 agents) fill predictors (100 close prices). For each feature we fill a single value
      normalizeArrays(ag1.agent[i].inpVector);
     }
   sig1=ag1.getTradeSignal(); this function return averaged signal for all agents
  }

Her anlaşmadan sonra politikaları günceller, yakın ticaret - güncelleme ödülü (TD, geçici fark RL)

 void placeOrders()
  {
   if (countOrders( 0 )!= 0 || countOrders( 1 )!= 0 )
     {
       for ( int b= OrdersTotal ()- 1 ; b>= 0 ; b--)
         if ( OrderSelect (b, SELECT_BY_POS )== true )
             switch ( OrderType ())
              {
               case OP_BUY :
                   if (sig1> 0.5 )
                   if ( OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 0 ,Red))
                     ag1.updateRewards();

                   break ;

               case OP_SELL :
                   if (sig1< 0.5 )
                   if ( OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 0 ,Red))
                     ag1.updateRewards();

                   break ;
              }
       return ;
     }

   if (sig1< 0.5 && ( OrderSend ( Symbol (), OP_BUY ,lotsOptimized(), SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), 0 , 0 , 0 , NULL ,OrderMagic, INT_MIN )> 0 ))
     {
      ag1.updatePolicies(sig1);
     }

   else if (sig1> 0.5 && ( OrderSend ( Symbol (), OP_SELL ,lotsOptimized(), SymbolInfoDouble ( _Symbol , SYMBOL_BID ), 0 , 0 , 0 , NULL ,OrderMagic, INT_MIN )> 0 ))
     {
      ag1.updatePolicies(sig1);
     }

Gerçekten basit kütüphane kullanımı

Tren modunda size her yineleme için hataları içeren günlükleri gösterecektir.

 2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 40 passed with errors: 0.2422178988326848    0.5097276264591439
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 41 passed with errors: 0.2295719844357977    0.4824902723735409
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 42 passed with errors: 0.2558365758754864    0.4961089494163424
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 43 passed with errors: 0.2422178988326848    0.4863813229571984
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 44 passed with errors: 0.2422178988326848    0.4766536964980545
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 45 passed with errors: 0.245136186770428    0.5379377431906615
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 46 passed with errors: 0.2587548638132296    0.4912451361867704
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 47 passed with errors: 0.2480544747081712    0.4776264591439689
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 48 passed with errors: 0.2636186770428016    0.5009727626459144
2018.09 . 16 01 : 33 : 27.319 2018.09 . 13 23 : 59 : 59    Agent 5 Model 49 passed with errors: 0.2616731517509728    0.490272373540856

ticaret modunda test cihazında trendeki son hataları ve her aracı için test alt kümesini gösterir

 2018.09 . 16 01 : 34 : 18.107 2018.09 . 13 23 : 59 : 59    RlExp1iter TRAIN LOGLOSS
2018.09 . 16 01 : 34 : 18.107 2018.09 . 13 23 : 59 : 59    0.23249 0.22763 0.24222 0.24125 0.24416
2018.09 . 16 01 : 34 : 18.107 2018.09 . 13 23 : 59 : 59    RlExp1iter OOB LOGLOSS
2018.09 . 16 01 : 34 : 18.107 2018.09 . 13 23 : 59 : 59    0.46790 0.46887 0.46498 0.46790 0.47471

100 kapanış fiyatı için sonuç:


 
Maksim Dmitrievski :

Test cihazında ilk çalıştırıldığında "true" seçeneğini seçin

Rastgele ticaret yapacak ve öğrenecek ve modelleri kaydedecek.

2. çalıştırma false seçin. Bu kadar. Ve modelleri yükler ve takas eder +

Daha sonra, EA'da temsilci ekleyebilirsiniz, artık 5 temsilciniz, her temsilci için 100 özellik, 50 ağaç var

Bu fonksiyonda her aracı için 100 kapanış fiyatı ekliyoruz (100 tahmin edici). Ve sonra verileri normalleştirin. Farklı göstergeler ekleyebilirsiniz, örneğin ilk 50 özellik - yakın fiyatlar, sonraki 25 rsi, sonraki 25 adx veya aracı beyan ettiğinizde tahmincilerin sayısını değiştirin

Her anlaşmadan sonra politikaları günceller, yakın ticaret - güncelleme ödülü (TD, geçici fark RL)

Kütüphanenin gerçekten basit kullanımı

Evet, bu hem çok basit hem de sağlam görünüyor.. Deneyelim ve görelim.. Harika iş!!!!!

Peki GDMH'nin kullanımı nerede?

GDMH kodumu yazmayı düşünüyordum. Bana sadece RDF giriş ve çıkışının nerede olduğunu veya GDMH'yi tam olarak nerede uygulamaya çalıştığınızı gösterebilirsiniz, böylece kod parçamı yazmaya çalışacağım ve ardından hem sizin kodunuzu hem de kodumu karşılaştırabilir ve değerlendirebiliriz. .

 
FxTrader562 :

Evet, bu hem çok basit hem de sağlam görünüyor.. Deneyelim ve görelim.. Harika iş!!!!!

Peki GDMH'nin kullanımı nerede?

GDMH kodumu yazmayı düşünüyordum. Bana sadece RDF giriş ve çıkışının nerede olduğunu veya GDMH'yi tam olarak nerede uygulamaya çalıştığınızı gösterebilirsin, böylece kod parçamı yazmaya çalışacağım ve sonra sonuçları hem kodunuzu hem de kodumu karşılaştırabilir ve değerlendirebiliriz. .

Burada basit çekirdek CRLAgent::kernelizedMatrix(void) (kütüphanede) kullanıyorum, bu nedenle gdmh için bu işlevi değiştirmem gerekiyor

 
Maksim Dmitrievski :

Burada basit çekirdek CRLAgent::kernelizedMatrix(void) (kütüphanede) kullanıyorum, bu nedenle gdmh için bu işlevi değiştirmem gerekiyor

Tamam, bakalım kendi kodumu yazabilecek miyim...

sadece GDMH mantığıyla ilgiliyse, o zaman GDMH algosunu kolayca MQL5 koduna çevirebilir veya dönüştürebilirim, ancak diğer bazı çekirdek işlevleri veya kitaplıklarıyla ilgisi varsa, çalışmak ve dönüştürmek için zamana ihtiyacım var ...

 
FxTrader562 :

Başka bir özellik: komitedeki her aracıyı yapılandırabilirsiniz

CRLAgents *ag1= new CRLAgents( "RlExp1iter" , 5 , 100 , 50 ,regularize,learn);
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   ag1.setAgentSettings( 0 , 100 , 50 , 0.1 ); for each agent you can set number of features, number of trees and r setting, individually
   ag1.setAgentSettings( 1 , 50 , 50 , 0.2 );
   ag1.setAgentSettings( 2 , 30 , 50 , 0.05 );
   ag1.setAgentSettings( 3 , 20 , 50 , 0.1 );
   ag1.setAgentSettings( 4 , 10 , 50 , 0.05 );
//---
   return ( INIT_SUCCEEDED );
  }

Doldurma tahminci değerleri burada değiştiğinde:

 void calcSignal()
  {
   sig1= 0 ;
       
   for ( int i= 0 ;i< ArraySize (ag1.agent);i++)
     {   
       CopyClose ( _Symbol , 0 , 0 , ArraySize (ag1.agent[i].inpVector) ,ag1.agent[i].inpVector);
       Print ( ArraySize (ag1.agent[i].inpVector));
      normalizeArrays(ag1.agent[i].inpVector);
     }
   sig1=ag1.getTradeSignal();
  }

Ayrıca farklı ajan grupları ekleyebilirsiniz.

CRLAgents *ag1= new CRLAgents( "RlExp1iter1" , 5 , 100 , 50 ,regularize,learn);
CRLAgents *ag2= new CRLAgents( "RlExp1iter2" ,1,20, 50 ,regularize,learn);
CRLAgents *ag3= new CRLAgents( "RlExp1iter3" ,18,5, 50 ,regularize,learn);

 
FxTrader562 :

Tamam, bakalım kendi kodumu yazabilecek miyim...

sadece GDMH mantığıyla ilgiliyse, o zaman GDMH algosunu kolayca MQL5 koduna çevirebilir veya dönüştürebilirim, ancak diğer bazı çekirdek işlevleri veya kitaplıklarıyla ilgisi varsa, çalışmak ve dönüştürmek için zamana ihtiyacım var ...

Sadece gmdh mantığını dönüştürebilirseniz - bu çok yardımcı olacaktır, o zaman kitaplığım için değiştirebilirim

Neden: