OOP'nin bir uygulaması hakkında - sayfa 11

 
СанСаныч Фоменко :

MT5 duyurulduğundan beri şu soruya cevap almaya çalışıyorum:

Tüm bu süper kandırıcıları buna dahil edersem, Uzman Danışmanımın (veya başka birinin) performansı ne kadar artar?

Hiç yanıt alamadım...

...

Gelişmiş bir programlama dili olmadan karmaşık bir ticaret algoritması uygulayamazsınız. "Daha düşük satılan daha yüksek arabaları satın al" düzeyindeki basit kararlar - 80'lerdeki reklam yıllarında geçmişte kaldı. Bu nedenle, prensipte, sınırlı bir programlama dilinde karlı bir şey yazamazsınız (tabii ki şans sayılmaz).
 
СанСаныч Фоменко :

...

Dış kütüphaneler ve dolayısıyla R pazarı yasaktır. Bu sınırlama olmasaydı, çok yüksek kaliteli göstergeler satarak hiçbir risk almadan zengin olurdum .

...

Kötü bir dansçıyı engelleyen nedir biliyor musunuz?

Hiç kimse süper karlı istatistikleri aktararak zengin olmanızı yasaklamıyor. MQL kodundaki yöntemler. AlgLib yardım etmek için burada.

Ama tüm bunlar bir dizi fantezinizden: "Şimdi, aynı olsaydı, ama pembe düğmeli olsaydı, o zaman öyle bir zabatsal alırdım ki en üstte olurdum ..." - Ve yazmaya çalışıyorsunuz en azından başlamak için bir şey ve ürününüzün en az bir kopyasını satmak. Hızla cennetten dünyaya inin ve her şeyin bir tür stat uygulamaktan çok daha karmaşık olduğunu anlayacaksınız. yöntem.

 
Vasiliy Sokolov :

Ne yazık ki, akıllı bir harekete dahil edilebilmelerine rağmen çok üzücü olan MQL5'te arayüzler yasaktır: tamamen soyut sınıfların çoklu mirasına izin verin .

MQL5'teki arayüzler şu şekilde çalışır:

 class Interface
  {
public :
   virtual void       Do( void )= 0 ;
  };

class MyTest : public Interface
  {
public :
                     MyTest( void ) {};
                    ~MyTest( void ) {};

   virtual void       Do( void ) { Print ( "Hello!" ); }
  };

void OnStart ()
  {
   MyTest test;
   test.Do();
  }
 
Renat Fatkhullin :

MQL5'teki arayüzler şu şekilde çalışır:

Bir nesne birçok arabirimi destekleyebilmelidir, aksi takdirde kullanımlarının anlamı küçümsenir.

 

Ne yazık ki yalnızca İstek Listesi düzeyinde:

 //+------------------------------------------------------------------+
//| Class of all classes                                             |
//+------------------------------------------------------------------+
class CObject
{
};
//+------------------------------------------------------------------+
//| Enumerator interface                                             |
//+------------------------------------------------------------------+
template < typename T>
class IEnumerator
{
public :
   virtual bool MoveNext();
   virtual void  Reset();
   virtual T    Current();
};
class CList : public CObject, public IEnumerator
{
   ...
}

Onlar. IEnumerator tamamen soyut bir sınıf olduğu sürece, onu içeren çoklu kalıtım tamamen güvenlidir.

 
Renat Fatkhullin :

MQL5'teki arayüzler şu şekilde çalışır:

Bu arada, aslında, arayüzlerin hala uzun kalıtım zincirlerine sarılması gerekiyor. Bunun bir örneği, MQ tarafından yayınlanan harika Dahili kitaplıktır:

IList -> ICollection -> IEnumerable + IEnumerator
 
Vasiliy Sokolov :

Bir nesne birçok arabirimi destekleyebilmelidir, aksi takdirde kullanımlarının anlamı küçümsenir.

Bunun üzerinde zaten çalışıyoruz, kendimize ihtiyacımız var.
 
Renat Fatkhullin :
Bunun üzerinde zaten çalışıyoruz, kendimize ihtiyacımız var.
Aferin. Bu gerçekten harika olacak. Ayrıca, çözüm oldukça zariftir: Yalnızca ve yalnızca tamamen soyut sınıflar olarak sunulmaları halinde sınıflardan çoklu kalıtım yapılmasına izin vermek yeterlidir (veri ve uygulamaları içermez, tüm yöntemler geneldir). Onlar. C++ standardında yer almayan herhangi bir özel yapıyı veya anahtar sözcüğü tanıtmaya gerek yoktur.
 
Ayrıca dileklerden: Dahili kütüphaneyi daha da geliştirmemiz gerekiyor. Arayüzler göründüğünde sadece süper kandırılacak. Eski CObject'i kötü bir rüya gibi unutalım.
 
Vasiliy Sokolov :
sadece ve sadece soyut sınıflar olarak sunuluyorlarsa (veri ve uygulamaları içermezler, tüm yöntemler geneldir) sınıflardan çoklu mirasa izin vermek yeterlidir.
... ve kimseden miras alınmaz, aksi takdirde elmaslar aynıdır.