MQL5 için dilekler - sayfa 59

 
diakin >> :

Ne tür olaylar?

Örneğin, antrenmandan bir pozisyonu kapatmak. Böyle bir görevim vardı - serbest bırakılan fonları dikkate alarak diğer emirleri değiştirmek için bir pozisyonu kapatma anını bulmak. Hesabın durumunu her zaman takip etmek zorunda kaldım. Tarihten gelen emirleri takip etmeye çalıştım ama aynı zamanda test etmek imkansız, her şey çok uzun sürüyor.

Şu anda ele alınabilecek tek olay kenedir.

 
Gupm писал(а) >>

Örneğin, antrenmandan bir pozisyonu kapatmak. Böyle bir görevim vardı - serbest bırakılan fonları dikkate alarak diğer emirleri değiştirmek için bir pozisyonu kapatma anını bulmak. Hesabın durumunu her zaman takip etmek zorunda kaldım. Tarihten gelen emirleri takip etmeye çalıştım ama aynı zamanda test etmek imkansız, her şey çok uzun sürüyor.

Şu anda ele alınabilecek tek olay kenedir.

Her neyse, start() her tikte çalışır. Orada bir olayın meydana gelip gelmediğini kontrol edebilirsiniz.

 
diakin писал(а) >>

Her neyse, start() her tikte çalışır. Orada bir olayın meydana gelip gelmediğini kontrol edebilirsiniz.

Evet, başlıyor, şu anda yapıyorum, ancak sipariş, örneğin bir olay - kapanışa sahip olacak bir nesne olduğunda, işleyicinizi bağladığınız ve hepsi bu kadar, bu bölümün bu kısmı ne kadar harika olacak. kod tamamen ayrı, hata ayıklanmış vb.

 
Gupm писал(а) >>

Evet, başlıyor, şu anda yapıyorum, ancak sipariş, örneğin bir olay - kapanışa sahip olacak bir nesne olduğunda, işleyicinizi bağladığınız ve hepsi bu kadar, bu bölümün bu kısmı ne kadar harika olacak. kod tamamen ayrı, hata ayıklanmış vb.

Bana öyle geliyor ki bunu MQL5'te yapmak kolay.

;)

 int OrderSend ( string symbol , int cmd , double volume , double price , int slippage , double stoploss , double takeprofit , string comment = NULL , 
int magic = 0 , datetime expiration = 0 , color arrow_color = CLR_NONE , 
func OnClose ) 

Son parametre, sipariş kapatıldığında çağrılan fonksiyonun adıdır. Derleyici hala metindeki işlevleri tanır, ayrıca parametrelerde de tanır.

Ve olaylar zaten dahili olarak işleniyor - sonuçta, günlükte bir siparişi kapatma (veya bir hata hakkında) hakkında bir mesaj yazdırıyor.

Yalnızca parametrelerde açıklanması gereken bir grup olay olabilir - en azından OnCloseEmpty, OnOpenEmpty ve benzeri gibi boş değerler.

Genel olarak, sık çağrılan işlevler için bir şablon listesi eklemek güzel olurdu, seçildiğinde, metne tüm gerekli parametreleri içeren boş bir işlev eklenecektir.

Şimdi yardıma gitmem, işlevin açıklamasını kopyalayıp yapıştırmam ve parametreleri düzenlemem gerekiyor.

 

MQL5'e bir dilek dilemek istiyorum.

Tekrarı olduysa kusura bakmayın öncekini okumadım...

Yeni mql'deki döngülerin bir şekilde vurgulanmasını istiyorum, örneğin şöyle:

 
Duke3D писал(а) >>

...

Yeni mql'deki döngülerin bir şekilde vurgulanmasını istiyorum, örneğin şöyle:

En azından metin biçimlendirme düğmesini küme parantezleri için otomatik girintili yapın.

Şimdi, parantez eksikse, nerede olduğunu bulmak çok zor.

Ve satır numaralarını ekleyin. C'de neyin kabul edilmediğini asla bilemezsiniz. Bu, durum çubuğunda satır numarasını aramaktan daha uygundur.

 
diakin >> :

Bana öyle geliyor ki bunu MQL5'te yapmak kolay.

 int OrderSend ( string symbol , int cmd , double volume , double price , int slippage , double stoploss , double takeprofit , string comment = NULL , 
int magic = 0 , datetime expiration = 0 , color arrow_color = CLR_NONE , 
func OnClose ) 

