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

 
MakarFX :

MetaQuotes Demo Sunucusunu Kapatma

MetaQuotes Yazılım A.Ş.

4 Mart 2009

5 Nisan 2009'da "demo.metaquotes.net" sunucusu durdurulacak. Aynı zamanda bir dakikalık geçmişi olan Tarih Merkezi de çalışmaya devam edecek.

Bu günden itibaren şirketimiz demo sunucusunu kullanmayı reddediyor. Şu anda MetaTrader 4 platformunda faaliyet gösteren firma sayısı o kadar fazla ki kendi sunucumuzun bakımını yapmaya gerek görmüyoruz.

Bu bir tür antik çağdır (başka bir sunucudan bahsedilmiştir). Bu yıl, birkaç kez, en son bir ay önce, normalde MetaQuotes-Demo'da yeni bir demo hesabı oluşturuldu.

Ayrıca, sunucu uzaksa neden hesap açma sihirbazında gösteriliyor ve ping atıyor? Takma yalnızca son adımda gerçekleşir.

 
Artyom Trishkin :

Göstergeden ilk kez geçmiş verilere erişildiğinde, yerel veriler yetersizse veri yüklemesi başlar ve fonksiyon hata verir.

Bunu çok iyi anlıyorum. Geçmişte çubuk eksikliği olsaydı, her iki işlev de 0 döndürür. Aksi takdirde, biri 0 döndürür ve ikincisi geçmişteki çubuk sayısını doğru şekilde döndürür. Neden birbiri ardına çağrılıyorlar:

Loader(): symbol( Symbol ()), timeframe( Period ()) 
  {
     Print ( __FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString (timeframe));
     ResetLastError ();
     Print ( __FUNCTION__ + " bars: " + ( string ) iBars (symbol, timeframe) ); // Данный вызов iBars() даёт 0 при перезапуске терминала
     Print ( __FUNCTION__ + " Error: " + ( string ) GetLastError ());
     Print ( __FUNCTION__ + " bars (2): " + ( string ) iBars ( Symbol (), Period ()) ); // Этот же вызов iBars() работает нормально
  }

Yalnızca veriler, ilk durumda Loader sınıfının hazır değişken üyelerinden (sembol ve zaman çerçevesi) (doğru başlatılmış) ve ikincisinde Symbol() ve Period() işlevlerinden (tam olarak sembol ve zaman çerçevesinde yazılanlarla aynı değerler). Değişken değerler, fonksiyon değerleriyle aynıdır (kontrol ettim). Ancak iBar'ların (sembol, zaman dilimi) kesinlikle doğru sembol ve zaman dilimi ile karıştığı yer benim için net değil. iBars(Symbol(), Period()) karışıklık yaratmazken. Bu yüzden, bir yerde terminalin çalışmasında bir hata olduğuna veya kaynak kodunun yanlış derlenmesine karar verdim.

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Если указаны параметры start_time и stop_time, то функция возвращает количество баров в диапазоне дат. Если эти параметры не указаны, то функция возвращает общее количество баров. Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не...
 
Mihail Matkovskij :

Bunu çok iyi anlıyorum. Geçmişte çubuk eksikliği olsaydı, her iki işlev de 0 döndürür. Aksi takdirde, biri 0 döndürür ve ikincisi geçmişteki çubuk sayısını doğru şekilde döndürür. Neden birbiri ardına çağrılıyorlar:

Yalnızca veriler, ilk durumda Loader sınıfının hazır değişken üyelerinden (sembol ve zaman çerçevesi) (doğru başlatılmış) ve ikincisinde Symbol() ve Period() işlevlerinden (tam olarak sembol ve zaman çerçevesinde yazılanlarla aynı değerler). Değişken değerler, fonksiyon değerleriyle aynıdır (kontrol ettim). Ancak iBar'ların (sembol, zaman dilimi) kesinlikle doğru sembol ve zaman dilimi ile karıştığı yer benim için net değil. iBars(Symbol(), Period()) karışıklık yaratmazken. Bu yüzden terminalin kendisinde bir yerde bir hata olduğuna karar verdim.

Ve şimdi, Igor'un tavsiye ettiği gibi şöyle yazın:

Loader(): symbol( Symbol ()), timeframe( Period ()) 
  {
     Print ( __FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString (timeframe));
     ResetLastError ();
     Print ( __FUNCTION__ + " bars: " + ( string ) iBars ( Symbol (), Period ())); // Данный вызов iBars() даёт 0 при перезапуске терминала
     Print ( __FUNCTION__ + " Error: " + ( string ) GetLastError ());
     Print ( __FUNCTION__ + " bars (2): " + ( string ) iBars (symbol, timeframe)); // Этот же вызов iBars() работает нормально
  }
Ve bunun bir sınıf kurucusu olduğunu ve başlatmadan önce bile çağrıldığını unutmayın.
 
Mihail Matkovskij :

Bunu çok iyi anlıyorum. Geçmişte çubuk eksikliği olsaydı, her iki işlev de 0 döndürür. Aksi takdirde, biri 0 döndürür ve ikincisi geçmişteki çubuk sayısını doğru şekilde döndürür. Neden birbiri ardına çağrılıyorlar:

Bir hikaye mi buldun?

sonra bu hikayeyi bir iddia şeklinde ve ardından bir soru şeklinde yayınlamaya karar verdik.

4401 hatası için ne yazmaya yardımcı olur?

ne yazdım?

Çubuk eksikliği ile bitmemiş bir çizelge arasındaki farkı anlıyor musunuz?

