Uzman Danışmanınızı optimize edin - ve optimize edilmiş olanlardan en iyi şekilde yararlanın. - sayfa 41

 

Ücretsiz sinyal - yeniden keşfedildi.

Şu anda orada çalışan 6 TS Ligi var ve bana en uygunu gibi görünüyor.

TS Ligi favorilerinin çalışmalarının güncel sonuçları önceki sayfalarda yer almaktadır .

Yeniden optimizasyon için mevcut araçlar:

Numara. sembol sistem Sebeb olmak
1 EURCHF ChnTrendDTS Yeni
2 EURCHF ChnTrendSAR Yeni
3 EURCHF ChnTrendSP Yeni
4 EURCHF ChnFlatSP Yeni
5 EURCHF ChnFlatSAR Yeni
6 EURCHF ChnFlatRTS Yeni
7 EURCHF ChnTrendRTS Yeni
sekiz EURCHF ChnFlatDTS Yeni
dokuz GBPUSD ChnTrendSAR İzin verilmeyen SL
on CADJPY ChnFlatSAR İzin verilmeyen SL
on bir CHFJPY EMAFlatRTS Büyük D.D.
12 USD/JPY EMAFlatDTS Uzun Maksimum Bekleme


USDJPY EMAFlatDTS'ye bahse girerim

Optimizasyon dönemi 4.05.17 - 4.15.18, 4.10.17'den ileri

(Yeniden optimize ederken, bu mesajı düzeltiyorum ve aracı sonlardan başlayarak - ilklere kadar yeniden optimize ediyorum)

 
Georgiy Merts :

Ücretsiz sinyal - yeniden keşfedildi.

Şu anda orada çalışan 6 TS Ligi var ve bana en uygunu gibi görünüyor.

Yine de bir dosyaya optimizasyon sonuçlarını yazmayı mümkün kılabilir misiniz? Sadece standart göstergeler bana çok az şey veriyor ve bence diğerleri.

İşte optimize edicinin verdiği veri kümem, ancak onu da genişletmeyi planlıyorum.

 
Aleksey Vyazmikin :

Optimizasyon sonuçlarını bir dosyaya yazmayı yine de mümkün kılabilir misiniz? Sadece standart göstergeler bana çok az şey veriyor ve bence diğerleri.

İşte optimize edicinin verdiği veri kümem, ancak onu da genişletmeyi planlıyorum.


Tabi ki tüm bu verilerim Expert Advisor içerisinde mevcut. Her geçişten sonra böyle bir dosya oluşturmayı ve dosya alanına mı atmayı öneriyorsunuz?

Ama eminim ki birçok kişi ona bakacaktır?


Burada, diyelim ki, dosyanızda - ben şahsen bu sayıyı algılamıyorum, burada "ağaçlar için ormanı göremezsiniz". Sadece "Kurtarma Faktörü" ve "Prosad" sütunlarına bakıyorum.

Diğer tüm veriler benim için gereksiz, yeni bir şey bildirmiyorlar. Uzman Danışmanlarda mümkün olduğunca az parametreye ve değerlendirme için mümkün olduğunca az göstergeye sahip olmak gerektiğini düşünüyorum. Her şeyi tek bir "kalite" parametresinde yapardım, ancak "kararlılık" parametresine de ihtiyaç olduğunu görüyorum.


"İşte benim için görüntülenen parametreler ve ben hala bu seti genişletmeyi düşünüyorum" diyorsunuz - amaç nedir?

Daha spesifik bir örnek üzerinde gösterin - görüntülediğiniz sütunların en az üçte birini nerede kullanırsınız? Aksi takdirde, bir sonraki konuda tuvalle çalışmak için harika bir motor yazan, harika görsel efektler grafikte görüntülenen ... ancak bu özelliklerin pratik faydalarını düşünmemiş bir katılımcı gibisiniz. Herhangi bir verinin elde edilmesi belirli bir fayda sağlamalı, TS'nin seçimi veya işletilmesine yönelik belirli bir metodolojinin parçası olmalıdır. Ve "sadece olmak" ... Bu kaynakları dışarıdan gelen sistemlerin veya yeni sistemlerin ek yeniden optimizasyonu için harcamak daha iyidir.

Teoride, elbette, dosyanın çıktısı ile kafanız karışabilir. Yeterince üç parametre olmadığı için en az birkaç oy daha varsa - kalite, düşüş ve satır sırası - peki, böyle bir dosya yapacağım ve verilerini raporlarda göstereceğim.

 

Yeniden optimizasyon için mevcut araçlar:

Numara. sembol sistem Sebeb olmak
1 EURCHF ChnTrendSAR Yeni
2 EURCHF ChnTrendSP Yeni
3 EURCHF ChnFlatSP Yeni
4 EURCHF ChnFlatSAR Yeni
5 EURCHF ChnFlatRTS Yeni
6 EURCHF ChnTrendRTS Yeni
7 EURCHF ChnFlatDTS Yeni
sekiz GBPUSD ChnTrendSAR İzin verilmeyen SL
dokuz EURCHF EMATrendSP Birçok SL
on GBPAUD EMAFlatRTS Büyük D.D.
on bir CADJPY ChnFlatSAR İzin verilmeyen SL
12 CHFJPY EMAFlatRTS Büyük D.D.
on üç GBPNZD EMAFlatSAR Uzun Maksimum Bekleme


GBPNZD EMAFlatSAR'ı ayarladım

05/05/17 - 05/05/18, 10/5/17'den ileri

 

Favorilere göre mevcut durum

(Tüm araçlar, minimum lot ile MM olmadan demoda çalışır)

Kalite için ilk 20:

En İyi 10 Kalite Tablosu:

Bakiyeye göre ilk 20:

Bakiyeye göre ilk 10 tablosu:

Uzmanlar Birliği Ticaret Sistemlerinin (hem MT4 hem de MT5 sürümleri) Yandex diskinde bulunduğunu hatırlatmama izin verin. Arşiv ayrıca Birliğin TS'lerinin çalışma ilkelerinin kısa bir tanımını ve içinde faaliyet gösteren TS'lerin bir listesini içerir.

Varsayılan olarak, Lig herhangi bir kısıtlama olmaksızın bir TS (EURUSD ChnTrendSAR, magic 220141) üzerinde çalışır.

Diğer TS'ler yalnızca strateji test cihazında çalışır. Demo veya gerçek çalışmaları için kayıt kodları gereklidir. Bireysel Lig sistemlerinin optimizasyonu için hesap numarasına göre 3 ay geçerli kayıt kodları verilir (dört çekirdekli Core i5'in 2-5 saatlik çalışması).

EALeague
EALeague
  • yadi.sk
View and download from Yandex.Disk
 
Georgiy Merts :


Tabi ki tüm bu verilerim Expert Advisor içerisinde mevcut. Her geçişten sonra böyle bir dosya oluşturmayı ve dosya alanına mı atmayı öneriyorsunuz?

Ama eminim ki birçok kişi ona bakacaktır?

"İşte benim için görüntülenen parametreler ve ben hala bu seti genişletmeyi düşünüyorum" diyorsunuz - amaç nedir?

Daha spesifik bir örnek üzerinde gösterin - görüntülediğiniz sütunların en az üçte birini nerede kullanırsınız?

Teoride, elbette, dosyanın çıktısı ile kafanız karışabilir. Yeterince üç parametre olmadığı için en az birkaç oy daha varsa - kalite, düşüş ve satır sırası - peki, böyle bir dosya yapacağım ve verilerini raporlarda göstereceğim.

Bunu söyleyeceğim, birdenbire ne tür danışmanları optimize ettiğimi görmek benim için ilginç hale geldi, ancak tam algoritmalarını bilmediğim için çalışmalarının sonucuna odaklanmaya karar verdim ve aniden sonucunu değerlendiremeyeceğimi fark ettim. istatistiksel göstergelerin kıtlığı nedeniyle çalışma.

Proje katılımcılarının seçimi kendilerinin yapması gerektiğini söylüyorsunuz ama bu eldeki verilere göre gerçekçi değil.

Şimdi mekanik bir değerlendirme sistemi üzerinde çalışıyorum - ana fikir, elbette, aynı derecede önemli olan sadece mutlak değerleri değil, tüm göstergelerin dengesidir.

Örneğin, karı değerlendirmek için sıklıkla "Gelir" - "Maksimum Sürekli Kar" * 3 - "Gider" - "Maksimum Sürekli Zarar" * 3 formülünü kullanırım ve eğer hala karadaysak, o zaman daha ileriye bakarız, ancak Ayrıca bu aşamada çok fazla kesebilirsiniz.

Ve ben düşüşü sadece fiziksel olarak algılıyorum, çünkü yüzde, düşüş anındaki birikmiş kara bağlı, ama bu bir şey söyleyemiyor çünkü bir dahaki sefere bu düşüşün aynı şekilde gerçekleşeceğinin garantisi yok, sadece birikmiş kardan sonra. Örneğin, 1000'lik bir başlangıç sermayesiyle% 10'luk bir düşüş elde ettim - bu 10 birim ve 2000'lik bir kârla% 10 ise, bu zaten 30 birim ise, göstergelerin karşılaştırılabilir olmadığını kabul edin. Yüzdelerdeki anlam, sadece her gün para çekerseniz, ancak bunu uygularsanız, otomatik olarak hesaplanan diğer göstergeler dışarı çıkar, o zaman her bir göstergeyi kendiniz hesaplamanız gerekir, bu da zahmetlidir.

Bunu daha önce yapmadıysanız, bir dosyaya veri yazmak için kodumu verebilirim.

 
Aleksey Vyazmikin :

Bunu daha önce yapmadıysanız, bir dosyaya veri yazmak için kodumu verebilirim.

Skype'ı reddetmen boşuna. Oradaki koda bakmak ve en iyi nasıl yapılacağını bulmak mümkün olurdu.

Hadi ama, hangi göstergelere ihtiyacın var?

Ve danışman bunları hangi noktada göstermelidir? Anladığım kadarıyla - OnTester() işlevinde ? Senin için böyle bir şey yapacağım. Excel'de kolayca açılabilen bir CSV dosyası çıkacaktır.


Evet ve hangi danışmandan bahsediyoruz - Ligin ana uzmanı mı yoksa bireysel TS için ayrı uzmanlar mı?

 
Georgiy Merts :

Skype'ı reddetmen boşuna. Oradaki koda bakmak ve en iyi nasıl yapılacağını bulmak mümkün olurdu.

Hadi ama, hangi göstergelere ihtiyacın var?

Ve danışman bunları hangi noktada göstermelidir? Anladığım kadarıyla - OnTester() işlevinde ? Senin için böyle bir şey yapacağım.


Evet ve hangi danışmandan bahsediyoruz - Ligin ana uzmanı mı yoksa bireysel TS için ayrı uzmanlar mı?

ben böyle düzenledim

 //--- Кол-во показателей для записи в файл
#define STAT_VALUES_COUNT 21
double stat_values[STAT_VALUES_COUNT]; // Массив для показателей теста


//+------------------------------------------------------------------+
//| Начало оптимизации                                               |
//+------------------------------------------------------------------+
void OnTesterInit ()
  {
       //FileWrite(Statistic,"typeMAH","pMAH","pipsXH","pMAT_Sell","CalcPlan","FinRezultatTotalSell","avrMassSell","MaxOrdersSell","N_Sell","ProcTotalSell","Вершин Sell","FinRezultatTotalBuy","avrMassBuy","MaxOrdersBuy","N_Buy","ProcTotalBuy","Вершин Buy");
       //Printer.Write("OnTesterInit");

       string TimeF= TimeToString ( TimeLocal (), TIME_DATE | TIME_MINUTES );
       StringSetCharacter (TimeF, 13 , '_' );    
      Statistic=Printer.FileCreate( Symbol ()+ "_" +TimeF+ "_S&G" , "S&G\\Test" , false , false ,EvryTick); //Создание файла для записи     
      Printer.Write( "N" ,
       "Депо" ,
       "Прибыль" ,
       "Доход" ,
       "Расход" ,
       "Прибыльность" ,
       "Фактор вост." ,
       "Мат ож" ,
       "К.Ш." ,
       "Макс ДД баланса" ,
       "Макс ДД средств" ,
       "N сделок" ,
       "N трейдов" ,
       "N + трейдов" ,
       "N - трейдов" ,
       "Sell трейдов" ,
       "Buy трейдов" ,
       "Sell + трейдов" ,
       "Buy + трейдов" ,
       "Avr + трейдов" ,
       "Avr - трейдов" ,
       "% Sell от прибыльных" ,
       "% Buy от прибыльных" ,
       "% Sell от всех" ,
       "% Buy от всех" ,      
       "% + от всех" ,
       "Custom"             
      );
  }
