Bu arada, resme bakılırsa, buradaki renk ayrışması tam değil. Sadece yarısı. Aralık, belirli bir rengin tüm tonları boyunca mutlak beyazdan mutlak siyaha kadar uzanmalıdır.
Evet haklısın.
Onu uygulamaya ve kodunuzu analiz etmeye ve görselleştirmeye çalıştım.
Beyaz çizgi ton çizgisidir (R+B+G renklerinin toplamı) - ideal olarak kesinlikle düz çapraz bir çizgi olmalıdır. Ben uyguladım, sen uygulamıyorsun.
Kırmızı, mavi ve yeşil çizgiler renk oranı çizgileridir. Bunlara spektrumun harmonikleri diyelim. İdeal olarak dikey olmalıdır. Ancak bu, başlangıçtaki maksimum renk 255 olduktan sonra yapılamaz. Ancak diğer yandan, bükülme noktalarının (kırmızı oklarla işaretlenmiş) olmayacağı, ancak düz bir yay olacağı bir duruma ulaşmak mümkündür. Ardından gradyan "kümeler" olmadan görünecektir. Bu sorun senin ve benim algoritmalarımda var. Bu düzeltilebilir, ancak noktayı henüz göremiyorum, bu yüzden zamana yazık. Pratikte, bir renkten diğerine geçişe ihtiyacım var. Bu, spektrumun kesinlikle dikey harmonikleri ile kolayca uygulanabilir (üstteki harmoniğin kabarması normaldir, çünkü bu yuvarlamanın bir sonucudur). Bu problemde, gradyan üçüncü renk üzerinden siyahtan beyaza gider, dolayısıyla bu bükülmeler mevcuttur.
Garip, MQL5'te yazdığınızdan emindim. Ama bir 4-ki programının kendisi olmasının yanında bir de 4-ki programlama stiliniz var. Algoritmanızı 5-ku'ya aktarmaya çalıştım ve hiçbir şey olmadı çünkü. genellikle bazı renkli şeritler çizer. Bu büyük olasılıkla değişkenlerin kapsamıyla ilgili karışıklıktan kaynaklanıyor, ancak kodun hata ayıklanamaması nedeniyle düzeltmek son derece zor ve elimi salladım. Programlama tarzınıza alışkın olduğunuzu anlıyorum ve tarzım sizin için net değil. Karşılıklı çünkü Programı kitap gibi okumaya değil, programın yapısını görmeye alışkınım. Ve siz, bir değişken tanımının hangi noktasında hata ayıklama ve anlama imkansızlığının yanı sıra, uzun değişken isimleri program metninin %90'ını dolduruyor, bunun sonucunda program yapısı kayboluyor, bu uzun barbie renginde çözülüyor. değişken isimleri Genel olarak, şahsen benim için kodunuz bir tür sadomaso olarak algılanıyor.
Ayrıca algoritmanız on kat daha yavaş çıktı ve bunun nedeniMQL4 bile değil. Bir türlü çözemedim. Sadece RGBolduğunda hangi teğetler, hangi üçgenler?
Ve birliğehakim olmaya çalış- çok faydalı bir şey.
Neden bahsettiğimi daha iyi anlamak için, hem sizin algoritmanızla (MQL4) hem de benimkiyle (MQL5) eklediğim komut dosyalarını çalıştırmaya değer.
Bunun gibi vakalarınız da var:
Henüz anlamadım, bu MT4 yavaşlığı sorunu ve algoritmanızın hatası.
1. Nikolay, getirdiğiniz ilk iki resmi karşılaştırsanız bile, sürümünüzün üzerinde gri bir sis asılı olduğunu hemen görebilirsiniz. Dikkatli bak. Ve benim versiyonumda renk çok daha parlak. Sürümünüzün rengi daha iyi aktardığını düşünüyor musunuz?
2. Standart için Windows renk paletini aldım. %99 renk uyumu sağladım. Renklerinizi Windows renkleriyle eşleşip eşleşmediğini kontrol edin. Benim yaptığım gibi gölgeli bir dizi yazdırın. Ardından grafik özelliklerini ve paletini açın. Orijinal rengin bileşenlerinin değerlerini kutulara girin ve ardından kaydırıcıyı yukarı ve aşağı hareket ettirin. Rakamlar değişecek. Çıktınızda bu sayıları arar ve nasıl eşleştiğini görürsünüz.
3. Özel uygulamanın değişebileceğini anlıyorum. Algoritmamı özellikle hız için kontrol etmedim ve hız uğruna optimize etmedim. Belki de çözümünüz daha fazla hız sağlar. inkar etmeyeceğim.
4. Optikte prizma kavramı vardır. Işığın kırılmaları. Bu tam olarak başladığım paradigma. 256*256 (0'dan 255'e kadar) çizdim. Daha sonra hatları kurdum. Rengin kırılma eksenini buldu. Grafiğin ortasındadır. Her bileşen, iki segmentten oluşan bir eğridir. Toplamda, rengin, her biri grafiğin merkezinde kırılan ve iki bölüme ayrılan üç eğri çizgisi vardır. Her segmentin kendi açısı vardır. Orijinal rengin grafikte bir koordinatı vardır. Gölgeleri arasında bulunabilir. Benim görevim orijinal rengi bulmak, altı parçanın hepsinin açılarını belirlemek ve çizgisi boyunca her bileşenin değerlerini almaktı.
5. Teğetler, bitişik bacakların karşıtlara oranlarıdır. Segmentlerin açılarını hesaplamak ve karşıt ayakların yüksekliğini hesaplamak için gereklidir (belirli bir renk tonunda bileşenin değeridir).
6. Programlama stillerine gelince, bunu tartışmamanızı öneririm. Konu ile alakası yok.
7. Olaylara gelince - belki de öyledir. Ama şimdiye kadar yakalanmadım. Bu nedenle, bilmiyorum.
Bu arada, bize sürümünüzde renk ayrıştırmasının nasıl çalıştığını söyleyin. tam olarak anlamadım.
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
Henüz çözemedim, bu MT4'teki yavaşlık sorunu ve algoritmanızın hatası.
Algoritmaların hızındaki fark hakkında:
1. Sizin algoritmanız uint dizisini, benimki ise dizi dizisini dolduruyor. (Gerekli bileşenleri gölgeden kolayca izole etmek ve onlarla çalışmak için tam olarak ipe ihtiyacım var). Aşağıdaki komut dosyasından her iki dizi türünü de doldurma hızındaki farkı görebilirsiniz.
2. Algoritmanız MT5'te, benimki ise MT4'te çalışıyor. Bu platformlarda dizi doldurma hızındaki fark benim tarafımdan burada tartışıldı - https://www.mql5.com/ru/forum/222333 . Aşağıdaki komut dosyasından farkı kendiniz göreceksiniz. Her iki platforma da koyun ve karşılaştırın.
//+------------------------------------------------------------------+//| Проверка скорости заполнения массивов.mq5 |//| Peter Konow |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Peter Konow"#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//+------------------------------------------------------------------+int int_Array[ 30000 ];
string string_Array[ 30000 ];
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
ulong t1 = GetMicrosecondCount ();
//--------------------------for ( int b1 = 0 ; b1 < 30000 ; b1++)int_Array[b1] = 1 ;
//--------------------------ulong t2 = GetMicrosecondCount ();
//--------------------------int q = int_Array[ 0 ] + int_Array[ 1 ]; //Этот код нужен, иначе компилятор не заполняет массив.//--------------------------Print ( "//----------------------------------------------------------------------------------" );
Print ( " Время заполнения массива int: " ,t2-t1);
ulong t3 = GetMicrosecondCount ();
//--------------------------for ( int b2 = 0 ; b2 < 30000 ; b2++)string_Array[b2] = "1" ;
//--------------------------ulong t4 = GetMicrosecondCount ();
//--------------------------int q2 = int_Array[ 0 ] + int_Array[ 1 ]; //Этот код нужен, иначе компилятор не заполняет массив.//--------------------------Print ( " Время заполнения массива string: " ,t4-t3);
Print ( "//----------------------------------------------------------------------------------" );
Alert (q + q2); //Этот код нужен, иначе компилятор не заполняет массив.
}
//+------------------------------------------------------------------+
MT4 ve MT5 platformlarında (ms) 30 bin hücre int ve string dizilerinin dolum hızının ölçülmesinin sonuçları:
MT5
2018.10 . 1113 : 29 : 24.502 Замер скорости заполнения массивов (RTS- 12.18 ,H1) Время заполнения массива string : 4642018.10 . 1113 : 29 : 24.502 Замер скорости заполнения массивов (RTS- 12.18 ,H1) Время заполнения массива int : 14
MT4
2018.10 . 1113 : 30 : 39.199 Замер скорости заполнения массивов GBPUSD,M30: Время заполнения массива string : 6922018.10 . 1113 : 30 : 39.199 Замер скорости заполнения массивов GBPUSD,M30: Время заполнения массива int : 363
Gördüğünüz gibi, algoritmam iki nedenden dolayı daha yavaş:
Diziyi bir uint ile değil bir dize ile doldurur.
Yalnızca MT4'te kontrol ettiniz. Platformlar arasında dizi doldurma hızı onlarca kez değişebilir.
Not Ek olarak, algoritmam orijinal rengin bulunduğu dizi hücresinin numarasını döndürebilir. Bu, degradeyi oluşturmaya yardımcı olur. Sonuçta, hangi hücreden sola veya sağa hareket edeceğinizi bilmeniz gerekir.
1. Sizin algoritmanız uint dizisini, benimki ise dizi dizisini dolduruyor. (Gerekli bileşenleri gölgeden kolayca izole etmek ve onlarla çalışmak için tam olarak ipe ihtiyacım var). Aşağıdaki komut dosyasından her iki dizi türünü de doldurma hızındaki farkı görebilirsiniz.
2. Algoritmanız MT5'te, benimki ise MT4'te çalışıyor. Bu platformlarda dizi doldurma hızındaki fark benim tarafımdan burada tartışıldı - https://www.mql5.com/ru/forum/222333 . Aşağıdaki komut dosyasından farkı kendiniz göreceksiniz. Her iki platforma da koyun ve karşılaştırın.
MT4 ve MT5 platformlarında (ms) 30 bin hücre int ve string dizilerinin dolum hızının ölçülmesinin sonuçları:
Gördüğünüz gibi, algoritmam iki nedenden dolayı daha yavaş:
Diziyi bir uint ile değil bir dize ile doldurur.
Yalnızca MT4'te kontrol ettiniz. Dizileri platformlar arasında doldurma hızı onlarca kez değişebilir.
Not Ek olarak, algoritmam orijinal rengin bulunduğu dizi hücresinin numarasını döndürebilir. Bu, degradeyi oluşturmaya yardımcı olur. Sonuçta, hangi hücreden sola veya sağa hareket edeceğinizi bilmeniz gerekir.
Algoritmanızdan dizeleri kaldırdım. Onları neden kullandığın benim için bir gizemdi. Koda bakın, daha sonra gerçek rengi nasıl gösterirdim. Çok gereksiz kontrolleriniz var, teğet, dizi sıralama gibi işlevleri kullanıyorsunuz, ben sadece +-*/ kullanıyorum. Mt4 daha yavaş, bu anlaşılabilir, ancak 30 kat değil.
Pekala, biraz sonra algoritmamı 4'e koyacağım ve göreceğim. Neden 4 kullanıyorsun? Grafiksel bir arayüz için 4 hiç uygun değildir. Kaynakları bile okumuyor. Kodu 4'ten 5'e yeniden yapmak, tersinden çok daha zordur.
Eh, İngilizce isimler bir sebepten dolayı icat edildi.
Rus isimleri kodunuzu öldürdüğünde size başka bir örnek verebilirim:
Kodu, Kiril alfabesi olmayan bir müşteriye aktarıyorsunuz. Herşey. .... her şey kaybolur ..... :-)
Müşterinin koda mı yoksa çözüme mi ihtiyacı var?
Müşterinin koda mı yoksa çözüme mi ihtiyacı var?
bu yüzden amaca ve son kullanıcılara karar vermelisiniz.
Kendinizi kullanıcının yerine koyun ve yaptığınız her şeyi unutun: kullanıcı nasıl hissedecek?
her şeyi anlayacak mı?
bu yüzden amaca ve son kullanıcılara karar vermelisiniz.
Kendinizi kullanıcının yerine koyun ve yaptığınız her şeyi unutun: kullanıcı nasıl hissedecek?
her şeyi anlayacak mı?
Kabul ediyorum. İki dilde yazıyorum. Akıcı İngilizce konuşabiliyorum.
İngilizce konuşan biri olarak kararımı görmezden gelmekte özgürsün. Birkaç İngilizce kelime var.
Bu arada, İngilizce koduna çok aşina olduğunuz için Nikolai Semko tarafından önerilen kodu ayrıştırmama yardım edin:
Dürüst olmak gerekirse, nasıl çalıştığını anlamıyorum. Birçok kısa İngilizce hece var. Sadece sevdiğin şey.
İşin gerçeği şu ki, İngilizce'nin yaklaşık %30'unu biliyorum ve sadece teknik ama konuşma değil.
Programlamada sadece bir iki düzine kelime vardır ve bunları kelimenin tam anlamıyla 1-2 program yazarak hatırlayabilirsiniz.
PS Gönderdiğiniz kod, sadece 5 değişken var, bunlarla nasıl başa çıkamazsınız?
İşin gerçeği şu ki, İngilizce'nin yaklaşık %30'unu biliyorum ve sadece teknik ama konuşma değil.
Programlamada sadece bir iki düzine kelime vardır ve bunları kelimenin tam anlamıyla 1-2 program yazarak hatırlayabilirsiniz.
PS Gönderdiğiniz kod, sadece 5 değişken var, bunlarla nasıl başa çıkamazsınız?
Kodumda 30 değişken saydım (ana fonksiyonda). Ne kadar zamandır düşünüyorsun? (şaka).
%30 teknik İngilizce çok güçlüdür. Teknik İngilizcenin ne kadar zengin olduğunu biliyor musunuz?
Programlamada birkaç düzine kelime mi? Şimdi birbirimizi neden anlamadığımız açık.))
not Nikolai'nin kodunu kastediyorsanız, nasıl çalıştığını aydınlatın.
Bu arada, resme bakılırsa, buradaki renk ayrışması tam değil. Sadece yarısı. Aralık, belirli bir rengin tüm tonları boyunca mutlak beyazdan mutlak siyaha kadar uzanmalıdır.
Evet haklısın.
Onu uygulamaya ve kodunuzu analiz etmeye ve görselleştirmeye çalıştım.
Oradan şu çıktı:
senin seçeneğin
benim versiyonum:
Açıklamama izin ver:
Beyaz çizgi ton çizgisidir (R+B+G renklerinin toplamı) - ideal olarak kesinlikle düz çapraz bir çizgi olmalıdır. Ben uyguladım, sen uygulamıyorsun.
Kırmızı, mavi ve yeşil çizgiler renk oranı çizgileridir. Bunlara spektrumun harmonikleri diyelim. İdeal olarak dikey olmalıdır. Ancak bu, başlangıçtaki maksimum renk 255 olduktan sonra yapılamaz. Ancak diğer yandan, bükülme noktalarının (kırmızı oklarla işaretlenmiş) olmayacağı, ancak düz bir yay olacağı bir duruma ulaşmak mümkündür. Ardından gradyan "kümeler" olmadan görünecektir. Bu sorun senin ve benim algoritmalarımda var. Bu düzeltilebilir, ancak noktayı henüz göremiyorum, bu yüzden zamana yazık. Pratikte, bir renkten diğerine geçişe ihtiyacım var. Bu, spektrumun kesinlikle dikey harmonikleri ile kolayca uygulanabilir (üstteki harmoniğin kabarması normaldir, çünkü bu yuvarlamanın bir sonucudur). Bu problemde, gradyan üçüncü renk üzerinden siyahtan beyaza gider, dolayısıyla bu bükülmeler mevcuttur.
Garip, MQL5'te yazdığınızdan emindim. Ama bir 4-ki programının kendisi olmasının yanında bir de 4-ki programlama stiliniz var. Algoritmanızı 5-ku'ya aktarmaya çalıştım ve hiçbir şey olmadı çünkü. genellikle bazı renkli şeritler çizer. Bu büyük olasılıkla değişkenlerin kapsamıyla ilgili karışıklıktan kaynaklanıyor, ancak kodun hata ayıklanamaması nedeniyle düzeltmek son derece zor ve elimi salladım. Programlama tarzınıza alışkın olduğunuzu anlıyorum ve tarzım sizin için net değil. Karşılıklı çünkü Programı kitap gibi okumaya değil, programın yapısını görmeye alışkınım. Ve siz, bir değişken tanımının hangi noktasında hata ayıklama ve anlama imkansızlığının yanı sıra, uzun değişken isimleri program metninin %90'ını dolduruyor, bunun sonucunda program yapısı kayboluyor, bu uzun barbie renginde çözülüyor. değişken isimleri Genel olarak, şahsen benim için kodunuz bir tür sadomaso olarak algılanıyor.
Ayrıca algoritmanız on kat daha yavaş çıktı ve bunun nedeni MQL 4 bile değil. Bir türlü çözemedim. Sadece RGB olduğunda hangi teğetler, hangi üçgenler ?
Ve birliğe hakim olmaya çalış - çok faydalı bir şey.
Neden bahsettiğimi daha iyi anlamak için, hem sizin algoritmanızla (MQL4) hem de benimkiyle (MQL5) eklediğim komut dosyalarını çalıştırmaya değer.
Bunun gibi vakalarınız da var:
Henüz anlamadım, bu MT4 yavaşlığı sorunu ve algoritmanızın hatası.
1. Nikolay, getirdiğiniz ilk iki resmi karşılaştırsanız bile, sürümünüzün üzerinde gri bir sis asılı olduğunu hemen görebilirsiniz. Dikkatli bak. Ve benim versiyonumda renk çok daha parlak. Sürümünüzün rengi daha iyi aktardığını düşünüyor musunuz?
2. Standart için Windows renk paletini aldım. %99 renk uyumu sağladım. Renklerinizi Windows renkleriyle eşleşip eşleşmediğini kontrol edin. Benim yaptığım gibi gölgeli bir dizi yazdırın. Ardından grafik özelliklerini ve paletini açın. Orijinal rengin bileşenlerinin değerlerini kutulara girin ve ardından kaydırıcıyı yukarı ve aşağı hareket ettirin. Rakamlar değişecek. Çıktınızda bu sayıları arar ve nasıl eşleştiğini görürsünüz.
3. Özel uygulamanın değişebileceğini anlıyorum. Algoritmamı özellikle hız için kontrol etmedim ve hız uğruna optimize etmedim. Belki de çözümünüz daha fazla hız sağlar. inkar etmeyeceğim.
4. Optikte prizma kavramı vardır. Işığın kırılmaları. Bu tam olarak başladığım paradigma. 256*256 (0'dan 255'e kadar) çizdim. Daha sonra hatları kurdum. Rengin kırılma eksenini buldu. Grafiğin ortasındadır. Her bileşen, iki segmentten oluşan bir eğridir. Toplamda, rengin, her biri grafiğin merkezinde kırılan ve iki bölüme ayrılan üç eğri çizgisi vardır. Her segmentin kendi açısı vardır. Orijinal rengin grafikte bir koordinatı vardır. Gölgeleri arasında bulunabilir. Benim görevim orijinal rengi bulmak, altı parçanın hepsinin açılarını belirlemek ve çizgisi boyunca her bileşenin değerlerini almaktı.
5. Teğetler, bitişik bacakların karşıtlara oranlarıdır. Segmentlerin açılarını hesaplamak ve karşıt ayakların yüksekliğini hesaplamak için gereklidir (belirli bir renk tonunda bileşenin değeridir).
6. Programlama stillerine gelince, bunu tartışmamanızı öneririm. Konu ile alakası yok.
7. Olaylara gelince - belki de öyledir. Ama şimdiye kadar yakalanmadım. Bu nedenle, bilmiyorum.
Bu arada, bize sürümünüzde renk ayrıştırmasının nasıl çalıştığını söyleyin. tam olarak anlamadım.
Henüz çözemedim, bu MT4'teki yavaşlık sorunu ve algoritmanızın hatası.
Algoritmaların hızındaki fark hakkında:
1. Sizin algoritmanız uint dizisini, benimki ise dizi dizisini dolduruyor. (Gerekli bileşenleri gölgeden kolayca izole etmek ve onlarla çalışmak için tam olarak ipe ihtiyacım var). Aşağıdaki komut dosyasından her iki dizi türünü de doldurma hızındaki farkı görebilirsiniz.
2. Algoritmanız MT5'te, benimki ise MT4'te çalışıyor. Bu platformlarda dizi doldurma hızındaki fark benim tarafımdan burada tartışıldı - https://www.mql5.com/ru/forum/222333 . Aşağıdaki komut dosyasından farkı kendiniz göreceksiniz. Her iki platforma da koyun ve karşılaştırın.
MT4 ve MT5 platformlarında (ms) 30 bin hücre int ve string dizilerinin dolum hızının ölçülmesinin sonuçları:
Gördüğünüz gibi, algoritmam iki nedenden dolayı daha yavaş:
Algoritmaların hızındaki fark hakkında:
1. Sizin algoritmanız uint dizisini, benimki ise dizi dizisini dolduruyor. (Gerekli bileşenleri gölgeden kolayca izole etmek ve onlarla çalışmak için tam olarak ipe ihtiyacım var). Aşağıdaki komut dosyasından her iki dizi türünü de doldurma hızındaki farkı görebilirsiniz.
2. Algoritmanız MT5'te, benimki ise MT4'te çalışıyor. Bu platformlarda dizi doldurma hızındaki fark benim tarafımdan burada tartışıldı - https://www.mql5.com/ru/forum/222333 . Aşağıdaki komut dosyasından farkı kendiniz göreceksiniz. Her iki platforma da koyun ve karşılaştırın.
MT4 ve MT5 platformlarında (ms) 30 bin hücre int ve string dizilerinin dolum hızının ölçülmesinin sonuçları:
Gördüğünüz gibi, algoritmam iki nedenden dolayı daha yavaş: