Hatalar, hatalar, sorular - sayfa 77

 
Interesting :

ACCOUNT_TRADE_ALLOWED tarafından döndürülen değerlerin sunucu tarafında oluşturulduğunu doğru anladım?

Tüccarın (terminalde) hiçbir eyleminin bu değeri değiştiremeyeceğini söylemeliyim...

not

Ama ACCOUNT_TRADE_EXPERT'in değişme konusundaki isteksizliği benim için gerçekten garip...

O halde terminal menüsündeki "Otomatik alım satım" düğmesi ve "Otomatik alım satıma izin ver" onay kutusu neyi etkiler?

PPS

Eski sürümlerde her şey doğru görünüyordu ve her şey çalıştı, ancak 299'da neler olduğunu anlamıyorum ...


ACCOUNT_TRADE_ALLOWED ve ACCOUNT_TRADE_EXPERT'e kim girdi ve en önemlisi, neden?


Geliştiriciler - Ya şimdiden delirmeye başladım ya da terminalde "barabashki" ortaya çıktı ... :)

Ve en son sürümde değil, en azından 294'te (oraya gitmelerine kim izin verdi?) ... :(


küçük deney

294 serbest bırakma terimini alıyoruz ve iade edilen AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) değerindeki değişikliği kontrol eden bir Uzman Danışmanın grafiğine atıyoruz.

Aynı zamanda, EA'nın parametrelerinde ve terminalde ("otomatik ticaret" düğmesi) otomatik ticareti devre dışı bırakıyoruz.

Sonuç olarak, uzmanın günlüğünde aşağıdakileri görüyoruz

Burada Expert Advisor'ın eylem günlüğünü (başlatma sırasında) görüyoruz ve zamanlayıcıda ACCOUNT_TRADE_ALLOWED değerini kontrol ediyoruz.

Renkli olarak vurgulanan her şeyle ilgileniyoruz (bundan önce, özel bir sınıfa sembol listeleri yüklendi).

1. Zamanlayıcı tarafından döndürülen ilk sonuç mavi renkle vurgulanır (beklendiği gibi yanlıştır);

2. Zamanlayıcının döndürdüğü bir sonraki sonuç kırmızıyla vurgulanır, aniden doğru çıktı ( hangi LAMB'nin ticarete izin verdiğiyle çok ilgileniyorum );

3. Yeşil, sınıfımın (event OnEventTimer ) meydana gelen değişikliklere tepkisidir.

Burada sınıf, otomatik ticarete izin verildiğini "anlıyor" ve bu konuda memnuniyetle bilgilendiriyor (onun iyimserliğini paylaşmıyorum);

Ayrıca, mesaj iki kez görüntülenir (bu daha önce gözlemlenmemiş olsa da). OnEventTimer olayında özel bir kontrol olduğundan, bir mesajın görünümü iki kez fikir tarafından dışlanır.

 //Reading information on current parameters of the trade account
RealTradeAllowed = TradeAllowed(); //TradeAllowed
RealTradeExpert  = TradeExpert();   //TradeExpert
//Checking the status change of the use possibility automatic trade
   if ( varTradeAllowed!=RealTradeAllowed )
   //Processing the event TradeAllowed
  {
  OnTradeAllowed(RealTradeAllowed);
   //We write current status of the RealTradeAllowed in variable
   varTradeAllowed = RealTradeAllowed;
  }

4. Ayrıca, terminale ne olursa olsun, zamanlayıcı sürekli olarak true değerini döndürür.

not

AccountInfoInteger(ACCOUNT_TRADE_EXPERT) ile durum daha da karmaşıktır. Zamanlayıcı, terminal ve uzman ayarlarından bağımsız olarak tur döndürür.

İhtiyacımız var mı?

 
AM2 :

Ben de benzer bir soruyla ilgileniyorum. Hesapta pozisyon açmak için yeterli para yoksa ne yapmalı?

1. Danışmanın ticaret yapmasını yasaklayın.

2. Açık pozisyonları yasaklayın.

3. Uzmanı tablodan çıkarın.

3. nokta, ExpertRemove yardımı ile çözülebilir. 2. nokta, nasıl yaptığımdır:

1. Anladığım kadarıyla, danışman için ticaret yasağı PROGRAMELY olarak değil, "Otomatik ticaret" düğmesi ve "Otomatik ticarete izin ver" onay kutusu ve ardından ACCOUNT_TRADE_ALLOWED ve ACCOUNT_TRADE_EXPERT kontrolü kullanılarak ayarlandı.

Ayrıca Expert Advisor'a gerekli parametreyi ekleyerek ve ardından bu parametreyi kontrol ederek (örneğin, gerçek bir hesapta alım satımı yasaklamak) alım satım işlemlerini programlı olarak yasaklamak da mümkündür.

Ön kontrol, Expert Advisor'ın başlatılması sırasında gerçekleştirilir ve çalışma modunda her şey OnTimer() veya OnTick() içinde işlenir.

2. Bir pozisyonu açma (kapatma) olasılığının kontrolü, mevcut durum dikkate alınarak yapılmalıdır: bağlantı, otomatik ticaret olasılığı ve diğer koşullar (örneğin, belirli işlemleri gerçekleştirme olasılığının kontrolü) belirli bir sembol üzerinde).

