MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1032

 

Ccanvas nesnesini çoğaltmak mümkün mü?


Ccanvas kullanarak bir nesne oluşturuyorum, süreçte kopyalar oluşturulmalı. Bazen 10-20, bazen 100-200.

Nesne doğru bir şekilde çizildiğinde. Bunu çoğaltmanın bir yolu var mı?

 
Sergey Likho :

Bir Ccanvas nesnesini çoğaltmak mümkün mü?


Ccanvas kullanarak bir nesne oluşturuyorum, süreçte kopyalar oluşturulmalı. Bazen 10-20, bazen 100-200.

Nesne doğru bir şekilde çizildiğinde. Bunu çoğaltmanın bir yolu var mı?

CCanvas *canv = yeni CCanvas
Ancak bu, mevcut olanın bir kopyası değildir. Bu, yenisinin yaratılması ve ona bir işarettir.
 
Artyom Trishkin :
CCanvas *canv = yeni CCanvad

Grafik nesnesini kastetmiştim.

   CCanvas obj;
   obj.CreateBitmapLabel( 0 , 1 ,name,x,y,x_size,y_size, COLOR_FORMAT_ARGB_NORMALIZE );
   obj.FillRectangle( 0 , 0 ,x_size,y_size, ColorToARGB (Color,Alpha));
   obj.Update( false );


Как сделать 10 копий с измененными координатами?
 
Sergey Likho :

Grafik nesnesini kastetmiştim.

Gösterdim. Kaç tane nesne oluşturulacağı önceden bilinmiyorsa, o zaman yalnızca yeni yoluyla.
Miktar biliniyorsa, o zaman
obj1, obj2, obj3,...,objN
 
Igor Makanu :

Yanılıyor olabilirim, ancak bağlantınız yazarın konusu olacak, ancak tüm konuyu gözden geçirmeniz gerekiyor, Igor hemen bazı ham kodlar ortaya koymuş ve sonra bazen ince ayar yapılması gerekenleri yeniden yazmış gibi görünüyor, ancak yine de yapabilirim. yanılıyorsun - bu konuyu 5-6 yıl önce açmıştım artık hatırlamıyorum

yanılma. Son zamanlarda yazarın tüm konusunu tamamen çevirdi. Yaklaşık 2-3 gün sürdü. Yazarın konusuna gelince, yazının reçetesi göz önüne alındığında, bazı işlevleri artık alakalı değil (ya da bana öyle geliyordu) Hem son derece alakalı hem de çok az alakalı olan her şeyi kesinlikle okumalısınız. Ve fark ettiğiniz gibi, 2-3 veya daha fazla sayfadan sonra, katılımcılardan biri işlevini kullanmaya karar verdiğinde, bir hata bulduğunda ve veya düzelttiğinde ve sadece bir hata olduğunu söylediğinde veya sadece işaret ettiğinde ortaya çıkan hatalar vardı. dışarı. Bu nedenle, 10 sayfa sonra bile aynı işlev tekrar görünebilir, düzeltildi veya değiştirildi (zaman geçti ve onu geliştirmek istedi).

Bu nedenle, tüm konudan biri yalnızca en önemli ve alakalı olanı çıkarırsa, yalnızca teşekkür edebilir ve çok zaman kazanabilirsiniz.

 
Bir işlev işaretçisi bir işleve nasıl geçirilir (yani bir işlev işaretçisini argüman olarak alan bir işlev yazılır) parametre olarak? Bunu mql4'te zaten yaptım, bu da mümkün, ancak bu örneğin bulunduğu dosyanın bir kopyasını kaybettim.
 
Seric29 :
Bir işlev işaretçisi bir işleve nasıl geçirilir (yani bir işlev işaretçisini argüman olarak alan bir işlev yazılır) parametre olarak? Bunu mql4'te zaten yaptım, bu da mümkün, ancak bu örneğin bulunduğu dosyanın bir kopyasını kaybettim.

