Hatalar, hatalar, sorular - sayfa 2932

 

Açıklamada hata:

Hata

Bu alanın adı: time_type

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
  • www.mql5.com
Структура торговой транзакции - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday :

Kullanıcıya, gösterge kurulum penceresinin menü listesinden hem zaman dilimlerini hem de numaralarını seçme yeteneği sağlamaya çalışıyorum:

ve onun tarafından seçilen periyotların doğrudan PArray'e düşmesini istiyorum. Ancak yukarıdaki örnekten, kullanıcının girdiğini değil, programda önceden tanımlanmış değerleri diziye atadığım ortaya çıkıyor. Ek olarak, derleyici uyarılar verir:

Son satırı şununla değiştirmeye çalışırken:

derleyici genellikle bir hata verir:

Ayrıca NO_PERIOD=0, PERIOD_CURRENT anlamına gelir ve buna ihtiyacım yok, false veya EMPTY_VALUE gibi bir şeye ihtiyacım var ama hiç uymuyorlar.

Nasıl düzeltilir?

Neredeyse düzeltti.

 
Test cihazındaki sembol ayarları tutmuyor, perşembe ve cuma günleri işlem seansları kesiliyor, bundan dolayı sürekli piyasa kapanma hatası oluyor, pozisyonlar açılmıyor, optimizasyon imkansız, robot düzgün çalışmıyor, diğer brokerlerle her şey yolunda, ama bu özellikle gerekli, ne yapmalıyım? Sadece son zamanlarda, durum böyle değildi. Daha önce bu ayarlar tutuluyordu ve izinsiz değiştirilmiyordu, nedir? Kim ne yapacağını biliyor? Yeni bir hesap kaydettim, terminali geçici dosyalardan temizledim, başka bir terminalde denedim, yardımcı olmuyor. video sorunları https://radikal.ru/video/1HA3UfUNVZt
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
  • www.mql5.com
SymbolInfoSessionQuote - Получение рыночной информации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Bize söyleyin, "dizi menzil dışı" hatasını yakalamak ve düzeltmek için hangi mücadele yöntemleri var? İlk olarak, Print ile bellek sınırlarını aşmış bir dizinin bir elemanını yazdırmak, hatanın önüne geçtiği ve yazdırmaya ulaşmadığı için mümkün değildir. İkincisi, bu hata sistematik olarak ortaya çıkmaz, ancak istediği gibi: bir kez çıktı ve gösterge çalışmadı (ancak göstergeler listesindeki çizelgede asılı kaldı) ve bir dahaki sefere artık yok. , göstergeyi yeniden derlemeden, düzenlemesinden bahsetmiyorum bile.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday :
Bize söyleyin, "dizi menzil dışı" hatasını yakalamak ve düzeltmek için hangi mücadele yöntemleri var?

ArrayResize(), bir dizi öğesi yazmadan önce yapın, dizide olması gereken öğelerin sayısını sayın ve sürün ya da kendi kendine artan dinamik bir dizi kullanın. Sadece dizinin sınırlarını aşıyorsunuz, örneğin boyut 100 eleman, ancak ilk eleman No. 0 olduğu için bazıları karışıyor, eğer arka arkaya sayılar yazarsanız, 0-99 sığacaktır. Ben profesyonel bir programcı değilim, eğer bir şey varsa (ama yapabilirim), akla gelen ilk şey işe yaraması)))

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Объект динамического массива - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
freelancerAntonyan :

ArrayResize(), bir dizi öğesi yazmadan önce yapın, dizide olması gereken öğelerin sayısını sayın ve sürün ya da kendi kendine artan dinamik bir dizi kullanın.

Aslında bende var ve çok dinamik. Referanstan: " İşlev yalnızca dinamik dizilere uygulanabilir. SetIndexBuffer() işlevi tarafından gösterge arabelleği olarak atanan dinamik dizilerin boyutunu değiştiremeyeceğiniz unutulmamalıdır. Gösterge arabellekleri için tüm yeniden boyutlandırma işlemleri gerçekleştirilir. "Ama bu bir gösterge tamponu değil, bu yüzden ellerinizle düşünmeli ve kafanızla hareket etmelisiniz...

 
x572intraday :

