Hatalar, hatalar, sorular - sayfa 624

 
ivandurak :

EA'da dosya yüklenirken hata oluştu. Kategoriden 10 farkı bulun. İlk kod komut dosyasıyla ilgilidir, ikincisi EA ile ilgilidir, Ctrl-C Ctrl-V ile aynıdır. Kod, komut dosyasında çalışır, ancak EA'da çalışmaz.

10 farkı bulmak için dosya açma koduna bakmanız gerekiyor. (ve bu açılış koduna hata durumundaki hata kodunun çıktısını ekleyin)

İkinci olarak, EA'yı bu dosya ile test etmek istiyorsanız, EA koduna #property tester_file "KitMaRsi.csv" satırını ekleyin.

 
Merhaba. MQL4'te bir program yürütülürken, kodu GetLastError() işlevi tarafından döndürülecek olan aşağıdaki ERR_HISTORY_WILL_UPDATED(4066) hatası oluşabilir. Söyle bana, MQL5'te de benzer bir hata var mı? Buraya https://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes baktı ancak benzer bir şey bulamadı.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения - Документация по MQL5
 
Druide :
Merhaba. MQL4'te bir program yürütülürken, kodu GetLastError() işlevi tarafından döndürülecek olan aşağıdaki ERR_HISTORY_WILL_UPDATED(4066) hatası oluşabilir. Söyle bana, MQL5'te de benzer bir hata var mı? Buraya https://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes baktı ancak benzer bir şey bulamadı.

Bunun bir hata olduğunu söylemeyeceğim. Terminalin kendisi verilerin senkronize edildiğini izler, verileri programlı olarak senkronize edebilir (indirebilir) ve geçmişin senkronize olup olmadığını kontrol edebilirsiniz.

Veri erişiminin organizasyonu burada açıklanmıştır (bir geçmiş yükleme komut dosyası örneği vardır).

İhtiyaç duyabileceğiniz işlevler: SeriesInfoInteger ve SymbolIsSynchronized

 
awkozlov :

Her nasılsa switch sembolik değişkenlerle çalışmıyor ...

Yerine:

'type' - geçersiz anahtar ifadesi türü
'Satın al' - sabit ifade ayrılmaz değildir


Metin değil, kimlik kullanın. Ne daha kolay ve daha mantıklı olurdu ...

 //Что-то типа такого (или свои идентификаторы). Написать функцию конвертирующую текст в идентификатор и обратно (при необходимости) достаточно просто.
//Да и выглядит это более профессионально в конечном итоге.
   switch (type)
  {
   case ORDER_TYPE_BUY : {direction = type;  price = SymbolInfoDouble (zSymbol, SYMBOL_ASK ); break ;}
   case ORDER_TYPE_SELL : {direction = type; price = SymbolInfoDouble (zSymbol, SYMBOL_BID ); break ;}
   default : { return (lot_value);}
  }

   switch (type)
  {
   case OP_BUY: {direction = ORDER_TYPE_BUY ;  price = SymbolInfoDouble (zSymbol, SYMBOL_ASK ); break ;}
   case OP_SELL: {direction = RDER_TYPE_SELL; price = SymbolInfoDouble (zSymbol, SYMBOL_BID ); break ;}
   default : { return (lot_value);}
  }
 
awkozlov :

Switch bir şekilde sembolik değişkenlerle çalışmıyor...

Yerine:

'type' - geçersiz anahtar ifadesi türü
'Satın al' - sabit ifade ayrılmaz değildir

Şu şekilde çizmelisin:

bu kadar net ve çarpık değil.

Diğer dillerde rulolar...

Farklı yazmalı mıyım?

öyle yaptım

 #define  OP_BUY               0
#define  OP_SELL               1
#define  OP_BUYLIMIT           2
 
Interesting :

Bunun bir hata olduğunu söylemeyeceğim. Terminalin kendisi verilerin senkronize edildiğini izler, verileri programlı olarak senkronize edebilir (indirebilir) ve geçmişin senkronize olup olmadığını kontrol edebilirsiniz.

