Algoritmalar, karar yöntemleri, performanslarının karşılaştırılması - sayfa 13

 
Реter Konow :

2. Danışmana entegrasyon anahtardır . Çözüm çok kafa karıştırıcıysa (eminim Sergey Dzyublik'in çözümünün nasıl çalıştığını bile açıklayamazsınız), o zaman bir tüccar için pratik değeri nedir? Süper karışık çözümlerden normal bir Uzman Danışman oluşturmak imkansızdır.

Önerilen çözüm hemen açıklandı

Ama kimse ne olduğunu sormadı bile. Uygulama çok "daha anlaşılır" olabilirdi. Ancak bu, fikrin temelini değiştirmeyecekti.

 
Реter Konow :

1. Uygulama açısından, bunlar gerçeklerle savaştığınız boş sözlerdir. Sihirbazı aramak için zamanlayıcıyı gösterdim. Çözümü bir Uzman Danışmana entegre etmenin kolaylığını gösterdim. Kararımı sadece iftira olarak gösteriyorsun. Başka hiçbir şey.

2. Danışmana entegrasyon anahtardır . Çözüm çok kafa karıştırıcıysa (eminim Sergey Dzyublik'in çözümünün nasıl çalıştığını bile açıklayamazsınız), o zaman bir tüccar için pratik değeri nedir? Süper karışık çözümlerden normal bir Uzman Danışman oluşturmak imkansızdır.

Sergey Dzyublik'in çözümünü yargılamıyorum. Henüz açıklamadı. Açıkladığında, kimin "bahçeyi çitle çevirdiği" netleşecek.


Bu yüzden size cevap vermek istedim ama moderatör öne çıktı ve aynı şeyi söyledi. Ve size ne dediğini tekrar göstereceğim:

Artyom Trishkin :

Numara. Size yabancı bir çözüm tarzı önermiyorum. Kendi tarzınızda yazın - kimse kimseye bir şey dayatmaz.

Ancak, karakteristik azimle, sorunları en baştan en iyi şekilde çözmenizi öneririm. Ne yapıyorsun?

1. Başlangıçta mümkün olan en uygun olmayan çözümü seçersiniz ve onu her yönden yenmeye başlarsınız. Bu görev için, çözümü düşünme aşamasında bile, yalnızca seçeneğinizden vazgeçmek değil, aynı zamanda bu yönde düşünmemek bile gerekliydi - metinle çalışmak çok kaynak tüketiyor. Ve metin işlevleri bunun için değil.

2. Expert Advisor'a entegrasyona ve önerilen çözümün avantajlarına gelince - bunu öneren kişinin size cevap vermesine izin verin.


Not: Görünüşe göre çok kötü bir öğrencisin :)

 
Реter Konow :

Hatalarımı, onlara ikna olduğum anda anlıyorum. Bugüne kadar kimse kararımın yanlış olduğunu kanıtlayamadı . Bekleyecek.

Kötü eğitilmişsin!

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Algoritmalar, karar yöntemleri, performanslarının karşılaştırılması

Sergey Dzyublik , 2017.12.10 20:58


1. Kodunuz çalışmıyor.
Yanlış desen "_index_magic". Olası çözüm "|index_magic"


Ekledikten sonra elimizde _1_3_2_4_3_5_4_6_ var
Lütfen listedeki 3. kişiyi bulun.
2. sonucu alacaksınız.

 string All_magics = "_1_3_2_4_3_5_4_6_" ;

int Get_magic( int deal_number)
{
 int stringlen = StringLen (( string )deal_number); //добавлено
 //--------------------------------------------
 //Получаем начало строки магика.
 //--------------------------------------------
 int Magic_position_start =   StringFind (All_magics, "_" + ( string )deal_number + "_" , 0 ) + stringlen + 2 ;
 //--------------------------------------------
 //Получаем конец строки магика.
 //--------------------------------------------
 int Magic_position_end   =   StringFind (All_magics, "_" + ( string )(deal_number + 1 ) + "_" , 0 );
 //--------------------------------------------
 //Получаем количество цифр из которых состоит магик.
 //--------------------------------------------
 int Magic_lenght         =  Magic_position_end - Magic_position_start;
 //--------------------------------------------
 //Извлекаем магик из общей строки.
 //--------------------------------------------
 string Magic             =   StringSubstr (All_magics,Magic_position_start,Magic_lenght);
 //--------------------------------------------
 //Возвращаем цифровое значение магика.
 //--------------------------------------------
 return (( int )Magic);
}
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   Print (All_magics);
   Print ( Get_magic( 3 ) );   
}


Sonuç

_1_3_2_4_ 3_5 _4_6_
2
 
Artyom Trishkin :

Şimdiye kadar burada, kararını burada yayınlamaya cesaret eden bir kişinin alay konusu olduğunu görüyorum.

Hafifçe söylemek gerekirse - kelimeden hiç işe yaramaz. Ama mesaj attı. Gerisi şimdiye kadar sadece gülüp parmaklarını dürtecek cesarete sahip.