//+------------------------------------------------------------------+
//| Обработчик события окончания тестирования                        |
//+------------------------------------------------------------------+
double OnTester ()
  {

  
       //--- Заполним массив показателями теста
      GetTestStatistics(stat_values);
       //--- Создадим фрейм
       FrameAdd ( "Statistics" , 1 , 0 ,stat_values);

   double custom_Pokazatel_01=CustomPokazatelf( 1 );

   // return(0.0);
   return (custom_Pokazatel_01);

  }
//+------------------------------------------------------------------+
//| Пользовательские функции                                         |
//+------------------------------------------------------------------+
double CustomPokazatelf( int VariantPokazatel)
{

     double   profit = TesterStatistics ( STAT_PROFIT );
     double   max_dd = TesterStatistics ( STAT_BALANCE_DD );
   //  double  RecoveryF = TesterStatistics(STAT_RECOVERY_FACTOR);  
     double   Mat_Ojidanie = TesterStatistics ( STAT_EXPECTED_PAYOFF );  
     
   double custom_Pokazatel= 0 ;
   //=ЕСЛИ(C3-40000>0;(C3-40000)*(3000-J3);-1)
   //if (profit-40000>0)custom_Pokazatel_01=(profit-40000)*(3000-max_dd);
   //=ЕСЛИ(И(C3-40000>0;3000-J3>0);(C3-40000)*СТЕПЕНЬ(3000-J3;1,5)*H3;0)

   if (VariantPokazatel== 1 )
      {
       if (profit-Find_Profit> 0 && Find_MaxDD-max_dd> 0 )custom_Pokazatel=(profit-Find_Profit)* MathPow ((Find_MaxDD-max_dd), 1.5 )*Mat_Ojidanie/(Find_Profit+max_dd);
       else custom_Pokazatel=- 1 ;
      }
   return (custom_Pokazatel);
}
//+------------------------------------------------------------------+
//| Очередной проход оптимизации                                     |
//+------------------------------------------------------------------+
void OnTesterPass ()
  {

       string name = "" ;   // Публичное имя/метка фрейма
       ulong   pass = 0 ;   // Номер прохода в оптимизации, на котором добавлен фрейм
       long    id   = 0 ;   // Публичный id фрейма
       double val  = 0.0 ; // Одиночное числовое значение фрейма
       //---
       FrameNext (pass,name,id,val,stat_values);
       //---
     // Print(__FUNCTION__,"(): pass: "+IntegerToString(pass)+"; STAT_PROFIT: ",DoubleToString(stat_values[0],2));
     // double a=stat_values[0];
     // Print ("a=",a);
     // Print(DotToComma(DoubleToString(stat_values[0],2)));
      
       double SellPribl_from_Pribl= 0.0 ; //Процент прибыльных позиций Sell из всех прибыльных
       double BuyPribl_from_Pribl= 0.0 ; //Процент прибыльных позиций Buy из всех прибыльных
       double SellPribl_from_All= 0.0 ; //Процент прибыльных позиций Sell из всех проторгованных
       double BuyPribl_from_All= 0.0 ; //Процент прибыльных позиций Buy из всех проторгованных
       double Pribl_from_All= 0.0 ; //Процент прибыльных позиций из всех проторгованных
       if (stat_values[ 12 ]> 0 ) SellPribl_from_Pribl=stat_values[ 16 ]/stat_values[ 12 ]* 100.0 ;
       if (stat_values[ 12 ]> 0 ) BuyPribl_from_Pribl=stat_values[ 17 ]/stat_values[ 12 ]* 100.0 ;
       if (stat_values[ 11 ]> 0 ) SellPribl_from_All=stat_values[ 16 ]/stat_values[ 11 ]* 100.0 ;
       if (stat_values[ 11 ]> 0 ) BuyPribl_from_All=stat_values[ 17 ]/stat_values[ 11 ]* 100.0 ;
       if (stat_values[ 11 ]> 0 ) Pribl_from_All=stat_values[ 12 ]/stat_values[ 11 ]* 100.0 ;
      
       /*if (pass>0)*/ Printer.Write( IntegerToString (pass),
                              stat_values[ 0 ],
                              stat_values[ 1 ],
                              stat_values[ 2 ],
                              stat_values[ 3 ],
                               DoubleToString (stat_values[ 4 ], 2 ),
                               DoubleToString (stat_values[ 5 ], 2 ),
                               DoubleToString (stat_values[ 6 ], 2 ),
                               DoubleToString (stat_values[ 7 ], 2 ),
                              stat_values[ 8 ],
                              stat_values[ 9 ],
                              stat_values[ 10 ],
                              stat_values[ 11 ],
                              stat_values[ 12 ],
                              stat_values[ 13 ],
                              stat_values[ 14 ],
                              stat_values[ 15 ],
                              stat_values[ 16 ],
                              stat_values[ 17 ],
                              stat_values[ 18 ],
                              stat_values[ 19 ],      
                               DoubleToString (SellPribl_from_Pribl, 2 ),
                               DoubleToString (BuyPribl_from_Pribl, 2 ),  
                               DoubleToString (SellPribl_from_All, 2 ),
                               DoubleToString (BuyPribl_from_All, 2 ),
                               DoubleToString (Pribl_from_All, 2 ),
                               DoubleToString (stat_values[ 20 ], 2 )
                              );


//--- Если включена запись результатов оптимизации
//      CreateOptimizationReport();

/*

  Print("OnTesterPass");
         Printer.Write("OnTesterPass");
*/

  }
//+------------------------------------------------------------------+
//| Завершение оптимизации                                           |
//+------------------------------------------------------------------+
void OnTesterDeinit ()
  {



       FileClose (Statistic);

  }
//+------------------------------------------------------------------+
//| Заполняет массив результатами теста                              |
//+------------------------------------------------------------------+
void GetTestStatistics( double &stat_array[])
  {


stat_array[ 0 ]=     TesterStatistics ( STAT_INITIAL_DEPOSIT );       //      Значение начального депозита
stat_array[ 1 ]=     TesterStatistics ( STAT_PROFIT );                 //     Чистая прибыль по окончании тестирования, сумма STAT_GROSS_PROFIT и STAT_GROSS_LOSS (STAT_GROSS_LOSS всегда меньше или равно нулю)
stat_array[ 2 ]=     TesterStatistics ( STAT_GROSS_PROFIT );     //   Общая прибыль, сумма всех прибыльных (положительных) трейдов. Значение больше или равно нулю
stat_array[ 3 ]=     TesterStatistics ( STAT_GROSS_LOSS );         //        Общий убыток, сумма всех убыточных (отрицательных) трейдов. Значение меньше или равно нулю
stat_array[ 4 ]=     TesterStatistics ( STAT_PROFIT_FACTOR );           //   Прибыльность – отношение STAT_GROSS_PROFIT/STAT_GROSS_LOSS. Если STAT_GROSS_LOSS=0, то прибыльность принимает значение DBL_MAX
stat_array[ 5 ]=     TesterStatistics ( STAT_RECOVERY_FACTOR );       //      Фактор восстановления – отношение STAT_PROFIT/STAT_BALANCE_DD
stat_array[ 6 ]=     TesterStatistics ( STAT_EXPECTED_PAYOFF );       //      Математическое ожидание выигрыша
stat_array[ 7 ]=     TesterStatistics ( STAT_SHARPE_RATIO );     //   Коэффициент Шарпа
stat_array[ 8 ]=     TesterStatistics ( STAT_BALANCE_DD );         //        Максимальная просадка баланса в деньгах. В процессе торговли баланс может испытать множество просадок, берется наибольшее значение.
stat_array[ 9 ]=     TesterStatistics ( STAT_EQUITY_DD );           //        Максимальная просадка средств в деньгах. В процессе торговли средства могут испытать множество просадок, берется наибольшее значение.
stat_array[ 10 ]= TesterStatistics ( STAT_DEALS );               //  Количество совершенных сделок
stat_array[ 11 ]= TesterStatistics ( STAT_TRADES );           //     Количество трейдов
stat_array[ 12 ]= TesterStatistics ( STAT_PROFIT_TRADES );       //   Прибыльные трейды
stat_array[ 13 ]= TesterStatistics ( STAT_LOSS_TRADES );           //        Убыточные трейды
stat_array[ 14 ]= TesterStatistics ( STAT_SHORT_TRADES );       //   Короткие трейды
stat_array[ 15 ]= TesterStatistics ( STAT_LONG_TRADES );               //     Длинные трейды 
stat_array[ 16 ]= TesterStatistics ( STAT_PROFIT_SHORTTRADES );   // Короткие прибыльные трейды
stat_array[ 17 ]= TesterStatistics ( STAT_PROFIT_LONGTRADES );           //   Длинные прибыльные трейды
stat_array[ 18 ]= TesterStatistics ( STAT_PROFITTRADES_AVGCON );   // Средняя длина прибыльной серии трейдов
stat_array[ 19 ]= TesterStatistics ( STAT_LOSSTRADES_AVGCON );           //   Средняя длина убыточной серии трейдов
//stat_array[20]=       TesterStatistics(STAT_CUSTOM_ONTESTER);    //   Custom
stat_array[ 20 ]= CustomPokazatelf( 1 );       //   Custom

  }

