Hatalar, hatalar, sorular - sayfa 2936

 
x572intraday :

Sonuç:

Garip, belirtilmemiş numara da ne? Yardım'da bulamadım ve google'da da aramadım. EMPTY_VALUE gibi görünmüyor.

Bir tür çöp

Değer ayarla

 int Arr[ 1 ]={ 0 };
 
Vitaly Muzichenko :

Bir tür çöp

Değer ayarla

Evet, benim için pratik için değil, tamamen teorik meraktan. Başka bir sayı daha çok çöp gibi görünüyordu (9xxx - tam olarak hatırlayamadım) ve yalnızca bir kez göründü ve ayrıca artık yeniden üretilmesi mümkün değildi, ancak yukarıdaki sayı sabitti ve zaman zaman tekrarlandı. (İlginç bir şekilde, sizde ve diğerlerinde aynı şey var mı?) Ben buna paralel, asıl mesele, diğer programcıların buna acı bir şekilde tökezlememesi.

 
x572intraday :

Evet, benim için pratik için değil, tamamen teorik meraktan. Başka bir sayı daha çok çöp gibi görünüyordu (9xxx - tam olarak hatırlayamadım) ve yalnızca bir kez göründü ve ayrıca artık yeniden üretilmesi mümkün değildi, ancak yukarıdaki sayı sabitti ve zaman zaman tekrarlandı. (İlginç bir şekilde, sizde ve diğerlerinde aynı şey var mı?) Ben buna paralel, asıl mesele, diğer programcıların buna acı bir şekilde tökezlememesi.

"0" aldım, birkaç kez kontrol ettim

 
Vitaly Muzichenko :

"0" aldım, birkaç kez kontrol ettim

Hmm... Bir durumun diğeriyle nasıl ilişkili olduğunu bilmiyorum, ancak bunu farklı döviz çiftlerinde bir gösterge olarak başlattım - sayılar farklıdır ( her tik ile her enstrümanda aynı sayı tekrarlanır), hatta vardı sıfır. Garip. Ama kendi numarasıyla başlatma olmadan gerçekten çöp gibi görünüyor.

 
x572intraday :

Hmm... Bir durumun diğeriyle nasıl ilişkili olduğunu bilmiyorum, ancak bunu farklı döviz çiftlerinde bir gösterge olarak başlattım - sayılar farklıdır ( her tik ile her enstrümanda aynı sayı tekrarlanır), hatta vardı sıfır. Garip. Ama kendi numarasıyla başlatma olmadan gerçekten çöp gibi görünüyor.

Kodu tiklerle yapıştırarak tekrar kontrol edildi

MT4'te sürekli 0

mt5'te evet, o zaman 0 son derece nadirdir, o zaman sayı 511026368'dir.

 
x572intraday :

Hmm... Bir durumun diğeriyle nasıl ilişkili olduğunu bilmiyorum, ancak bunu farklı döviz çiftlerinde bir gösterge olarak başlattım - sayılar farklıdır (her enstrümanda aynı numara her tik ile tekrarlanır ), hatta vardı sıfır. Garip. Ama kendi numarasıyla başlatma olmadan gerçekten çöp gibi görünüyor.

Bir dizi (ve diğer tüm değişkenler), oluşturulduğunda bellek tahsis edilir. Dizi başlatılmazsa, bu bellekte geçmiş kullanımlardan geriye kalanlar = çöp.

Değerleri programdan değiştirmezseniz, bu belleğe hiçbir şey olmaz, çöp değerini korur.

MT4'te tüm değişkenler ve diziler sıfıra başlatılmaya zorlanır.

 

CExpert.TradeEventOrderTriggered() çağrılmadı

FORTS piyasasıyla çalışırken, BCS-Demo sunucusu, bekleyen siparişler tetiklendiğinde CExpert.TradeEventOrderTriggered() çağrısının kararsızlığı bulundu.
MQL5 standart kitaplığının CExpert::CheckTradeState yönteminin kodu, pozisyonlar, siparişler, anlaşmalar ve geçmiş hakkında bilgi edinmenin olası uyumsuzluğunu hesaba katmaz.

 1446://--- check triggering of a pending order