Artem, bir kişiye ... _25_ ... alt dizisinde üç değil dört karakter olduğunu açıklamak için zamanımın 40 dakikasını ve birkaç milyon sinir hücresini harcadım. Peki, ona kavramsal olarak daha değerli ve güçlü bir şeyi açıklamamız sence kaç adam-yılı sürer? Bence bu çok adam-yılların birçoğu. Bu nedenle, kimse bir şeyi açıklamaya ve çiğnemeye bile çalışmıyor. Sadece açıklayıcının altına düşemeyeceği belirli bir minimum seviye vardır ve Peter'ın seviyesi bu çubuğun altındadır.

 
fxsaber :



Sonuç

Sihirbaz sayısının kullanıcı tarafından belirlendiğini zaten söylemiştim. Dize içindeki çarpışmaları önlemek için sihirbazlar için belirli bir sayısal aralık ayırmanız gerekir. Örneğin, 100.000'den 999.000'e kadar. O zaman sorun olmayacak.

Bu durumda, elbette, çözümü geliştirmek mümkündür. Bu sadece bir "prototip". Demo versiyonu.

 
Vasiliy Sokolov :

Artem, bir kişiye ... _25_ ... alt dizisinde üç değil dört karakter olduğunu açıklamak için zamanımın 40 dakikasını ve birkaç milyon sinir hücresini harcadım. Peki, ona kavramsal olarak daha değerli ve güçlü bir şeyi açıklamamız sence kaç adam-yılı sürer? Bence bu çok adam-yılların birçoğu. Bu nedenle, kimse bir şeyi açıklamaya ve çiğnemeye bile çalışmıyor. Sadece açıklayıcının altına düşemeyeceği belirli bir minimum seviye vardır ve Peter'ın seviyesi bu çubuğun altındadır.

Vasily, dediğin anda her şeyi anladım. Bu hatayı bulduğunuz için teşekkürler.

 
fxsaber :

Evet, gittin.

geldik...))

Ve neden böyle bir tepki?

 

Sorunu çözmek için kitaplıktan standart bir kapsayıcı seçildi - CArrayList.
Hemen hemen tüm kodlar, test için "uygun" bir arayüz sağlamak amacıyla bir sarmalayıcıdır. Dedikleri gibi tat ve renk ....

Çözümünüzü test etmek için şunlara ihtiyacınız vardır:
1. ITestRandomAccessCollection'dan miras alan ve gerekli yöntemleri uygulayan bir sınıf oluşturun. ( TestRandomAccessCollectionCARrayList'e benzer)
2. Test için belirli bir türdeki veriler kullanılır. Örnek int.
Seçilen veri türü için bir oluşturucu olduğundan ve CreateGenerator'a eklendiğinden emin olmanız gerekir ( IntGenerator'a benzer)
3. Birkaç çözüm için aynı veriler üzerinde bir test yapın ve sonuçları karşılaştırın (istenirse, ortalamayı almak için döngü de yapabilirsiniz):

{
     printf ( "TestRandomAccessCollectionAfterAdding: Started." , result);
     TestRandomAccessCollectionCArrayList< int > testCollection();
     result = TestRandomAccessCollectionAfterAdding(testCollection, 10000 , 1 );
     printf ( "TestRandomAccessCollectionAfterAdding: Fineshed. Total result: %I64i\n" , result);
}


Şu anda, test için bir işlevdir, benzetme yoluyla yenileri eklenebilir:

 template < typename T>
ulong TestRandomAccessCollectionAfterAdding(ITestRandomAccessCollection<T> &testCollection, const int iterationCount = 1000 , int srandValue = 0 )

Seçenekler:

testCollection - ITestRandomAccessCollection<T> uygulayan test için bir kap;
iterationCount - testteki yineleme döngülerinin sayısı;
srandValue - 0 rastgele örnek ise, jeneratörden gelen örnek üzerindeki etki.

 
Реter Konow :
1. Çözümünüzde bir sihirbaz bulmak ortalama kaç mikrosaniye sürer?

2. Çözümünüzü bir EA'ya entegre etmek (size göre) ne kadar kolay?


1. Anlamsız. Algoritmalar bir bütün olarak göreli sonuçlar üzerinde karşılaştırılır.
2. Çözüm zaten entegredir - bu, <Generic\ArrayList.mqh> standart kitaplığıdır .

 
Реter Konow :

Sihirbaz sayısının kullanıcı tarafından belirlendiğini zaten söylemiştim. Dize içindeki çarpışmaları önlemek için sihirbazlar için belirli bir sayısal aralık ayırmanız gerekir. Örneğin, 100.000'den 999.000'e kadar. O zaman sorun olmayacak.

Bu durumda, elbette, çözümü geliştirmek mümkündür. Bu sadece bir "prototip". Demo versiyonu.


Tatlım, istediğin çocuk oyuncağı. Öğrenciler bu problemleri çözer.

İnternette buna benzer onlarca görev var. Ve dize verilerini unutun.