Tüm koşulları kontrol etmek için, bool sonucu olan bir işlev oluşturmak daha iyidir.

Örneğin bu:

 //Function IsTradePermit
bool IsTradePermit( bool TardeAllowed, bool Connect, double FreeMargin)
{
//----------------------------------------------------------------------------//
//Work variables
bool Result;
//----------------------------------------------------------------------------//

//Тут мы проверяем разрешена или нет торговля

//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}

3. Uzman çizelgeden yalnızca aşırı durumlarda çıkarılmalıdır (işinin yapılamadığı veya artık ihtiyaç duyulmadığı durumlarda)

Bu genellikle çok aşırı ve nadir bir durumdur. Örneğin, Expert Advisor'ın çalışması için gerekli bazı dosyalar bulunamazsa veya Expert Advisor'ın kendi kendine işleyemediği bir hata meydana gelirse kullanılmalıdır.

not

Birkaç Expert Advisor farklı çiftler üzerinde işlem yapıyorsa ve bunlar bir Expert Advisor tarafından kontrol ediliyorsa, Expert Advisor'ları kaldırmak ve yerleştirmek de yararlıdır (hangi çiftin bir Expert Advisor yükleyeceğine ve hangisini sileceğine o karar verir)...

 
Interesting :

ACCOUNT_TRADE_ALLOWED ve ACCOUNT_TRADE_EXPERT'e kim girdi ve en önemlisi neden?


Geliştiriciler - Ya şimdiden delirmeye başladım ya da terminalde "barabashki" ortaya çıktı ... :)

Ve en son sürümde değil, en azından 294'te (oraya gitmelerine kim izin verdi?) ... :(


küçük deney

294 serbest bırakma terimini alıyoruz ve iade edilen AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) değerindeki değişikliği kontrol eden bir Uzman Danışmanın grafiğine atıyoruz.

Aynı zamanda, EA'nın parametrelerinde ve terminalde ("otomatik ticaret" düğmesi) otomatik ticareti devre dışı bırakıyoruz.

Sonuç olarak, uzmanın günlüğünde aşağıdakileri görüyoruz

Burada Expert Advisor'ın eylem günlüğünü (başlatma sırasında) görüyoruz ve zamanlayıcıda ACCOUNT_TRADE_ALLOWED değerini kontrol ediyoruz.

Renkli olarak vurgulanan her şeyle ilgileniyoruz (bundan önce, özel bir sınıfa sembol listeleri yüklendi).

1. Zamanlayıcı tarafından döndürülen ilk sonuç mavi renkle vurgulanır (beklendiği gibi yanlıştır);

2. Zamanlayıcının döndürdüğü bir sonraki sonuç kırmızıyla vurgulanır, aniden doğru çıktı ( hangi LAMB'nin ticarete izin verdiğiyle çok ilgileniyorum );

3. Yeşil, sınıfımın (event OnEventTimer ) meydana gelen değişikliklere tepkisidir.

Burada sınıf, otomatik ticarete izin verildiğini "anlıyor" ve bu konuda memnuniyetle bilgilendiriyor (onun iyimserliğini paylaşmıyorum);

Ayrıca, mesaj iki kez görüntülenir (bu daha önce gözlemlenmemiş olsa da). OnEventTimer olayında özel bir kontrol olduğundan, bir mesajın görünümü iki kez fikir tarafından dışlanır.

4. Ayrıca, terminale ne olursa olsun, zamanlayıcı sürekli olarak true değerini döndürür.

not

AccountInfoInteger(ACCOUNT_TRADE_EXPERT) ile durum daha da karmaşıktır. Zamanlayıcı, terminal ve uzman ayarlarından bağımsız olarak tur döndürür.

İhtiyacımız var mı?

ACCOUNT_TRADE_ALLOWED ve ACCOUNT_TRADE_EXPERT gibi garip bir şey alıyorsunuz - bu, DC'de işlem yapma iznidir.

"Otomatik ticaret" düğmesi - TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).

ayrıca MQL5InfoInteger( MQL5_TRADE_ALLOWED ) - bir EA/script için ticaret izni/yasağı vardır

 
Swan :

