Sorunu çözmeyi öneriyorum:
- Her çağrıda, koşullu bir " sihir " olacak bir sözde rasgele sayı alacak ve yazacak bir işlev yazın.
2. Birinci işlevi sözde rasgele sayıda çağıracak ve (oluşturulan) koşullu "sihri" ona iletecek ikinci bir işlev yazın.
3. Kullanıcının ilettiği " işlem " numarasından (herhangi bir seri numarasından) " sihirli " sayıyı döndürecek üçüncü bir fonksiyon yazın.
Gereksinimler:
- Büyüleri kaydetmek için bellek tüketimi, sayısı önceden bilinmeyen büyülerin sayısına mümkün olduğunca yakın olmalıdır.
- Fonksiyonlar hızlı çalışmalıdır.
//------------------------------------------------ --------
Tartışılan kitaplığın bu sorunu çözmek için bir araç takımı olduğunu düşünüyorum.
not. Her üç işlev de, sayısı önceden bilinmeyen Expert Advisor siparişleriyle çalışmayı taklit eder. Bu nedenle, sorun bizim konumuza uymaktadır.
Sorunu çözmeyi öneriyorum:
- Her çağrıda, koşullu bir " sihir " olacak bir sözde rasgele sayı alacak ve yazacak bir işlev yazın.
2. Birinci işlevi sözde rasgele sayıda çağıracak ve (oluşturulan) koşullu "sihri" ona iletecek ikinci bir işlev yazın.
3. Kullanıcının ilettiği " işlem " numarasından (herhangi bir seri numarasından) " sihirli " sayıyı döndürecek üçüncü bir fonksiyon yazın.
Gereksinimler:
- Büyüleri kaydetmek için bellek tüketimi, sayısı önceden bilinmeyen büyülerin sayısına mümkün olduğunca yakın olmalıdır.
- Fonksiyonlar hızlı çalışmalıdır.
Tartışılan kitaplığın bu sorunu çözmek için bir araç takımı olduğunu düşünüyorum.
not. Her üç işlev de, sayısı önceden bilinmeyen Expert Advisor siparişleriyle çalışmayı taklit eder. Bu nedenle, sorun bizim konumuza uymaktadır.
Peter, herhangi bir işlevin bir faydası olması gerektiğini düşünüyorum. Bu üç işlevden herhangi birinin getirdiği olumlu etkiyi tam olarak anlamıyorum?
Peter, herhangi bir işlevin bir faydası olması gerektiğini düşünüyorum. Bu üç işlevden herhangi birinin getirdiği olumlu etkiyi tam olarak anlamıyorum?
Bu konunun bir dalı https://www.mql5.com/ru/forum/221917
Burada, kütüphane tarafından önerilen çözümlerin etkinliğini pratikte kontrol ediyoruz.
Bu iş parçacığında, sihirli emirleri bir dizgeye yazmanın ve sonra bunları bir diziye koymanın çözümünün verimsiz olduğu tartışıldı.
Bu sorunun çözümü de yeni Generic kitaplığında.
Bir dizgeye yazmanın verimsiz bir çözüm olduğu iddiasını doğrulamak veya çürütmek ilginçtir.
Uygulamanın ne göstereceğini bilmenin faydalı ve ilginç olacağını düşünüyorum.
İsteyen herkes bu sorunu kütüphane araçlarını kullanarak çözmeyi deneyebilir.
Bu sorunu kendi yöntemimle çözmeye çalışacağım.
Sonra performansı karşılaştırırız.
- 2017.12.07
- www.mql5.com
Peter Konow , eğer bir şey organize ediyorsanız, lütfen bunu iyi bir seviyede yapın ve kendiliğinden ve arka arkaya değil.....geri çekilin.
Terimler açık, net ve belirli örneklerle belirtilmelidir....
İşte ilk paragrafın tamamının dikkatli bir şekilde okunmasından kaynaklanan soruların bir listesi.
- Написать функцию, которая на каждом обращении будет принимать и записывать некоторое псевдо-случайное число, которое будет условным " меджиком ".
1) Anlamsal bir yük taşımayan metni neden kalın harflerle vurgulamalısınız?
2) İşaretçi almak zaten bir işleve "başvuru" mu, yoksa henüz değil mi? Fonksiyon çağrılır.
3) "Numara yaz" terimi genellikle dosyalarla çalışırken kullanılır. Bu bir yanlışlık mı ve bellekteki verilerle mi çalışmakla ilgili, yoksa program açılışları arasında veri kaydetmek hala gerekli mi?
4) İstenirse, sözde rastgele sayı negatif olabilir, ancak büyü olamaz. Peki elimizde ne var: belirli bir aralıkta sihir mi yoksa sözde rastgele mi? Ne?
Peter Konow , eğer bir şey organize ediyorsanız, lütfen bunu iyi bir seviyede yapın ve kendiliğinden ve arka arkaya değil.....geri çekilin.
Terimler açık, net ve belirli örneklerle belirtilmelidir....
İşte ilk paragrafın tamamının dikkatli bir şekilde okunmasından kaynaklanan soruların bir listesi.
1) Anlamsal bir yük taşımayan metni neden kalın harflerle vurgulamalısınız?
2) İşaretçi almak zaten bir işleve "başvuru" mu, yoksa henüz değil mi? Fonksiyon çağrılır.
3) "Numara yaz" terimi genellikle dosyalarla çalışırken kullanılır. Bu bir yanlışlık mı ve bellekteki verilerle mi çalışmakla ilgili, yoksa program açılışları arasında veri kaydetmek hala gerekli mi?
4) İstenirse, sözde rastgele sayı negatif olabilir, ancak büyü olamaz. Peki elimizde ne var: belirli bir aralıkta sihir mi yoksa sözde rastgele mi? Ne?
Ana görev:
Anlaşma numarası aracılığıyla belirli bir sihire hızlı erişim uygulayın .
Sihirleri "sözlük"e yazmak ve işlem numarası üzerinden bunlara ulaşmak gerekir.
Önceden sipariş sayısı bilinmiyor, dolayısıyla sözlüğün boyutu bilinmiyor.
Ancak, erişim hızlı olmalı ve ayrılan bellek miktarı kabul edilebilir olmalıdır.
Önerdiğim görev, siparişleri veren ve daha sonra onlarla daha fazla çalışmak için sihirlerini anlaşma numarasına göre alan bir danışmanın çalışmasını simüle etmeyi amaçlıyor.
Sorunu sizin için uygun olan herhangi bir şekilde çözebilirsiniz.
Sihirbazın belirli sayısı önemli değil. Herhangi bir sayı olabilir. Bu sadece bir taklit.
Katma:
Yukarıda " Anlaşma numarası aracılığıyla belirli bir sihire hızlı erişim uygulayın. " düzeltildi.
Üç sihirli sayı eklersek: 10, 11, 12
O zaman anlaşma numaraları nedir? 0, 1, 2?
Üç sihirli sayı eklersek: 10, 11, 12
O zaman anlaşma numaraları nedir? 0, 1, 2?
Başka bir başlıktaki bilgili kişiler, bir ipe sihir yazıp onları ipten çabucak "bulmak" için etkili bir çözüm üretmenin imkansız olduğunu söylediler.
Ancak, benim görüşüme göre, gelecekteki siparişlerin sayısı bilinmiyorsa, o zaman tek iyi çözüm, büyüleri bir dizeye yazmak olacaktır.
Hız kaybı olmayacağını belirttim.
İşte pratik kanıt:
//+------------------------------------------------------------------+ //| Magic.mq5 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ string All_magics; int order_number; int Random_orders_of_strategy; //+------------------------------------------------------------------+ void Save_magic( int magic) { order_number++; //--------------------------------- //Записываем каждый магик вместе с порядковым номером ордера. //--------------------------------- All_magics += "_" + ( string )order_number + "_" + ( string )magic; //--------------------------------- } //+------------------------------------------------------------------+ void Trading() { Random_orders_of_strategy = MathRand (); //---------------------------------------- //Имитируем открытие неопределенного количества ордеров стратегии. //---------------------------------------- for ( int a1 = 0 ; a1 < Random_orders_of_strategy; a1++) { int this_magic = MathRand (); //---------------------------- Save_magic(this_magic); //---------------------------- } //---------------------------------------- } //+------------------------------------------------------------------+ int Get_magic( int deal_number) { //-------------------------------------------- //Получаем начало строки магика. //-------------------------------------------- int Magic_position_start = StringFind (All_magics, "_" + ( string )deal_number + "_" , 0 ) + 3 ; //-------------------------------------------- //Получаем конец строки магика. //-------------------------------------------- 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 () { Trading(); //-------------------------- ulong t1 = GetMicrosecondCount (); Get_magic( 1 ); ulong t2 = GetMicrosecondCount (); //-------------------------- Print ( "Время исполнения функции Get_magic() при количестве ордеров " ,Random_orders_of_strategy, " равно " ,t2 - t1); //-------------------------- Print ( "Random_orders_of_strategy " ,Random_orders_of_strategy); Print ( "magic 1: " ,Get_magic( 1 ), " magic 2: " ,Get_magic( 2 ), " magic 3: " ,Get_magic( 3 )); } //+------------------------------------------------------------------+
Belki birisi çözümümü faydalı bulur ...
(Kod, 15 mikrosaniyede 24.000'den fazla sihirbaz arasından doğru sihirbazı bulur!)
(Ayrıca, tek bir baytlık fazladan bellek boşa harcanmaz.)
Üç sihirli sayı eklersek: 10, 11, 12
O zaman anlaşma numaraları nedir? 0, 1, 2?
Konuyla ilgili böyle ilginç bir soru:
Örneğin, bir sonraki siparişin bir sonraki partisinin farklı çiftler için halihazırda açılmış sonuçlara dayandığı bir çoklu para birimi danışmanı vardır.
sipariş açma koşulu - açılma sinyali varsa, toplam lot 0.1'den fazla değil ve toplam düşüş depozitonun %101'inden fazla değil
birinci seçenek: tüm verileri bir diziye koyun ve bir sonrakini açmak için istek olarak çıkarın (her tikte yeni siparişler açmayalım)
ikinci seçenek - bir sonraki siparişin açılmasını talep ederken her seferinde kontrol etmek için, tümü mevcut zamanda tüm çiftler için mevcuttur
hangi çözüm daha hızlı ve daha ucuz olacak
Teneke)
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Bu başlıkta, belirli sorunları çözmenin farklı yollarını tartışacağız, önerilen çözümlerin performansını karşılaştıracağız.
Herkes sorunları ve bunları çözme yöntemlerini tartışabilir;)