MQL bir zamanlar işlevlere yönelik işaretçileri destekledi mi? Öyle görünmüyor. Çözümlerden biri, işlevi bir sınıfa sarmak ve nesneye bir işaretçi iletmektir.

 
Sergey Popov :

Merhaba!

İşlemin başlamasından sonraki ilk 2 saat içinde işlem yapmayı yasaklayan danışmana bir fonksiyon yazmak istiyorum.

Ancak iTime(Symbol(),1440, 0) öğesinin günlük mumun açılış saatini doğru şekilde döndürmediği gerçeğiyle karşılaştım.

Daha spesifik olarak, 12/26/2019'da piyasa 06:00:00'da açılırken, iTime 00:00:00'ı tanımlar.

Günün açılış saatini tam olarak nasıl hesaplayabilirim?

SymbolInfoSessionTrade, işlem süresini öğrenmenize yardımcı olacaktır. Sadece Noel ve diğer tatillerdeki değişiklikleri yansıtıp yansıtmadığını bilmiyorum.

 
Aleksey Mavrin :

MQL bir zamanlar işlevlere yönelik işaretçileri destekledi mi? Öyle görünmüyor. Çözümlerden biri, işlevi bir sınıfa sarmak ve nesneye bir işaretçi iletmektir.

destekler. Bu, typedif belirteci ile yapılır, yardımı okuyun, yalnızca şema c++'dan farklıdır. Bir kişinin bu kodu yazdığı bir forum buldum ama dosyayı kaydetmedim ve sistemi yeniden başlattım, tabii ki dosya silinmiş. Ancak yardım basit bir örnek gösteriyor ve tam olarak sorduğum örnekle ilgili bir örneğim vardı.

 
Aleksey Mavrin :

MQL bir zamanlar işlevlere yönelik işaretçileri destekledi mi? Öyle görünmüyor. Çözümlerden biri, işlevi bir sınıfa sarmak ve nesneye bir işaretçi iletmektir.

yapabilirsiniz, çoğaltmak için kod:

 #property copyright "Copyright 2019, IgorM"
#property link        "https://www.mql5.com/ru/users/igorm"
#property version    "1.00"
#property strict
typedef void (*TFuncvoidPTR)( void );
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   TFuncvoidPTR f_ptr[ 3 ];
   f_ptr[ 0 ] = f_1;
   f_ptr[ 1 ] = f_2;
   f_ptr[ 2 ] = f_3;
   for ( int i= 0 ;i< ArraySize (f_ptr);i++)
   {
       printf ( "Вызываю фунцию № %i " ,i);
      f_ptr[i]();
   }

}
//+------------------------------------------------------------------+
void f_1() { Print ( "Это вызов функции : " , __FUNCTION__ );}
void f_2() { Print ( "Это вызов функции : " , __FUNCTION__ );}
void f_3() { Print ( "Это вызов функции : " , __FUNCTION__ );}

2019.12.30 18:30:55.518 Komut dosyası tst EURUSD,H1: kaldırıldı

2019.12.30 18:30:55.511 tst EURUSD,H1: uninit neden 0

2019.12.30 18:30:55.511 tst EURUSD,H1: Bubir işlev çağrısıdır : f_3

2019.12.30 18:30:55.511 tst EURUSD,H1: Çağrı fonksiyonu #2

2019.12.30 18:30:55.511 tst EURUSD,H1: Bu bir işlev çağrısıdır: f_2

2019.12.30 18:30:55.511 tst EURUSD,H1: Çağrı fonksiyonu #1

2019.12.30 18:30:55.511 tst EURUSD,H1: Bu bir işlev çağrısıdır: f_1

2019.12.30 18:30:55.511 tst EURUSD,H1: Çağrı fonksiyonu #0

2019.12.30 18:30:55.511 tst EURUSD,H1: başlatıldı

2019.12.30 18:30:55.496 Komut dosyası tst EURUSD,H1: başarıyla yüklendi