;)

Son parametre, sipariş kapatıldığında çağrılan fonksiyonun adıdır. Derleyici hala metindeki işlevleri tanır, ayrıca parametrelerde de tanır.

Ve olaylar zaten dahili olarak işleniyor - sonuçta, günlükte bir siparişi kapatma (veya bir hata hakkında) hakkında bir mesaj yazdırıyor.

Yalnızca parametrelerde açıklanması gereken bir grup olay olabilir - en azından OnCloseEmpty, OnOpenEmpty ve benzeri gibi boş değerler.

Genel olarak, sık çağrılan işlevler için bir şablon listesi eklemek güzel olurdu, seçildiğinde, metne tüm gerekli parametreleri içeren boş bir işlev eklenecektir.

Şimdi yardıma gitmem, işlevin açıklamasını kopyalayıp yapıştırmam ve parametreleri düzenlemem gerekiyor.

Neden sadece onClose? Peki ya onModify, onOpen?

Belki düzen bir nesneyse, şöyle bir şey olmalıdır:


TOrder order = new  TOrder(symbol , cmd , volume , price , slippage , stoploss , takeprofit , comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

s?

 
TedBeer писал(а) >>

Neden sadece onClose? Peki ya onModify, onOpen?

Belki düzen bir nesneyse, şöyle bir şey olmalıdır:

s?

Söylemesi zor.

int bilet=SiparişGönder(seçenekler); // MQL4'ten normal fonksiyon

Order(ticket).addEvent("open", myOpenHandler);

veya daha kompakt

Order(bilet).OnOpen=myOpenHandler;

Burada Order(handle) standart bir şeydir, tanıtıcı tarafından belirtilen nesnenin özelliklerine ulaşabileceğiniz bir nesne veya yapıdır.

double MyVolume=Sipariş(bilet).Hacim;


Bir cehennem özel olayı berbat edilemez. Yoksa mümkün mü?

Order(ticket).addEvent("MyCustomEvent", MyCustomEventHandler);

Ve bu durumda "MyCustomEvent" nerede açıklanıyor? (standart olayların ve ön koşulların bir kombinasyonu olmadığı sürece.)

Her ne kadar anladığım kadarıyla MQL5 zaten yazılmış olsa da, bunlar gelecek için dilekler ;)))

 
diakin >> :

Söylemesi zor.

int bilet=SiparişGönder(seçenekler); // MQL4'ten normal fonksiyon

Order(ticket).addEvent("open", myOpenHandler);

veya daha kompakt

Order(bilet).OnOpen=myOpenHandler;

Burada Order(handle) standart bir şeydir, tanıtıcı tarafından belirtilen nesnenin özelliklerine ulaşabileceğiniz bir nesne veya yapıdır.

double MyVolume=Sipariş(bilet).Hacim;


Bir cehennem özel olayı berbat edilemez. Yoksa mümkün mü?

Order(ticket).addEvent("MyCustomEvent", MyCustomEventHandler);

Ve bu durumda "MyCustomEvent" nerede açıklanıyor? (standart olayların ve ön koşulların bir kombinasyonu olmadığı sürece.)

Her ne kadar anladığım kadarıyla MQL5 zaten yazılmış olsa da, bunlar gelecek için dilekler ;)))

Eh, işlevsel bir yaklaşımdan oluşan bir karmakarışıklık elde edersiniz ve oop. Bir şey ideolojik olarak doğru olmalıdır. Geriye dönük uyumluluk için olağan işlevler korunsa bile, OOP da uygulanmalıdır, aksi halde neden MQL5 olarak adlandırılan bu kadar derin bir modernizasyon?

Ne yazık ki, tüm tartışmalarımız kahve telvesi üzerine fal gibi. Metaalıntı yapma arzusunu görmedikleri için, yalnızca beta sürümünü sürmelerine izin vermekle kalmaz, aynı zamanda uyguladıkları dilin özelliklerini de yayınlarlar, en azından dilbilgisini halka açık erişime sokarlar. O zaman, bir ürün olarak piyasaya sürülmeden önce dille bir şeyler yapmayı istemek mantıklı olacaktır.

Neden: