MQL5'te OOP hakkında sorular - sayfa 42

 
Igor Makanu :

...

aramaların tümü özel yöntemlerdedir, ancak bir "jedi hilesi var mı?" CheckPointer(m_order)==POINTER_INVALID'den kaynak metinde kaçmak için

...

Burada, daha ziyade, nokta alımda değil, algoritma öyle olmalıdır ki, herhangi bir sipariş yoksa kodun bu kısmı yürütülmeyecektir.

Ya da belki de öyle olması gerekiyordu. Ancak bir işaretçi varsa, bu bir sipariş olduğu anlamına gelmez, bu nedenle siparişin varlığını kontrol etmeniz gerekir.

 
Igor Makanu :

ve hafızam bana hizmet ediyorsa, o zaman yılın başında günlüğe NULL yazdırmak ve orada 0 almak mümkündü, şimdi bir hata veriyor

Değişiklikler

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

Hatalar, hatalar, sorular

Kirill Belousov , 2017.12.14 21:34

 Print ( NULL ); // 'NULL' - expression of 'void' type is illegal
Alert ( NULL ); // 'NULL' - expression of 'void' type is illegal

emekli olma zamanı

 
A100 :

Değişiklikler

evet gerçekten, ama daha önce MT4'te nasıl yaptığımı hatırladım, şu şekilde işaretçileri yazdırdım:

 class A {};

A *a;
void OnStart ()
{   Print ( "1 : " ,a);
   a= new A;
   Print ( "2 : " ,a);
   a = NULL ;
   Print ( "3 : " ,a);

delete a;
}

2019.09.17 07:52:40.855 tst (EURUSD,H1) on

2019.09.17 07:52:40.856 tst (EURUSD,H1) 2: 1048576

2019.09.17 07:52:40.856 tst (EURUSD,H1) otuz

2019.09.17 07:52:40.856 tst (EURUSD,H1) 1 silinmemiş nesne kaldı

2019.09.17 07:52:40.856 tst (EURUSD,H1) A tipi 1 nesne kaldı

2019.09.17 07:52:40.856 tst (EURUSD,H1) 24 bayt sızdırılmış bellek

Dmitry Fedoseev :

Burada, daha ziyade, nokta alımda değil, algoritma öyle olmalıdır ki, herhangi bir sipariş yoksa kodun bu kısmı yürütülmeyecektir.

Ya da belki de öyle olması gerekiyordu. Ancak bir işaretçi varsa, bu bir sipariş olduğu anlamına gelmez, bu nedenle siparişin varlığını kontrol etmeniz gerekir.

göreve bağlı olarak, kodda zaten piyasada ne olduğunu anlayacak bir "sipariş nesnesi" nasıl oluşturulacağını yazdım - yapıcıda sihirle arama yapın, bulunursa, onu alır, sipariş açar bir fiyat, emir tipinin kendisinin dikkate aldığı (piyasa veya bekleyen), lotun normalleştirilmesi, bir önceki hamlede yeniden teklifler varsa bir emir açmanın yeniden denenmesi, bir sonraki hamlede başarılı bir şekilde sipariş verildikten sonra, bir sonraki işaretin ayarlanması vb. tüm bunlar "sipariş nesnesi"nin müdahalesi olmadan yapılır

ve sipariş kapatılmışsa, o zaman strateji için hala var gibi görünüyor - strateji nihayetinde siparişin kârıyla ilgileniyor (mevcut veya zaten kapalı - önemli değil!), Eh, siparişin kendisinin durumu (henüz yerleştirilmedi, çalışıyor ve zaten kapalı)


her şey istendiği gibi çalışıyor, belki bir yerde haklısın, ama ben kodu test ederken, işaretçiler kontrol edilmeli, o zaman bu kontrol olmadan deneyebilirsiniz ... ancak böyle bir nesne yoksa işin mantığı aşağıdaki eylemleri ima etse de .... prensipte, sanal siparişler için her şeyi yeniden yapmak için pek bir şey kalmaz, yine de düşünmeniz gerekir))))

 
Igor Makanu :

onun yerine benden önceki gibi yazmak istedim

şöyleydi:

ama MQL'de makro ikamelerini nasıl kontrol edeceğimi hatırladım