Veri erişiminin organizasyonu burada açıklanmıştır (bir geçmiş yükleme komut dosyası örneği vardır).

İhtiyaç duyabileceğiniz işlevler: SeriesInfoInteger ve SymbolIsSynchronized

Teşekkür ederim! Anladım.
 

MQL5'te özellikle stdlib.mqh, WinUser32.mqh, stderror.mqh gibi kitaplıkların analogları var mı, PostMessageA işleviyle ilgileniyor musunuz?

 

Birkaç aracıyla optimizasyon yaparken, sonuçlar işlenme sırasına göre grafikte görüntülenir, yani. serpiştirilmiş. Sonuçların çıkış sıralamasını MT4'te olduğu gibi parametre seçimine göre yapmak mümkün müdür? Onlar. daha sonra gelen sonuç doğru yere eklendi. Bunun nedeni, optimizasyon sürecinde eğilimleri ve kalıpları takip etmenin uygun olmaması ve sonuçların analizi ancak hesaplamalar tamamlandıktan sonra yapılabilir.

++: Bu tamamen kapsamlı arama ile optimizasyon ile ilgili - genetikte elbette bu mantıklı değil.

 
Konstantin83 :

El kitabındaki açıklama

Aslında

bool ObjectCreate (
uzun chart_id , // grafik kimliği
sicim isim , // nesne ismi
ENUM_OBJECT türü, // nesne türü
int n win , // pencere indeksi );


teşekkürler, düzeltildi
 
x100intraday https://www.mql5.com/en/forum/1111/page610#comment_130250 yazdı:

OnCalculate() işlev çağrısının ikinci tam biçiminin kullanıldığı M1 üzerindeki yardımdan iFractals örnek kodunu çalıştıralım. Ancak bundan önce, bu işlevin içinde düzeltme

üzerinde

görüntülenen sonuçlarla herhangi bir satırı gözden kaçırmamak için (olduğu gibi bırakılırsa, diğer değerler nadir olduğundan ve hemen bir tane ile değiştirildiğinden, 1 her zaman görsel olarak görünür olacaktır, bu yüzden birim görünüyor her zaman görüntülenir). Lansmandan sonra, kodun tutumlu bir algoritma kullanmasına rağmen, her dakika, yani her yeni çubukta, göstergenin her dakika tamamen yeniden çizildiği açık olan tek olmayan değerlerin göründüğünden emin oluyoruz. . Şüpheciler, örneğin her fraktal üzerine dikey çizgiler çizen birkaç kod satırı ekleyebilir, ardından ilk çizimden sonra, yeni bir çubuğun görünümü ile bir dakika içinde bekleyerek, aynı tam bir setin görünümü ile bunları silebilir. çizgiler. Nedense, yalnızca son fraktalın veya çizginin çizilmesi söz konusu değildir.

Evet, gerçekten de, iFractals() işlevindeki örnekteki gösterge, yerleşik göstergeden gelen değerlerle gösterge tamponlarını yeniler . Bunun için "Suçlu", satırdaki ikinci koşuldur (sarı ile vurgulanmıştır):

 //--- если это первый запуск вычислений нашего индикатора или изменилось количество значений в индикаторе iFractals
//--- или если необходимо рассчитать индикатор для двух или более баров (значит что-то изменилось в истории)
   if (prev_calculated== 0 || calculated!=bars_calculated || rates_total>prev_calculated+ 1 )
     {

Açıklama: Her tikte bu iki değer karşılaştırılır ve fonksiyonun sonunda bir atama vardır.

 //--- запомним количество значений в индикаторе Fractals
   bars_calculated=calculated;

Ve aralarındaki fark, vakaların ruhunda ortaya çıkabilir:

  1. fraktal göstergenin hesaplandığı geçmişin kendisi değişti (kullanıcı geçmişi yükler)
  2. yaklaşan etkinlikler yeni çubuk

Bu durumda bu iki olayın ayrımı yapılmamış, siz bulmuşsunuzdur. Bu tür sorular ortaya çıkmasın diye bu örneği düzenleyip düzenleyemeyeceğimizi henüz söyleyemem.