Aslında bende var ve çok dinamik. Referanstan: " İşlev yalnızca dinamik dizilere uygulanabilir. SetIndexBuffer() işlevi tarafından gösterge arabelleği olarak atanan dinamik dizilerin boyutunu değiştiremeyeceğiniz unutulmamalıdır. Gösterge arabellekleri için tüm yeniden boyutlandırma işlemleri gerçekleştirilir. "Ama bu bir gösterge tamponu değil, bu yüzden ellerinizle düşünmeli ve kafanızla hareket etmelisiniz...

Bu tür hataları yakalama sorunu, yalnızca adreslemeyi engelleyen özel bir dizi sınıfı gibi "katmanlar" kullanılarak çözülür.

MQL's OOP notes: rubber arrays, safe numbers, exceptions handling and other tricks: part 1
MQL's OOP notes: rubber arrays, safe numbers, exceptions handling and other tricks: part 1
  • 2016.11.08
  • www.mql5.com
Today we're starting a patchy subject, which will combine many different things. This is why I decided to split it into parts. Out final goal is exception handling, but before we can address it, we
 

Algoritmik ticaret devre dışı bırakıldığında danışmanı başlatırken ve ardından algoritmik ticareti etkinleştirirken:

Hata koduna göre, TERMINAL_TRADE_ALLOWED özelliği doğru olmasına rağmen ticaret yasağı devam ediyor

 #include <Greshnik\\ErrorDescription.mqh>
int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
   if (! TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ))
     {
       return ;
     }
   MqlTradeRequest tr;
   MqlTradeResult r;
   ResetLastError ();
   if (! OrderSend (tr,r))
     {
       int err= GetLastError ();
       Print (err, "  " ,cLng::CodeDescription(err));
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }
 2020.12 . 30 15 : 25 : 38.629 Experts automated trading is enabled
2020.12 . 30 15 : 25 : 39.159 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.297 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.397 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.499 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.725 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 42.781 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 43.129 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 43.758 Experts automated trading is disabled

Sonuç şöyle olmalıdır:

 2020.12 . 30 15 : 29 : 58.406 Experts automated trading is enabled
2020.12 . 30 15 : 30 : 02.247 Test1 (EURUSD,M1)       4756   Не удалось отправить торговый запрос
2020.12 . 30 15 : 30 : 02.368 Test1 (EURUSD,M1)       4756   Не удалось отправить торговый запрос
2020.12 . 30 15 : 30 : 02.486 Test1 (EURUSD,M1)       4756   Не удалось отправить торговый запрос
2020.12 . 30 15 : 30 : 04.320 Experts automated trading is disabled
 
CopyTime ( _Symbol ,tf, 0 , 1 ,Arr);
Açıkça her zaman ArraySize (Arr)=1 olmalıdır. Bu, başarılı kopyalama durumunda geçerlidir. Ancak hangi durumlarda bir çubuğun kopyalanması gerçekleşemez? Sonuçta , "aralık dışı dizi" hatası ortaya çıktığında, terminal Arr[0]'ı gösterir .
 
x572intraday :
Açıkça her zaman ArraySize(Arr)=1 olmalıdır. Bu, başarılı kopyalama durumunda geçerlidir. Ancak hangi durumlarda bir çubuğun kopyalanması gerçekleşemez? Sonuçta , "aralık dışı dizi" hatası ortaya çıktığında, terminal Arr[0]'ı gösterir .

Hatayı yakaladım, yardımdan alıntı yapın:

4401

İstenen geçmiş bulunamadı

Dergide basıldı - alınan:

 2020.12 . 31 14 : 45 : 20.474 test (EURUSD,H2)         ArraySize (Arr)= 0 ; copied=- 1 ; TF= PERIOD_H2
2020.12 . 31 14 : 45 : 20.474 test (EURUSD,H2)        Error Code = 4401

Şimdi onunla ne yapmalı, nereye gitmeli? Çarpık ellerim mi var?.. 0'dan 1'e sadece bir çubuk kopyalıyorum. (Tarih) nasıl var olamaz? Ayrıca, hata her zaman ortaya çıkmaz. Yoksa önce bir şekilde geçmişi zorla kontrol edip yüklemem mi gerekiyor?

Neden: