Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1076

 

Tek satırda büyük bir dosya nasıl okunur?

FileReadString()

Bir bin dosyasından okurken. okunacak bir dizenin uzunluğu belirtilmelidir. Bir txt dosyasından okurken, dize uzunluğu gerekli değildir ve dize, geçerli konumdan satır besleme karakteri "\r\n"ye kadar okunur. Bir csv dosyasından okurken, dize uzunluğu da gerekli değildir, dize mevcut konumundan en yakın sınırlayıcıya veya metin dizesi bitiş karakterine kadar okunur.

Dosyanın tamamı için tek bayrak FILE_BIN'dir , ancak MQL5'te MQL4'ün aksine 4095 baytlık bir sınırı vardır. Bir satırdaki bir dosyadan başka nasıl büyük metin alabilirsiniz?
 
Сергей Таболин :

Bundan bahsetmiyorum.

" ve karar vermek için mantıksal NOT'u kullanın - bitleri ters çevirin, ancak terminal yok - MQL'de bitsel DEĞİL nasıl yapacağımı hatırlamıyorum ve çevrimiçi yardımı okumak istemiyorum "

Ya kanıt getirmekten ya da suları bulandırmamaktan bahsediyorum)))

"Herkes hata yapabilir. Sadece güçlüler bir hatayı kabul edebilir!". Henüz kimse bunu dile getirmediyse, o zaman bu benim bilgeliğim))). Birisi zaten söylediyse - bilge bir chela'nın bilgeliğini tekrarladım)))

hala iddialarını anlamadın mı? Benden sana bir şey kanıtlamamı mı istiyorsun? - niye ya? ))))

NOT aracılığıyla çoğalttım ve tartışılan tüm seçenekleri kontrol ettim:

 void OnStart ()
  {
//---
   uint TForiginal= OBJ_PERIOD_M1 | OBJ_PERIOD_M2 | OBJ_PERIOD_M3 | OBJ_PERIOD_M4 | OBJ_PERIOD_M5 | OBJ_PERIOD_M6 | OBJ_PERIOD_M10 |
                   OBJ_PERIOD_M12 | OBJ_PERIOD_M15 | OBJ_PERIOD_M20 | OBJ_PERIOD_M30 | OBJ_PERIOD_H1 ;

   uint TFwithNOT=(~ OBJ_PERIOD_H1 & OBJ_PERIOD_H2 )- 1 ;
   uint TFwithShift= OBJ_ALL_PERIODS >> 9 ;
   Print ( "TForiginal = " ,TForiginal);
   Print ( "TFwithNOT = " ,TFwithNOT);
   Print ( "TFwithShift = " ,TFwithShift);
  }
//+------------------------------------------------------------------+

DEĞİL seçeneği herhangi bir TF ile çalışır, ancak ilkeye göre doldurun (~ TF_altında & gerekli TF'den daha eski bir TF_bir) -1;

 

Herkese iyi günler! Bir soru daha...

Bir MQL5 programı var, (birçok) "Giriş parametreleri" ayarına sahip. Program hesaplamalar yapar ve gerektiğinde grafik nesneleri oluşturur/silir ve yönetir.

Ayarlar penceresinden giriş parametrelerini değiştirdikten sonra bir olay oluşturulur. Programın başlatılmasına yol açan ve prensipte gerekli olan nesnelerin "yeniden hesaplanması" ve "yeniden çizilmesi" olan Init, ancak olay Örneğin init, grafik periyodu değiştiğinde (vb.) de üretilir , bunun sonucunda süreç her seferinde ve hatta gerekli olmadığında tekrarlanır.

Soru: Bir etkinlikte program başlatma nasıl hariç tutulur Giriş parametreleri değişmediyse başlatılsın, ancak program (terminal) başladığında başlatmadan çıkılsın mı?

Olası seçenek: ayarlanan değerleri hatırlayın ve bir olayın meydana gelmesiyle karşılaştırın Init ve farklıysa, başlatmaya izin verin, ancak birçok girdi parametresi var...

 
Anzhela Sityaeva :

Herkese iyi günler! Bir soru daha...

Bir MQL5 programı var, (birçok) "Giriş parametreleri" ayarına sahip. Program hesaplamalar yapar ve gerektiğinde grafik nesneleri oluşturur/silir ve yönetir.

Ayarlar penceresinden giriş parametrelerini değiştirdikten sonra bir olay oluşturulur. Programın başlatılmasına yol açan ve prensipte gerekli olan nesnelerin "yeniden hesaplanması" ve "yeniden çizilmesi" olan Init, ancak olay Örneğin init, grafik periyodu değiştiğinde (vb.) de üretilir , bunun sonucunda süreç her seferinde ve hatta gerekli olmadığında tekrarlanır.

Soru: Bir etkinlikte program başlatma nasıl hariç tutulur Giriş parametreleri değişmediyse başlatılsın, ancak program (terminal) başladığında başlatmadan çıkılsın mı?

Olası seçenek: ayarlanan değerleri hatırlayın ve bir olayın meydana gelmesiyle karşılaştırın Init ve farklıysa, başlatmaya izin verin, ancak birçok girdi parametresi var...

İşte başka bir benzer sorun için bazı ipuçları

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

EA'da çalışıyor, ancak göstergede doğru değil, göstergenin başında müzik

Ihor Herasko , 2019.06.17 14:12

Evet.

  1. Başlatıldığında, gösterge global bir terminal değişkeni oluşturur. Gibi - yükledim.
  2. Selamlama oynanır.
  3. Boşaltmada (OnDeinit'te kontrol edilir), terminalin global değişkeni silinir.
  4. Çalışma sırasında TF değiştirilirse veya parametreler değiştirilirse, OnInit'e çıkarken terminalin global bir değişkeninin varlığı kontrol edilir. Eğer öyleyse, selamlama çalınmaz. Değilse, kulağa öyle geliyor.

 
Alexey Viktorov :

İşte başka, benzer bir sorun için bazı ipuçları



Cevabınız için teşekkürler, bizim durumumuzda, yazışmalardaki birkaç düzine değişikliğin durumunu, değişikliklerini izlemek için grafikte bir "kukla" aracılığıyla tanımlayarak izlememiz gerekecek gibi görünüyor veya gereksiz başlatmaya katlanmak çok fazla nesne yokken...
 
Anzhela Sityaeva :
Cevabınız için teşekkürler, bizim durumumuzda, yazışmalardaki birkaç düzine değişikliğin durumunu, değişikliklerini izlemek için grafikte bir "kukla" aracılığıyla tanımlayarak izlememiz gerekecek gibi görünüyor veya gereksiz başlatmaya katlanmak çok fazla nesne yokken...

Ama senin sorunun

Angela Siyaeva :

Herkese iyi günler! Bir soru daha...

Bir MQL5 programı var, (birçok) "Giriş parametreleri" ayarına sahip. Program hesaplamalar yapar ve gerektiğinde grafik nesneleri oluşturur/silir ve yönetir.

Ayarlar penceresinden giriş parametrelerini değiştirdikten sonra bir olay oluşturulur. Programın başlatılmasına yol açan ve prensipte gerekli olan nesnelerin "yeniden hesaplanması" ve "yeniden çizilmesi" olan Init, ancak olay Örneğin init, grafik periyodu değiştiğinde (vb.) de üretilir , bunun sonucunda süreç her seferinde ve hatta gerekli olmadığında tekrarlanır.

Soru: Bir etkinlikte program başlatma nasıl hariç tutulur Giriş parametreleri değişmediyse başlatılsın, ancak program (terminal) başladığında başlatmadan çıkılsın mı?

Olası seçenek: ayarlanan değerleri hatırlayın ve bir olayın meydana gelmesiyle karşılaştırın Init ve farklıysa, başlatmaya izin verin, ancak birçok girdi parametresi var...

Ve sizin durumunuzda, bu ipuçlarından biri bu gereksiz nesne yeniden çizimlerini önleyecektir. Ve bu nesneler OnDeinit() içinde silinirse, grafik değiştirilirken orada silinmesi yasaklanmalıdır.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Grafik kapatıldığında terminal global değişkeni nasıl kaldırılır?

Alexey Viktorov , 2019.06.29 08:40

Bu tabloya bir göz atın

REASON_PROGRAM

0

Uzman, ExpertRemove() işlevini çağırarak çalışmasını durdurdu

REASON_REMOVE

1

Program grafikten kaldırıldı

REASON_RECOMPILE

2

Program yeniden derlendi

REASON_CHARTCHANGE

3

Grafik sembolü veya periyodu değiştirildi

REASON_CHARTCLOSE

4

Grafik kapatıldı

REASON_PARAMETERS

5

Giriş parametreleri kullanıcı tarafından değiştirildi

REASON_ACCOUNT

6

Hesap ayarlarındaki bir değişiklik nedeniyle başka bir hesap etkinleştirildi veya ticaret sunucusuna yeniden bağlanıldı

REASON_TEMPLATE

7

Başka bir grafik şablonu uygulandı

REASON_INITFAILED

sekiz

OnInit() işleyicisi boş olmayan bir değer döndürdü

REASON_CLOSE

dokuz

Terminal kapatıldı


ve kodunuzun bu satırında

   if (reason== 1 ) GlobalVariableDel ( "val" );

Ama eğer probleminizin başlangıcını doğru hatırlıyorsam, durumu şu şekilde koymak daha iyidir.

   if (reason != REASON_CHARTCHANGE ) GlobalVariableDel ( "val" );

 
Alexey Viktorov :

Ama senin sorunun

Ve sizin durumunuzda, bu ipuçlarından biri bu gereksiz nesne yeniden çizimlerini önleyecektir. Ve bu nesneler OnDeinit() içinde silinirse, grafik değiştirilirken orada silinmesi yasaklanmalıdır.


Yön belli, deneyelim... Cevabınız için teşekkürler.
 
Codebase'de sadece standart SL/TP'nin değil, bir pozisyonu kapatma koşulunun belirtilebileceği bir Expert Advisor örneğine rastlamadım. Belki birisi söyler?
 
Sprut112 :
Codebase'de sadece standart SL/TP'nin değil, bir pozisyonu kapatma koşulunun belirtilebileceği bir Expert Advisor örneğine rastlamadım. Belki birisi söyler?

Açık durum ile kapalı durum arasındaki fark nedir?

 
Sprut112 :
Codebase'de sadece standart SL/TP'nin değil, bir pozisyonu kapatma koşulunun belirtilebileceği bir Expert Advisor örneğine rastlamadım. Belki birisi söyler?

Vladimir Karputov'un kodlarında bu tür koşullar vardı, ancak kodunu okumak için kendiniz öğrenmeniz gerekiyor)