Neden eski bir iyi algoritmayı bozup 3 kat daha yavaş çalışan yenisiyle değiştirelim?
Genetik test cihazının algoritması değişmedi. Ve 3 kez hakkındaki ifadeler kesinlikle asılsızdır.
Önceki sonuçların önbelleğinin çalışma şeklini değiştirdi. Ve öncekinden kökten daha iyi ve daha eksiksiz hale geldi.
Genetik yönteme yeni bir yaklaşım uygulamanız gerekiyorsa, "optimizasyon" sekmesine yeni bir öğe ekleyin,
bir açıklama ve onunla nasıl çalışılacağı oluşturun.
Yukarıda verdiğim bağlantılara bakın - bunların hepsi sitemizden makaleler. Genetik optimize edici uzun yıllardır tartışılmaktadır.
Lütfen aramada "strateji test edici", "genetik optimize edici" arayın.
Ve tekrarlanan tavsiyemi dinleyin - genetikte tek bir kurtarma faktörü için optimizasyon kontrendikedir. Tamamen kararsız ve aldatıcı (otomasyon için) " kar / maksimum düşüş" oranı ile kolayca büyük değerler üreten algoritmayı yanıltıyorsunuz. Kendiniz için nasıl ve neden olduğunu düşünün.
Pazartesi günü optimizasyon grafiğinin çizimini düzelteceğiz.
Tarihte bir bardakta ciltler gördünüz mü? Bunu bir bardak kalıbı olmadan gerçekleştirmek gerçekçi değildir.
Ben böyle bir şey hayal etmiyorum. Diyelim ki, fiyatı 89 ve hacmi 1 olan bir SATIŞ işareti olsaydı, 90 ve 10'luk bir fiyatla Buy Limit'in kısmen çalışmasını isterim. Şimdi genel olarak üzücü. 90 ve çok fazla 1... ve hatta tamamen bir SATIN AL işareti varsa, sipariş çalışacaktır.
teste başlamadan önce test cihazının tüm dosya önbellekleri diskten silinir
8 aracı çekirdeği kullanan Windows 10, Intel Xeon E5-2630 v4 @ 2.20GHz
Sonuna kadar tam geçiş, ardından terminali yeniden başlatın
1000 (yaklaşık) koridorda durarak
durduktan sonra devam et
Metatrader 5 yapı 1755
38 sn, 4780 geçiş
15 saniye, 1105 geçiş
25 saniye, 3487 geçiş
Metatrader 5 yapı 1809
33 saniye, 5549 geçiş
9 saniye, 1126 geçiş
36 sn, 5863 geçiş
Metatrader 5 yapı 1755:
derleme 1755 tam geçiş, toplam 8960 seçenek geçildi, bunlardan 4780'i fiilen hesaplandı ve 4180'i aynı oturumda biriken önbellekten alındı
bundan sonra bellekteki sıcak önbelleklerin doğrudan etkisinden kaçınmak için terminal yeniden başlatılır.
2018.04.30 11:20:46.867 Tester Best result 3391.17 produced at generation 22. Next generation 33
2018.04.30 11:20:47.118 Tester genetic calculation is over
2018.04.30 11:20:47.126 Tester 4697 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
2018.04.30 11:20:47.338 Tester result cache used 4180 times
2018.04.30 11:20:47.338 Tester genetic optimization finished on pass 8960 (of 49644595)
2018.04.30 11:20:47.349 Statistics optimization done in 0 minutes 38 seconds
2018.04.30 11:20:47.349 Statistics local 4780 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
1337 geçidinde bir durak ile 1755 inşa edin. Bunlardan 216 tanesi önbellekten alınmıştır (216 / 1337 = %16 önbellek isabeti, başlangıç rastgeleliği ve küçük örneklem boyutu nedeniyle düşük)
2018.04.30 11:24:15.913 Tester Best result 3254.53 produced at generation 0. Next generation 4
2018.04.30 11:24:16.775 Tester file cache used 19 times
2018.04.30 11:24:16.775 Tester result cache used 216 times
2018.04.30 11:24:16.775 Tester genetic optimization finished on pass 1337 (of 49644595)
2018.04.30 11:24:16.775 Statistics optimization done in 0 minutes 15 seconds
2018.04.30 11:24:16.775 Statistics local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
Durdurmadan sonra devam eden 1755'i inşa et, terminal yeniden başlamadı, devam.
test, 1809 yapısında olduğu gibi baştan değil, durduğu yerden devam eder, daha sonra önerilen 10496 geçişten 3487'si sayıldı ve 66+3814 önbellekten alındı (66+3814 / 10496 = %36 önbellek isabeti) )
2018.04.30 11:26:27.931 Tester Best result 3363.35 produced at generation 15. Next generation 32
2018.04.30 11:26:28.104 Tester genetic calculation is over
2018.04.30 11:26:28.111 Tester 3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
2018.04.30 11:26:28.539 Tester file cache used 66 times
2018.04.30 11:26:28.539 Tester result cache used 3814 times
2018.04.30 11:26:28.539 Tester genetic optimization finished on pass 8704 (of 49644595)
2018.04.30 11:26:28.550 Statistics optimization done in 0 minutes 25 seconds
2018.04.30 11:26:28.550 Statistics local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
Metatrader 5 yapı 1809:
build 1809 full pass, toplam 8960 seçenek geçildi, bunlardan 5549'u fiilen hesaplandı ve aynı oturumda biriken önbellekten 3411'i alındı
bundan sonra bellekteki sıcak önbelleklerin doğrudan etkisinden kaçınmak için terminal yeniden başlatılır.
2018.04 . 3010 : 50 : 58.997 Tester Best result 3391.17 produced at generation 22 . Next generation 332018.04 . 3010 : 50 : 59.485 Tester genetic calculation is over
2018.04 . 3010 : 50 : 59.485 Tester result cache used 3411 times
2018.04 . 3010 : 50 : 59.485 Tester genetic optimization finished on pass 8960 (of 49644595 )
2018.04 . 3010 : 50 : 59.495 Statistics optimization done in 0 minutes 33 seconds
2018.04 . 3010 : 50 : 59.495 Statistics local 5549 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)
1348 geçidinde bir durak ile 1809 inşa edin. 222 tanesi önbellekten alınmıştır (222 / 1348 = %16 önbellek isabeti, başlangıç rastgeleliği ve küçük örneklem boyutu nedeniyle düşük)
2018.04 . 3011 : 00 : 59.532 Tester Best result 3263.17 produced at generation 0 . Next generation 42018.04 . 3011 : 00 : 59.742 Tester result cache used 222 times
2018.04 . 3011 : 00 : 59.742 Tester genetic optimization finished on pass 1348 (of 49644595 )
2018.04 . 3011 : 00 : 59.742 Statistics optimization done in 0 minutes 09 seconds
2018.04 . 3011 : 00 : 59.742 Statistics local 1126 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)
Durdurmadan sonra devam eden 1809'u inşa et, terminal yeniden başlamadı, devam.
test baştan başlatıldığından, önerilen 10240 geçişten 5863'ü temiz yapıldı ve 4377 önbellekten alındı (4377 / 10240 = %42 önbellek isabeti)
2018.04 . 3011 : 04 : 28.046 Tester Best result 3391.17 produced at generation 27 . Next generation 382018.04 . 3011 : 04 : 28.477 Tester genetic calculation is over
2018.04 . 3011 : 04 : 28.477 Tester result cache used 4377 times
2018.04 . 3011 : 04 : 28.477 Tester genetic optimization finished on pass 10240 (of 49644595 )
2018.04 . 3011 : 04 : 28.488 Statistics optimization done in 0 minutes 36 seconds
2018.04 . 3011 : 04 : 28.488 Statistics local 5863 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)
Şimdi sonuçlar:
"3 kat daha yavaş" iddianız yanlış çıktı
Gerçekte, 1809 yapı test cihazı, dahili süreçlerin optimizasyonu ve yeniden yazılması nedeniyle daha hızlı çalışmaya başladı.
Bu, tam geçiş anından görülebilir, 38 saniye yerine 33 saniye oldu. Ve daha fazla pas ile 33 saniye.
Saniyedeki geçiş sayısını sayarsanız, şunları elde edersiniz: - yapı 1755, 4780 geçiş / 38 sn = saniyede 125 geçiş verir - yapı 1809, 5549 geçiş / 33 sn = saniyede 168 geçiş verir
Yeni bir popülasyon planının oluşturulmasıyla birlikte genetik optimize edicinin yeni "durduktan sonra devam et" şeması doğrudur.
Testçi kavramını yeniden değerlendiriyor ve eski kötü kararları düzeltiyoruz.
Arama alanını daha kapsamlı bir şekilde kapsamak için genetik testlerin birden çok kez çalıştırılması gerektiğinden, önbellekten önceki çalışmaların görselleştirilmesine sahip yeni modelimiz, genetikle çalışmanın mekaniğini daha iyi anlamamızı sağlıyor.
Önceden hesaplanmış önbelleklerdeki tüm verilerin tabloya eklenmesiyle optimizasyon sonuçlarını görüntülemek için yeni bir model, resmi daha eksiksiz görmenizi sağlar. Stratejinizi parçalar halinde sayabilir ve önceki lansmanlar da dahil olmak üzere her seferinde tam sonuçları görebilirsiniz.
Sonuç listesinin gerçek zamanlı görüntülenmesini devre dışı bırakmamızın ve önceki tüm sonuçları birleştirdikten sonra kümülatif sonucu göstermemizin nedeni tam olarak gerçekten büyük birleşik sonuç tablolarıdır.
Robotum başlatma sırasında hem çalışma zamanında hem de Hata Ayıklama'da çöküyor. Derleme normal şekilde ilerler.
Görünüşe göre onlar yüzünden kodda statik üyelere sahip bir sınıf var. Her şey daha önce iyi çalıştı. Ve şimdi global başlatma sırasında bir hata oluştuğunu yazıyor.
Sınıftaki statik öğeleri kaldırdım, normal başladı.
Robotum başlatma sırasında hem çalışma zamanında hem de Hata Ayıklama'da çöküyor. Derleme normal şekilde ilerler.
Görünüşe göre onlar yüzünden kodda statik üyelere sahip bir sınıf var. Her şey daha önce iyi çalıştı. Ve şimdi global başlatma sırasında bir hata oluştuğunu yazıyor.
Sınıftaki statik öğeleri kaldırdım, normal başladı.
Servis masasına bir talep yazın ve bir uzman ekleyin (ex5 dosyası yapabilirsiniz), lütfen.
Ancak, lütfen "Optimizasyon" sekmesine dönün - operasyonel analitik olmadan çalışmak imkansızdır! Büyük tablolar yavaşlar - hadi bir filtre yapalım - her kriter için ilk 20'yi göster - bu o kadar kaynak yoğun değil (?), Ancak resmi görmeye yardımcı olacaktır. Ve bu milyarlarca geçiş - o zaman onları kim yapıyor? Bunlar büyük kapasitelere sahip birimlerdir - genetiği kullanmanın mantıklılığından kendiniz bahsediyorsunuz, ancak böyle bir ayak örtüsü yok. Onlar. 10 binden fazla geçiş nadirdir.
ne yazık ki.
Ön verilere göre, en azından optimizasyon devam ederken bir resim oluşturmak mümkün oldu.
Test cihazının büyük bir performans yükseltmesiyle ve ağır yük altında çalışma modlarını yeniden yapmakla meşgulüz. Büyük iyileştirmeler yapıldı ve yakında yeni hızlandırma yöntemleri uygulanacak.
Sürekli değişen bir geçiş listesini sürdürmek, yeniden sıralamak ve görüntülemek için çok fazla kaynak harcamamak için, hesaplamanın sonunda geçiş listesi penceresinin gösterilmesine karar verildi.
Gerçekten çok büyük kaynak ve fren harcamaları yapıldı. Hele yüzbinlerce satırdan, milyonlarca ve on milyonlarca geçişten bahsettiğimizde. Bir ön veriye gözlerinizle bakmanın bir anlamı yok.
Optimizasyon testleri yapıyor ve 100 milyon tam geçişle çalışıyoruz.
Açıktır ki bu rakamlarla 2-5-10-50 milyonluk bir tabloyu gerçek zamanlı olarak kullanmaktan ve göstermekten söz edilemez. Tek bir seçenek var - her şeyi hızlı ve ekonomik bir şekilde toplamak, sonunda sıralamak ve herhangi bir derinlikte görüntüleme sağlamak.
Neden eski bir iyi algoritmayı bozup 3 kat daha yavaş çalışan yenisiyle değiştirelim?
Genetik test cihazının algoritması değişmedi. Ve 3 kez hakkındaki ifadeler kesinlikle asılsızdır.
Önceki sonuçların önbelleğinin çalışma şeklini değiştirdi. Ve öncekinden kökten daha iyi ve daha eksiksiz hale geldi.
Genetik yönteme yeni bir yaklaşım uygulamanız gerekiyorsa, "optimizasyon" sekmesine yeni bir öğe ekleyin,
bir açıklama ve onunla nasıl çalışılacağı oluşturun.
Yukarıda verdiğim bağlantılara bakın - bunların hepsi sitemizden makaleler. Genetik optimize edici uzun yıllardır tartışılmaktadır.
Lütfen aramada "strateji test edici", "genetik optimize edici" arayın.
Ve tekrarlanan tavsiyemi dinleyin - genetikte tek bir kurtarma faktörü için optimizasyon kontrendikedir. Tamamen kararsız ve aldatıcı (otomasyon için) " kar / maksimum düşüş" oranı ile kolayca büyük değerler üreten algoritmayı yanıltıyorsunuz. Kendiniz için nasıl ve neden olduğunu düşünün.
Pazartesi günü optimizasyon grafiğinin çizimini düzelteceğiz.
Piyasadan geçen hacimlere bağlı olarak limit emirlerin kısmi icrası uygulanacak mı?
Tarihte bir bardakta ciltler gördünüz mü? Bunu bir bardak kalıbı olmadan gerçekleştirmek gerçekçi değildir.
Tarihte bir bardakta ciltler gördünüz mü? Bunu bir bardak kalıbı olmadan gerçekleştirmek gerçekçi değildir.
Ben böyle bir şey hayal etmiyorum. Diyelim ki, fiyatı 89 ve hacmi 1 olan bir SATIŞ işareti olsaydı, 90 ve 10'luk bir fiyatla Buy Limit'in kısmen çalışmasını isterim. Şimdi genel olarak üzücü. 90 ve çok fazla 1... ve hatta tamamen bir SATIN AL işareti varsa, sipariş çalışacaktır.
Genetik test cihazının algoritması değişmedi. Ve 3 kez hakkındaki ifadeler kesinlikle asılsızdır.
Önceki sonuç önbelleğinin çalışma şekli değişti. Ve öncekinden kökten daha iyi ve daha dolgun hale geldi.
Test cihazının yeni ve eski yapıları üzerinde karşılaştırmalı testler yapıldı.
Sonuçlar burada. Günlükler ve açıklama #34 numaralı gönderide.
İşte önerilen koşullarla testim:
Metatrader 5 yapı 1755:
bundan sonra bellekteki sıcak önbelleklerin doğrudan etkisinden kaçınmak için terminal yeniden başlatılır.
2018.04.30 11:24:15.913 Tester Best result 3254.53 produced at generation 0. Next generation 4 2018.04.30 11:24:16.775 Tester file cache used 19 times 2018.04.30 11:24:16.775 Tester result cache used 216 times 2018.04.30 11:24:16.775 Tester genetic optimization finished on pass 1337 (of 49644595) 2018.04.30 11:24:16.775 Statistics optimization done in 0 minutes 15 seconds 2018.04.30 11:24:16.775 Statistics local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)test, 1809 yapısında olduğu gibi baştan değil, durduğu yerden devam eder, daha sonra önerilen 10496 geçişten 3487'si sayıldı ve 66+3814 önbellekten alındı (66+3814 / 10496 = %36 önbellek isabeti) )
2018.04.30 11:26:27.931 Tester Best result 3363.35 produced at generation 15. Next generation 32 2018.04.30 11:26:28.104 Tester genetic calculation is over 2018.04.30 11:26:28.111 Tester 3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml 2018.04.30 11:26:28.539 Tester file cache used 66 times 2018.04.30 11:26:28.539 Tester result cache used 3814 times 2018.04.30 11:26:28.539 Tester genetic optimization finished on pass 8704 (of 49644595) 2018.04.30 11:26:28.550 Statistics optimization done in 0 minutes 25 seconds 2018.04.30 11:26:28.550 Statistics local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)Metatrader 5 yapı 1809:
bundan sonra bellekteki sıcak önbelleklerin doğrudan etkisinden kaçınmak için terminal yeniden başlatılır.
test baştan başlatıldığından, önerilen 10240 geçişten 5863'ü temiz yapıldı ve 4377 önbellekten alındı (4377 / 10240 = %42 önbellek isabeti)
Şimdi sonuçlar:
Bu, tam geçiş anından görülebilir, 38 saniye yerine 33 saniye oldu. Ve daha fazla pas ile 33 saniye.
Saniyedeki geçiş sayısını sayarsanız, şunları elde edersiniz:
- yapı 1755, 4780 geçiş / 38 sn = saniyede 125 geçiş verir
- yapı 1809, 5549 geçiş / 33 sn = saniyede 168 geçiş verir
Testçi kavramını yeniden değerlendiriyor ve eski kötü kararları düzeltiyoruz.
Arama alanını daha kapsamlı bir şekilde kapsamak için genetik testlerin birden çok kez çalıştırılması gerektiğinden, önbellekten önceki çalışmaların görselleştirilmesine sahip yeni modelimiz, genetikle çalışmanın mekaniğini daha iyi anlamamızı sağlıyor.
Önceden hesaplanmış önbelleklerdeki tüm verilerin tabloya eklenmesiyle optimizasyon sonuçlarını görüntülemek için yeni bir model, resmi daha eksiksiz görmenizi sağlar. Stratejinizi parçalar halinde sayabilir ve önceki lansmanlar da dahil olmak üzere her seferinde tam sonuçları görebilirsiniz.
Sonuç listesinin gerçek zamanlı görüntülenmesini devre dışı bırakmamızın ve önceki tüm sonuçları birleştirdikten sonra kümülatif sonucu göstermemizin nedeni tam olarak gerçekten büyük birleşik sonuç tablolarıdır.
Robotum başlatma sırasında hem çalışma zamanında hem de Hata Ayıklama'da çöküyor. Derleme normal şekilde ilerler.
Görünüşe göre onlar yüzünden kodda statik üyelere sahip bir sınıf var. Her şey daha önce iyi çalıştı. Ve şimdi global başlatma sırasında bir hata oluştuğunu yazıyor.
Sınıftaki statik öğeleri kaldırdım, normal başladı.
Robotum başlatma sırasında hem çalışma zamanında hem de Hata Ayıklama'da çöküyor. Derleme normal şekilde ilerler.
Görünüşe göre onlar yüzünden kodda statik üyelere sahip bir sınıf var. Her şey daha önce iyi çalıştı. Ve şimdi global başlatma sırasında bir hata oluştuğunu yazıyor.
Sınıftaki statik öğeleri kaldırdım, normal başladı.
Servis masasına bir talep yazın ve bir uzman ekleyin (ex5 dosyası yapabilirsiniz), lütfen.
Bütün bunlar harika!
Ancak, lütfen "Optimizasyon" sekmesine dönün - operasyonel analitik olmadan çalışmak imkansızdır! Büyük tablolar yavaşlar - hadi bir filtre yapalım - her kriter için ilk 20'yi göster - bu o kadar kaynak yoğun değil (?), Ancak resmi görmeye yardımcı olacaktır. Ve bu milyarlarca geçiş - o zaman onları kim yapıyor? Bunlar büyük kapasitelere sahip birimlerdir - genetiği kullanmanın mantıklılığından kendiniz bahsediyorsunuz, ancak böyle bir ayak örtüsü yok. Onlar. 10 binden fazla geçiş nadirdir.
ne yazık ki.
Ön verilere göre, en azından optimizasyon devam ederken bir resim oluşturmak mümkün oldu.
Test cihazının büyük bir performans yükseltmesiyle ve ağır yük altında çalışma modlarını yeniden yapmakla meşgulüz. Büyük iyileştirmeler yapıldı ve yakında yeni hızlandırma yöntemleri uygulanacak.
Sürekli değişen bir geçiş listesini sürdürmek, yeniden sıralamak ve görüntülemek için çok fazla kaynak harcamamak için, hesaplamanın sonunda geçiş listesi penceresinin gösterilmesine karar verildi.
Gerçekten çok büyük kaynak ve fren harcamaları yapıldı. Hele yüzbinlerce satırdan, milyonlarca ve on milyonlarca geçişten bahsettiğimizde. Bir ön veriye gözlerinizle bakmanın bir anlamı yok.
Optimizasyon testleri yapıyor ve 100 milyon tam geçişle çalışıyoruz.
Açıktır ki bu rakamlarla 2-5-10-50 milyonluk bir tabloyu gerçek zamanlı olarak kullanmaktan ve göstermekten söz edilemez. Tek bir seçenek var - her şeyi hızlı ve ekonomik bir şekilde toplamak, sonunda sıralamak ve herhangi bir derinlikte görüntüleme sağlamak.
Bize her şeyi anlat