Kodda bir aksaklık var ya da kodda olmayabilir - bazen hepsinin son karesi gelmiyor, ancak bu her zaman böyle değil ve bazen numaralandırma eşleşebilir. Genel olarak, bunun bir program hatası olduğunu düşünüyorum, ancak kodda bir hata görürseniz bana söyleyin!


Ve ne tür danışmanlarda - evet, mümkün ve optimizasyona tabi olan her şeyde.

 

hm...

Yani testin her geçişini sadece istatistik dosyasına değil, aynı zamanda MQD dosyasının çerçevelerine de kaydediyorsunuz? doğru mu anladım

Ayrıca, test cihazı Bulutta başarılı olursa OnTesterPass() üzerindeki bir dosyaya böyle bir çıktının nasıl çalışacağını merak ediyorum. Çerçeveye yazılacak, ancak dosyaya yazılmadığından şüpheleniyorum.

Alexey, veri akışında boğulacaksın.


Ama senin için çok önemliyse kodunu TS League'e koyabilirim.

Her şey sizin için yeterince şeffaf ve mantıklı, bu nedenle kod neredeyse hiçbir değişiklik olmadan sığacak, tüm yapıların OOP sınıflarımda olması için sadece biraz iyileştirme gerektirecek.

Pekala... Yapacağım, bugün ya da yarın kodunuzu Lig'de puanlayacağım... Gerçi bunda pek bir fayda görmüyorum. Pek çok sayı var ve ağaçlar için ormanı görmeyeceğiz.

 
Georgiy Merts :

hm...

Yani testin her geçişini sadece istatistik dosyasına değil, aynı zamanda MQD dosyasının çerçevelerine de kaydediyorsunuz? doğru mu anladım

Alexey, veri akışında boğulacaksın.


Ama senin için çok önemliyse kodunu TS League'e koyabilirim.

Her şey sizin için yeterince şeffaf ve mantıklı, bu nedenle kod neredeyse hiçbir değişiklik olmadan sığacak, tüm yapıların OOP sınıflarımda olması için sadece biraz iyileştirme gerektirecek.

Pekala... Yapacağım, bugün ya da yarın kodunuzu Lig'de puanlayacağım... Gerçi bunda pek bir fayda görmüyorum. Pek çok sayı var ve ağaçlar için ormanı görmeyeceğiz.

Tüm bunları ağdan - optimize edicilerden (aracılar) toplamak için çerçevelere ihtiyaç var, ancak birden fazla bilgisayar kullanıyorum. Ve böylece, kod sıfırdan benim değil - kısmen optimizasyonla ilgili bir makaleden çıkardım ve ihtiyaçlarıma göre uyarladım.

Expert Advisor'da hangi istatistiklerin yazılacağına veya yazılmayacağına göre harici bir değişken yapabilirsiniz.

Ve, benim canavarımın aksine, Expert Advisor'da birkaç harici değişkeniniz var, bu yüzden değişkenlerin değerini hemen yazabilirsiniz (ihtiyacınız var) - bu, son dosyaya birkaç satır ekleyecektir, ancak onunla çalışmanıza izin verecektir. farklı bir seviyede. Şimdi sadece bu değerleri elimle dosyaya ekliyorum yani. ne şekilde optimize ettiğimi parçalar halinde optimize ediyorum.