Hatalar, hatalar, sorular - sayfa 1723

 

Tüm proje dosyalarını ayrı bir klasöre kopyalama (göreceli yolları koruyarak).

Burada, örneğin, kodu paylaşmak istiyorum. Farklı yerlerden bir düzine/başka mqh dosyası çeker.

Şimdi bu dosyaları manuel olarak aramanız gerekiyor, çoğu zaman her şeyi bulamıyorsunuz veya fazladan bir şey alıyorsunuz. Kaynağı paylaşabilmeniz için bu işlemi nasıl otomatikleştirebilirsiniz?

 

Bir proje tüm dosyalarıyla nasıl silinir?

Burada kod tabanından terminal aracılığıyla bir düzine dosya için bir proje indirdim ama nasıl silebilirim?

 

Derlerken hata

 class A {};
template < typename T> //--------------------------------------------------- //(1)
T *f( T* t ) { return t; }               //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template < typename T> //--------------------------------------------------- // (4)
T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart ()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );     //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине : T -> A, и отсутствует f(const A*,const A*)
}

(*) Genel durumda, şablon (1)'de T yerine hem A - > (2) hem de const A - > (3) ikame edilebilir. Örneğin, T yerine yalnızca A->(5)'in değiştirilebildiği şablon (4)'ün aksine.

Artık yalnızca A-> (2) ikamesi çalışır ve tam kullanım için bir yerine iki şablon yapmanız gerekir:

 template < typename T> //--------------------------------------------------- //(1)
      T *f(       T* t ) { return t; }
template < typename T> //--------------------------------------------------- //(6)
const T *f( const T* t ) { return t; }

Not: Açık tanım (6), genel duruma (*) göre önceliklidir.

Toplam: Şablon (6) olmaması durumunda , imzalı (3) şablonun (1) uygulanması bekleniyordu.

 
A100 :
Sizden kod tabanına bir şey koymanız için yalvarıyorum! Eğitim amaçlı.
 
1) OrderSend'i aradıktan sonra MT5'te açık pozisyonları ve işlem geçmişini güncellemede bir gecikme var mı? Evet ise, bekleme için önerilen zaman aşımı süresi nedir?

2) Karşılaştırma için MT4 için aynı soru.
 

RickD :
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

MT5-OrderSend tam olarak senkronize DEĞİLDİR - ticaret ortamıyla senkronizasyon yoktur. Bu, tarihin tanıklığının gerçek durumla uyuşmadığı anlamına gelir.

Herhangi bir zaman aşımından söz edilemez. Sorunun güvenilir bir çözümü yok, çünkü senkronizasyon sorunları sunucuda değil, terminal düzeyinde ele alınmalıdır.

Aslında, MT5 kullanıcıları, MT4 köprü geliştiricilerinin yaşadıklarını yaşadı.

OrderSend gönderilirse, bunun yapıldığını UNUTMAYIN (burada olası bir güvenlik açığı vardır). Ayrıca, ilgili mesaj OnTrade'e ulaşana kadar mevcut geçmişe (işlem ortamı) dikkat etmeyin. Gelir gelmez HATIRLANAN UNUTULMALIDIR.

DEPOLANMIŞ veri olmadığında, MT4'te olduğu gibi geçmişe güvenilebilir.

2) Karşılaştırma için MT4 için aynı soru.
MT4-OrderSend TAMAMEN senkronize edildi.
 

Версия и битность терминала

Sürüm: 5.00, yapı 1445 (10/07/2016), 32 bit.

problemin tanımı

Gösterge, standart göstergelerin (MT5'te yerleşik) verilerini başka bir zaman diliminden (göstergenin kurulu olduğu grafiğin geçerli zaman çerçevesi dışında) kopyalayamıyor. Aynı zamanda, standart göstergenin "tutamacını" elde edilebilir, ancak CopyBuffer() işlevi sürekli olarak -1 değerini döndürür. Görselleştirme modundaki test cihazında bu sorun oluşmaz, ancak grafikteki terminalde (göstergenin eklendiği) sorun sürekli olarak mevcuttur.

sıralama

Yukarıda tarif edilen.

Sonuç

Yukarıda tarif edilen.

Beklenen Sonuç

Göstergedeki diğer zaman dilimlerinden standart (ve tercihen de özel) göstergelerdeki verilerin doğru kopyalanması.

ek bilgi

Daha önceki sürümlerde bu sorun yoktu.

Benzer bir sorunla karşılaşan var mı? Terminalin veya benimkinin "Böceği" mi?

 

fxsaber :

...OrderSend gönderilirse, bunun yapıldığını UNUTMAYIN (olası bir güvenlik açığı vardır). Ayrıca, ilgili mesaj OnTrade'e ulaşana kadar mevcut geçmişe (işlem ortamı) dikkat etmeyin. Gelir gelmez HATIRLANAN UNUTULMALIDIR...

Ya hafızam sızdırıyor ya da Belgeler OnTrade bölümünde güncellendi:

...OrderSend() işlevine yapılan çağrı başarıyla tamamlandı ve doğru döndürüldüyse, ticaret sunucusunun emri yürütme için sıraya koyduğu ve ona bir bilet numarası atadığı anlamına gelir. Sunucu bu siparişi işler işlemez Ticaret olayı oluşturulacaktır. Ve kullanıcı biletin değerini hatırlarsa, OnTrade() olayını işlerken, siparişe tam olarak ne olduğunu öğrenmek için bu bileti kullanabilir...

Diğer bir deyişle, OnTrade'in i. adımda tetiklenmesi, siparişin sunucuda kabul edildiğinin garantisidir.

 
Dennis Kirichenko :

Ya hafızam sızdırıyor ya da Belgeler OnTrade bölümünde güncellendi:

Diğer bir deyişle, OnTrade'in i. adımda tetiklenmesi, siparişin sunucuda kabul edildiğinin garantisidir.

Bileti hatırlamak (OrderSend tarafından iade edileceği gerçeği değil) veya gerçek bir iade ile bir OrderSend yapılmış olduğu gerçeği GEREKLİDİR.
 
fxsaber :
Bileti hatırlamak (OrderSend tarafından iade edileceği gerçeği değil) veya gerçek bir iade ile bir OrderSend yapılmış olduğu gerçeği GEREKLİDİR.

Onlarla her şey yolunda, sipariş vermek OnTradeTransaction aracılığıyla kontrol edilmelidir, bu arada, doğrudan borsaya Plaza2 üzerinden bağlanırsanız, durum aynıdır - sipariş vermeyle ilgili mesajların alındığını kontrol etmeniz gerekir. Ve MT4'te bu işlev eşzamanlıdır, ancak aynı seçenek MT5'te mevcuttur, yalnızca bu durumda mantığınız işlev bir yanıt alana kadar duracaktır.

Gerekirse, piyasaya yerleştirme için kesilmiş olmasına rağmen kontrol sınıfını bırakabilirim, ancak yakında limit emirleri için sonlandıracağım.