göstergenin başlatılmasıyla terminali yeniden başlattıktan sonra duruma sahipsiniz ve verileri OnInit()'ten önce yürütülecek olan MQL programının (sınıf yapıcısı) global başlatılmasında talep ediyorsunuz.


gitti, okuduğunuzdan daha hızlı yazın , forumda arama yapın 4401 - tüm cevaplar

 
MakarFX :

Benim lotum böyle hesaplanıyor

danışmanın başında durur ... ve kodun en sonuna koyar

 #property link        "http://www.mql5.com"
input double CheckLots = 0.01 ;
input int     Persent   = 5 ;
   double Lots= NormalizeDouble (AccountBalance()*CheckLots/ 1000 - 0.005 , 2 );  

OnTick işlevinde Lots değişkeni çağrıldığında, EA bulur ve yeniden hesaplar.

Bu imkansız. Bildiriyorsunuz ve başlatıyorsunuz, Lots değişkenine bir ifade atanmış.

 NormalizeDouble (AccountBalance()*CheckLots/ 1000 - 0.005 , 2 )

Böyle bir atama başlangıçta yalnızca bir kez yapılabilir, Lot'a her erişildiğinde otomatik olarak bir ifade atanması mümkün değildir. Mql'nin bunu yapabildiğini duymadım.

 
Seric29 :

Bu imkansız. Bildiriyorsunuz ve başlatıyorsunuz, Lot değişkenine bir ifade atanmış.

Böyle bir atama başlangıçta yalnızca bir kez yapılabilir, Lot'a her erişildiğinde otomatik olarak bir ifade atanması mümkün değildir. Mql'nin bunu yapabildiğini duymadım.

Baktım, bakiye değişince kur da değişiyor
 
MakarFX :
Baktım, bakiye değişince kur da değişiyor

Vay, kontrol edeceğim. Dizi elemanları ile değişkenleri fonksiyonlara göre başlatmanın mümkün olduğunu biliyorum ama bunun otomatik olarak değiştiğini bilmiyordum, bana öyle geliyor ki C++'da da öyle bir şey yok, daha sonra kontrol edeceğim.

 
Artyom Trishkin :
Ve bunun bir sınıf kurucusu olduğunu ve başlatmadan önce bile çağrıldığını unutmayın.

Bu, nesnenin otomatik olması durumunda geçerlidir. Ve onu new anahtar sözcüğüyle (OnInit() içinde) oluşturuyorum ve onu sil anahtar sözcüğüyle (OnDeinit() içinde) siliyorum. Yani, Loader türünde bir nesneye işaretçi kullanıyorum. Ama bu tür ayrıntılar pahasına, farkındasınızdır diye düşünüyorum... Bu nedenle OnInit() içerisinde bir loader oluşturuluyor ve bir hata olamaz.

Fonksiyonları değiştirmek istiyorsan, yine de denedim, sonuç yine aynı. Sadece mesajlar farklı bir sırada :)

 public :  
  Loader(): symbol( Symbol ()), timeframe( Period ()) 
  {
     Print ( __FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString (timeframe));
     Print ( __FUNCTION__ + " bars (2): " + ( string ) iBars ( Symbol (), Period ())); 
     ResetLastError ();
     Print ( __FUNCTION__ + " bars: " + ( string ) iBars (symbol, timeframe)); 
     Print ( __FUNCTION__ + " Error: " + ( string ) GetLastError ());
  }

Sonuç:

2020.06.24 23:10:48.568 Yükleyici::Yükleyici sembolü: EURUSD zaman çerçevesi: PERIOD_H1

2020.06.24 23:10:48.568 Yükleyici::Yükleyici çubukları (2): 140435

2020.06.24 23:10:48.568 Yükleyici::Yükleyici çubukları: 0

2020.06.24 23:10:48.568 Yükleyici::YükleyiciHatası: 4401

Bunun tam olarak terminal yeniden başlatıldığında ve yalnızca yeniden başlatıldığında gerçekleştiğine dikkatinizi çekiyorum! Terminali ilk başlattığınızdan beri (Windows'u başlattıktan sonra), örnek doğru çalışıyor.
Запуск платформы - Для продвинутых пользователей - Справка по MetaTrader 5
Запуск платформы - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 
Igor Makanu :

Bir hikaye mi buldun?

sonra bu hikayeyi bir iddia şeklinde yayınlamaya karar verdik.

Şikayet yok! Ve kaynak kodunu sağladıysam ve hatta çalışmasını test etmek için eylem dizisini çizdiysem kurgu nedir? Belli ki beni yanlış anladın...

Igor Makanu :

ayrıca, OnInit()'ten önce yürütülecek olan MQL programının (sınıf yapıcısı) genel başlatmasındaki verileri talep edersiniz.


gitti, okuduğunuzdan daha hızlı yazın , forumda arama yapın 4401 - tüm cevaplar


Bir önceki gönderide yazılan OnInit()'ten önce yürütülmemelidir. Test için eklediğim hem yazıları hem de kaynak kodunu dikkatsizce okuyorsunuz.

 
Stanislav Korotky :

Bu bir tür antik çağdır (başka bir sunucudan bahsedilir). Bu yıl, birkaç kez, en son bir ay önce, normalde MetaQuotes-Demo'da yeni bir demo hesabı oluşturuldu.

Ayrıca, sunucu uzaksa neden hesap açma sihirbazında gösteriliyor ve ping atıyor? Takma yalnızca son adımda gerçekleşir.

Evet, mobil terminalde bile bir şey kaydedilmiyor. Bu yılın başlarında her şey kayıt altına alındı.