2019.09.16 22:57:42.837 tst (EURUSD,H1) bir = 1

2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID = 0

2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0


ve hafızam bana hizmet ediyorsa, o zaman yılın başında günlüğe NULL yazdırmak ve orada 0 almak mümkündü, şimdi bir hata veriyor

onlar. NULL'un davranışı gelecekte değişmemelidir, ancak NULL için ikame edilen şey net değil, muhtemelen bu durumu şimdi kontrol edersem, o zaman yazdığım gibi if ( CheckPointer (m_order) == POINTER_INVALID ) o zaman bu doğru koddur, tabiri caizse )))

Başvuru yapmaktan çekinmeyin. %98 kesinlik ile, kaynak koddaki NULL, #define NULL nullptr gibi bir şeydir
 
Vladimir Simakov :

İşte, şeker için:

İlk basit test gösteriyor

 void OnStart ()
{
    A * const a = new A;
    DELETE(a); //Error: 'a' - constant cannot be modified
}

bunun şeker değil, başka bir ... daha sıvı madde olduğunu

 
A100 :

İlk basit test gösteriyor

bunun şeker değil, başka bir ... daha sıvı madde olduğunu

Çünkü burada değilsin)) NULL ne burada ne de orada. CheckPointer() işlevini kullanmanız gerekir. İşaretçiyi kendiniz sıfırlamanız gerekmez, sildikten sonra POINTER_INVALID'nin kendisi olur.

 
Dmitry Fedoseev :

Çünkü burada değilsin)) NULL ne burada ne de orada. CheckPointer() işlevini kullanmanız gerekir. İşaretçiyi kendiniz sıfırlamanız gerekmez, sildikten sonra POINTER_INVALID'nin kendisi olur.

Tamamen katılıyorum, adminleri okursanız, genellikle şöyle görünür - kodlarınızı doğru yazın

MQL ile genel olarak her zaman zor, yeni yapı, yeni sıkıntılar, öğrenmeye başlıyorsunuz, peki, nasıl kullanırsanız kullanın klasiklere göre değil, işte gidin ve imzalayın)))

 
A100 :

İlk basit test gösteriyor

bunun şeker değil, başka bir ... daha sıvı madde olduğunu

İyi insan. Ve freelance çalışmalarınızın, piyasadaki ürünlerinizin, programlama ile ilgili yayınlarınızın istatistikleri nerede? Yoksa sürekli işaretçiler konusunda birinin gözlerini açmaya mı yoksa madde türleri konusundaki bilgileri tabiri caizse göstermeye mi çalışıyorsunuz ..? Gelecekte, lütfen örneklerin bağlamını dikkate alın ve derleyici hatasını yeniden oluşturmaya çalışmayın.
 
Vladimir Simakov :
İyi insan. Ve freelance çalışmalarınızın, piyasadaki ürünlerinizin, programlama ile ilgili yayınlarınızın istatistikleri nerede? Yoksa sürekli işaretçiler konusunda birinin gözlerini açmaya mı yoksa madde türleri konusundaki bilgileri tabiri caizse göstermeye mi çalışıyorsunuz ..? Gelecekte, lütfen örneklerin bağlamını dikkate alın ve derleyici hatasını yeniden oluşturmaya çalışmayın.

Basit bir bağlamım var: Kod (bu durumda, bir makro) bir hatayla yazılmışsa, bunu bildirmenin mümkün olduğunu düşünüyorum (ve bunu doğrulayan bir örnek verin). Ve bu bağlamda, istatistiklerin bununla ne ilgisi olduğunu anlamıyorum.

 
A100 :

Ve bu bağlamda, istatistiklerin bununla ne ilgisi olduğunu anlamıyorum.

basit tutun ve insanlar size ulaşacak

;)

Not: Mesajlarınızda neredeyse her zaman rasyonel bir tahıl vardır, ancak malzemenin sunumu, sanki tamamen iyi niyetlerle değil, elbette sizin işinizdir, ancak IMHO, yardım etmek istiyorsanız - isterseniz yardım edin zeki olmak, çoğu zaman ortaya çıkıyor

tabi ki bu senin işin, ama internet kaynakları aracılığıyla özsaygıyı yükseltmek .... Daha fazlasını yazdırmak için çok tembelim