ACCOUNT_TRADE_ALLOWED ve ACCOUNT_TRADE_EXPERT gibi garip bir şey alıyorsunuz - bu, DC'de işlem yapma iznidir.

"Otomatik ticaret" düğmesi - TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).

ayrıca MQL5InfoInteger( MQL5_TRADE_ALLOWED ) - bir EA/script için ticaret izni/yasağı vardır

MQL5InfoInteger( MQL5_TRADE_ALLOWED ) hakkında bilgim var, gayet iyi çalışıyor ve normalde Expert Advisor'da izleniyor, MQL5_DLLS_ALLOWED da normal olarak işleniyor.

Yani anladığım kadarıyla:

TERMINAL_DLLS_ALLOWED ve TERMINAL_TRADE_ALLOWED - terminal düzeyinde izinler;

MQL5_DLLS_ALLOWED ve MQL5_TRADE_ALLOWED - uzman düzeyinde izinler;

ACCOUNT_TRADE_ALLOWED ve ACCOUNT_TRADE_EXPERT - sunucu düzeyinde izinler.

Ardından false'u true olarak değiştiren sunucu olduğunu varsayacağız (bununla ilgili bir mesajın neden iki kez verildiği çok açık olmasa da).

 
Swann , bahşiş için teşekkürler. Her şeyi düzeltti. Her şey iyi çalışıyor gibi görünüyor ...
 

İyi günler, böyle bir sorunum var, saatlik grafiği kaydırmaya başladım ve belirli bir tarihte günlük olana geçiyor, ayrıca 15 dakika ile saatlik veya 4 saatlik grafiğe geçiyorlar, geçmişin olduğu dosyaları sildim belgelere göre saklandı, ancak hiçbir şey değişmedi.

Документация по MQL5: Файловые операции / FileDelete
Документация по MQL5: Файловые операции / FileDelete
  • www.mql5.com
Файловые операции / FileDelete - Документация по MQL5
 
RomanIgorevi4 :

İyi günler, böyle bir sorunum var, saatlik grafiği kaydırmaya başladım ve belirli bir tarihte günlük olana geçiyor, ayrıca 15 dakika ile saatlik veya 4 saatlik grafiğe geçiyorlar, geçmişin olduğu dosyaları sildim belgelere göre saklandı, ancak hiçbir şey değişmedi.

Bu tarihten önce sunucuda yalnızca günlük geçmiş bulunur (dakika geçmişi yoktur), bu nedenle tüm zaman dilimleri günlük olarak görüntülenir.
 

Test cihazının optimizasyon algoritmalarını kullanırken HistoryDealsTotal() ile ilgili bir sorun olduğunu buldum.

Normal bir geriye dönük test sırasında her şey yolundadır, ancak bir optimizasyon oturumunda, EA'nın başlatma aşaması sırasında, HistoryDealsTotal() , EA'nın önceki çalışmasından elde edilen anlaşmaların sayısını döndürür. Daha sonra, ticaret aşamasında, HistoryDealsTotal() yeniden 0'dan başlar.

Aşağıdaki kod parçacığı aracılığıyla bu sorunla karşılaştım:

     // constructor
     void MyClass() {
        _dealCnt = HistoryDealsTotal ();   // this is causing trouble!
        _orderCnt = OrdersTotal ();
        _positionCnt = PositionsTotal ();
        _historyOrderCnt = HistoryOrdersTotal ();
        ...
    }

Bunu aşmanın yolu, bunun yerine 0 ile başlatmaktır, ancak yine de bu soruna resmi bir yanıt vermekten memnun olurum, çünkü bana göre bazı dahili değişkenler çok geç sıfırlanmış gibi görünüyor.

Şimdiden teşekkürler!

Documentation on MQL5: Trade Functions / HistoryDealsTotal
Documentation on MQL5: Trade Functions / HistoryDealsTotal
  • www.mql5.com
Trade Functions / HistoryDealsTotal - Documentation on MQL5
 

Merhaba, lütfen şu soruyu cevaplayın:

MT5 neden indirilemiyor, kurulum dosyasını indiriyorum, çalıştırıyorum, yarısına kadar indiriyor, duruyor, başka bir erişim noktasına atlıyor vs. sonunda hata

-okunamadı [12002]

ve böyle bir hikaye sürekli olarak terminali veya pencereleri ne kadar yeniden kurarsam kurayım, ama şimdi üçüncü gün için çalışmıyor

 

lütfen bana bu yapının neden her zaman 0 döndürdüğünü söyle

 MqlDateTime dt; Print (dt.min);

ve şimdi kaç dakika olduğunu nasıl bilebilirim? Örneğin:

 MqlDateTime dt; if (dt.min)> 33 ...