MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 353

 
tvv :

anlamadım Bu seçenek, dosyanın konumuna işaret eder - \\MetaQuotes\Terminal\Common. Bu seçenek olmadan, test cihazında oluşturulan dosyayı alamayacağım. Bu seçenek olmadan, dosya MQL4\Files içinde aranacaktır - ve ben dosyayı test cihazından oraya koyamayacağım.

İşaret ettiğim bu bayrağın olmamasıydı.

 
Alexey Viktorov :

İşaret ettiğim şey bu bayrağın olmamasıydı.

Yardımın için teşekkürler - bu sadece bir yazım hatası - bu bayrağı biliyorum. Sorun çözülmedi - dosya, test cihazı kullanılmadan bile paylaşılan okuma modunda açılmak istemiyor. Bu dosya gösterge tarafından açılırken, komut dosyası onu açamaz. Ama Notepad sorunsuz açılıyor.

 
tvv :

Yardımın için teşekkürler - bu sadece bir yazım hatası - bu bayrağı biliyorum. Sorun çözülmedi - dosya, test cihazı kullanılmadan bile paylaşılan okuma modunda açılmak istemiyor. Bu dosya gösterge tarafından açılırken, komut dosyası onu açamaz. Ama Notepad sorunsuz açılıyor.

Diske temizleme verilerini düzenli aralıklarla zorlamayı deneyin FileFlush() .


Not: işte hemen fark etmediğim bir şey daha var

tvv :

ExtHandle=FileOpen(c_symbol+(string)20+" .csv ", FILE_BIN |FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON);
Komut dosyasındaki dosya şu şekilde açılır: ExtHandleR=FileOpen("EURUSD20. csv ", FILE_BIN |FILE_READ|FILE_SHARE_READ);
Lütfen hatamı belirtin.

Okumak garip. FILE_CSV bayrağı olmalıdır
FileFlush - Файловые операции - Справочник MQL4
FileFlush - Файловые операции - Справочник MQL4
  • docs.mql4.com
При выполнении операции записи в файл физически данные могут оказаться в нем только через некоторое время. Для того чтобы данные сразу же сохранились в файле, нужно использовать функцию FileFlush(). Если не использовать функцию, то часть данных, еще не попавших на диск, принудительно записывается туда только при закрытии файла функцией...
 
Alexey Viktorov :

Verileri periyodik olarak zorla FileFlush() diskine boşaltmayı deneyin.


Not: işte hemen fark etmediğim bir şey daha var

Okumak garip. FILE_CSV bayrağı olmalıdır

.CSV dosya uzantısıdır - herhangi bir şey olabilir - Not Defteri'nde bakabilmek için bir tane seçtim. İşte ilginç bir makale - https://www.mql5.com/ru/articles/2720. Kodum orada açıklanan kurallara uyuyor - ancak dosyayı programlı olarak okuyamıyorum. FILE_SHARE_READ modunda. .HST uzantılı EURUSD20.HST dosyası için - bayrak FILE.BIN olmalıdır, böylece MT'de 4 dosya çevrimdışı açılabilir.

Основы программирования на MQL5: Файлы
Основы программирования на MQL5: Файлы
  • 2016.09.28
  • Dmitry Fedoseev
  • www.mql5.com
Функции для работы с файлами есть почти во всех языках программирования, и MQL5 в этом смысле — не исключение. Хотя при программировании советников и индикаторов на MQL5 работать с использованием файлов приходится не всегда, (а скорее даже — очень редко), но тем не менее, каждый экспертописатель рано или поздно с этим сталкивается. Диапазон...
 
tvv :

.CSV dosya uzantısıdır - herhangi bir şey olabilir - Not Defteri'ne bakabilmek için bir tane seçtim. İşte ilginç bir makale - https://www.mql5.com/ru/articles/2720. Kodum orada açıklanan kurallara uyuyor - ancak dosyayı programlı olarak okuyamıyorum. FILE_SHARE_READ modunda. .HST uzantılı EURUSD20.HST dosyası için - bayrak FILE.BIN olmalıdır, böylece MT'de 4 dosya çevrimdışı açılabilir.

Test cihazında değil, sadece normal bir grafikte (EURUSD M1) çalışmaya çalıştım - M20 TF'yi oluşturan göstergeyi başlatıyorum.

Dosya açma kodu:

ExtHandle= FileOpen("EURUSD20.csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ).

Bu durumda, bu dosya MQL4\Files klasöründe görünecektir. Ardından, komut dosyasını EURUSD20.csv dosyasının içeriğini EURUSD20.HST dosyasına kopyalayan normal bir grafikte (EURUSD M5) çalıştırın. EURUSD20.HST dosyası, MQL4 ile aynı dizindeki geçmiş klasöründe oluşturulur.

Komut dosyası kodu:

okunacak dosya ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ);

ExtHandleW=FileOpenHistory("EURUSD20.hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ);

Her şey yalnızca göstergeyi M1 tablosundan kaldırdığımda çalışır. Yani bir dosyayı okuyarak bölme modu benim için çalışmıyor.

 

Merhaba! Eurodollar grafiğindeki metatrader hatası nedir? 10/9/2011 Pazar için günlük bir mum vardı, saatlik grafikte bu tarih için sadece bir saat 23:00 var. Belki de bu, saatlerin kış saatine aktarılmasından kaynaklanmaktadır. Nasıl düzeltilir? Bu mum daha önce yoktu.

 
tvv : Her şey yalnızca göstergeyi M1 tablosundan kaldırdığımda çalışıyor. Yani bir dosyayı okuyarak bölme modu benim için çalışmıyor.

Sorun şu şekilde çözülür: Dosyayı yazan program, her yazma işleminden sonra FileClose dosyasını kapatmalı, böylece dosyayı başka bir program tarafından okumak için serbest bırakmalıdır. Bunun nedeni, yazarken verilerin önce ara belleğe girmesi ve bir süre dosyada fiziksel olarak bulunmamasıdır. Dosyayı kapatmak, arabelleği dosyaya bırakır. Bir sonraki girişten önce

   // Открытие или создание файла и перемещение указателя в конец
   Файл = FileOpen (ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE , " " ); // еще COMMON  SHARE...
   FileSeek (Файл, 0 , SEEK_END );

dosya yeniden açılır ve işaretçi sona doğru hareket eder

 

Merhaba! Söyleyin bana, ortaya çıkan nokta sayısının her iki ifadede de aynı olacağı doğru mu? Benim için gerçekten önemli!

 "Цена закрытия последнего закрытого ордера" - Ask >= 30 * Point

Ask - "Цена закрытия последнего закрытого ордера" >= 30 * Point //Если цена Выше

Daha kesin olarak söylemek gerekirse, tüm noktalar olumsuz olamaz mı??? Ya da neyse.....))

 

İyi akşamlar.

mql5 çalışmaya başladım, birkaç sorum var o yüzden yardım istiyorum.

Görev, diziye n son mumların en yüksek değerlerini almak ve diziyi sadece yenilmemiş yüksekleri seçerek sıralamaktır.

Bu işlevi yazdım:

 double iHigh ( string symbol, ENUM_TIMEFRAMES timeframe, int index)
   {
       double high= 0 ;
       int k= 0 ;
       int s= 0 ;
       ArraySetAsSeries ( High , true );
         if ( CopyHigh ( Symbol (), Period (), 0 ,NumCand, High )==- 1 )
               {
               Print ( "Не удалось скопировать значения цен High! Код ошибки = " , GetLastError ());
               }  
               
      
       for ( int x=NumCand- 1 ; x== 0 ; x--)
            {
             if ( IsStopped ())
             break ;
                   for ( int j = NumCand-x- 1 ; j == 0 ; j--) 
                  {
                   if ( High [j+ 1 ] > High [j])
                     {
                     // Если хай не побит записываем в массив
                     temp[k] = High [j+ 1 ];
                     k++;
                     }   
                   }
            }
      s= sizeof (temp);               
      high=temp[index];
       return (high);
   } 

Bir diziyi aralık dışı hatası verir. Çizgide.

 high=temp[index];

Bu hata, anladığım kadarıyla, var olmayan bir dizi hücresine erişimden kaynaklanıyor.

Ama hemen bir hata bulamadım, nerede hata yaptığımı söyle ya da belki daha zarif bir sıralama var.

 
WhiteBerkut :

İyi akşamlar.

mql5 çalışmaya başladım, bir kaç sorum var o yüzden yardım istiyorum.

Görev, son n mumun en yüksek değerlerini diziye almak ve diziyi yalnızca yenilmemiş yüksekleri seçerek sıralamaktır.

Bu işlevi yazdım:

Bir diziyi aralık dışı hatası verir. Çizgide.

Bu hata, anladığım kadarıyla, var olmayan bir dizi hücresine erişimden kaynaklanıyor.

Ama hemen bir hata bulamadım, nerede hata yaptığımı söyle ya da belki daha zarif bir sıralama var.

Dizinin boyutuyla dizinin değerini karşılaştırın. Dizi öğelerinin sıfırdan numaralandırıldığına ve son sayının boyuttan 1 eksik olduğuna dikkat edin. Ve NumCand neye eşittir?