1447:   if (hist_ord_tot==m_hist_ord_tot+ 1 && ord_tot==m_ord_tot- 1 )
1448:     {
1449:       //--- triggering of a pending order
1450:       if (deal_tot==m_deal_tot+ 1 )

Kod geçmiş verilere göre yürütülürse koşullar doğru işlenir. Gerçek verilerle çalışırken, pozisyonlarda, anlaşmalarda, emirlerde ve tarihteki değişiklikler hakkında eşzamanlı olmayan bilgi alma durumları olabilir, ayrıca bilgi edinme sırası keyfidir.

bool CExpert::CheckTradeState(void) yöntemi çağrı günlüğü. CheckTradeState()'e yapılan bir çağrı 2 satıra karşılık gelir " CheckTradeState: ....."

//Сработал отложенный ордер открытия позиции
CheckTradeState: hist_ord_tot = 613 ord_tot = 0 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 613 m_ord_tot = 1 m_deal_tot = 543 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 614 ord_tot = 1 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 614 m_ord_tot = 1 m_deal_tot = 544 m_pos_tot = 1

//Сработал отложенный ордер открытия позиции 
CheckTradeState: hist_ord_tot = 615 ord_tot = 1 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 545 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 615 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 546 m_pos_tot = 1
CheckTradeState: hist_ord_tot = 616 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 616 m_ord_tot = 0 m_deal_tot = 546 m_pos_tot = 1

Günlükten şunları görebilirsiniz:
1. Bekleyen emirleri tetikledikten sonra, geçmiş uzunluğu, anlaşmalar, emirler ve pozisyonlar hakkındaki bilgilerden sonra güncellenir, bu da koddaki 1. koşulun yerine getirilmesini imkansız hale getirir.
2. Emir, işlem ve pozisyon sayısındaki değişiklikler hakkında bilgi almanın senkronizasyonu bozulabilir, bu da koddaki 2. koşulun yerine getirilmesini imkansız hale getirir (ilk problemi bir şekilde atlarsanız ve ilk if'yi uygularsanız). Belki de bu senkronizasyonsuzluk, sipariş 2 aşamada (parçalar halinde: 1 lot + 1 lot) yürütüldüğünde meydana geldi, ancak bu durumda neden işlem sayısı +2 değil de +1.

Bu kodla mahvettim:

//--- establishment of the checkpoint history of the trade
   bool isSyncMode = MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_VISUAL_MODE);
   if(!isSyncMode)
      HistorySelect(m_beg_date,TimeCurrent());
   else
      HistoryPoint(true);
//---
   return(res);

Bloğun anlamı: asenkron modda, geçmiş yüklenmediğinde mümkün olan prosedürün sonuna ulaştıysak, geçmişi getiririz, ancak sipariş sayısının değerlerini hatırlamıyoruz, vb.

Not: Standart kitaplığın bu bölümünün az gelişmiş olduğu görülüyor. Özellikle arka arkaya 3 kez yazılan bir kod parçası utanç verici.

 1458 : res=TradeEventOrderTriggered();
1459 : //--- establishment of the checkpoint history of the trade
1460 : HistoryPoint( true );
1461 : return (res);

Sorunun fark edileceği ve bir yerlerde bir şeylerin düzeltileceği umuduyla buraya yazıyorum.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Market'teki Expert Advisors'ın EX5 dosyalarının boyutlarına baktım. İzlediğim her şey 200 Kb'den az. Onu bu kadar küçük yapan nedir? Basit kod?
 
fxsaber :
Market'teki Expert Advisors'ın EX5 dosyalarının boyutlarına baktım. İzlediğim her şey 200 Kb'den az. Onu bu kadar küçük yapan nedir? Basit kod?

Yazarların sadece dahiler olduğunu düşünüyorum, en çok satanların% 90'ının platform hakkında hiçbir sorusu yok - buna göre doğuştan gelen bilgilerle kod yazıyorlar)))


soru budur:

Veri kaynağını bağlarım:

 #resource "Common\\Files\\EURUSD_tick.bin" as const MqlTick HistoryData[]

bir hata alıyorum:

'Common\Files\EURUSD_tick.bin' kaynak dosyası bulunamadı

kaynak dosyası açılamıyor .....\\MQL5\Experts\Virtual\Common\Files\EURUSD_tick.bin' (3)

dosya EA klasöründe veya Dosyalar klasöründe bulunuyorsa, her şey yolunda demektir.


Ortak klasörden bir kaynak bağlamanın imkansız olduğu ortaya çıktı mı? -ya da kayıt olmak için bir yola mı ihtiyacınız var?

 
Igor Makanu :

Yazarların sadece dahiler olduğunu düşünüyorum, en çok satanların% 90'ının platform hakkında hiçbir sorusu yok - buna göre doğuştan gelen bilgilerle kod yazıyorlar)))

Sorularınız için, diğer hesaplar.

Ortak klasörden bir kaynak bağlamak imkansız mı? -ya da kayıt olmak için bir yola mı ihtiyacınız var?

Bilmemek.