Hatalar, hatalar, sorular - sayfa 2050

 

Söylesene, hafta sonu MT4 ve MT5 için çalışan bir demo sunucusu var mı?

 
Kirill Belousov :

Söylesene, hafta sonu MT4 ve MT5 için çalışan bir demo sunucusu var mı?

Bunun için demo sunucusu ve ticaretin gerçek parayla değil "demo" üzerinde gerçekleştirildiği demo :) ve diğer her şey (ayrıca teklif alma zamanı) neredeyse gerçek hayattaki gibidir.

 
Kirill Belousov :

Söylesene, hafta sonu MT4 ve MT5 için çalışan bir demo sunucusu var mı?

Hafta sonları alıntı yoktur.
Tekliflerin alınmasını taklit edebilirsiniz.
 

MT5'i çevrimdışı duruma getiriyoruz (örneğin sol proxy) ve böyle bir danışman başlatıyoruz

 void OnInit ()
{
   Print ( "Hello World!" );
}

Günlükteki çıktı, danışmanın - BAG'nin başlatılmasından sadece beş saniye sonra olacaktır.


Böyle bir göstergeyi çevrimdışı başlatmak

 #property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots 0

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[] )
{
   return (rates_total);
}

void OnInit ()
{
   const datetime LastBar = ( datetime ) SeriesInfoInteger ( _Symbol , PERIOD_CURRENT , SERIES_LASTBAR_DATE );

   Print (LastBar);
   Print ( Bars ( _Symbol , PERIOD_CURRENT , LastBar - 24 * 3600 , LastBar)); // 0
   Print ( GetLastError ());                                               // ERR_HISTORY_NOT_FOUND
}

Barlarda bir serseri alıyoruz. Ayrıca, aynı serseri, örneğin OnTimer'da tekrarlanan aramalarla olacaktır. Ve Expert Advisor'da Bars çağrılırsa her şey yoluna girecek. Gösterge durumunda, bu açık bir hatadır.

 2017.10 . 22 23 : 35 : 40.678 Terminal        Alpari Limited MT5 x64 build 1653 started (Alpari Limited)
2017.10 . 22 23 : 35 : 40.678 Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00 , Intel Core i7- 2700 K  @ 3.50 GHz, RAM: 11310 / 16301 Mb, HDD: 827 / 30000 Mb, GMT+ 02 : 00
Belgelerdeki PS Açıklaması hiçbir şeyi açıklamıyor

Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не  синхронизированы  с торговым сервером, то функция вернет нулевое значение.

Güncellemeye neden olan gösterge ile aynı periyoda sahip bir zaman serisini güncelleme talebi göndermek son derece istenmeyen bir durumdur. Gösterge ile aynı sembol periyodu için veri talep edilmesinin istenmemesi, geçmiş verilerin göstergenin çalıştığı aynı iş parçacığında güncellenmesinden kaynaklanmaktadır. Bu nedenle, bir perçin olasılığı yüksektir.

 

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

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

fxsaber , 2017.10.17 15:07

Alt diziler, üst dizilere dönüştürülemez. Ama eleman eleman - evet. Bunun kaldırılması güzel olacak bir ArrayCopy sınırlaması var.

Bu durumda dilde yanlış bir şey var

 struct RATES : public MqlRates {};

void f1( RATES& ) {}

void f2( MqlRates & ) {}
void f2( MqlRates &[] ) {}

void OnStart ()

{
   MqlRates a = { 0 };  
  
  f1(a); // 'a' - parameter conversion not allowed
  
  RATES b[ 1 ] = { 0 };
  
  b[ 0 ] = a; // no problem
  a = b[ 0 ]; // no problem
  
  f2(b[ 0 ]); / / no problem
  f2(b);     // 'f2' - no one of the overloads can be applied to the function call
}


Sarı ve kırmızı çizgiler birbiriyle çelişiyor. Yapıdan kalıtım varsa, yapıcı, atama operatörü değişmez ve alanlar eklenmezse, çocuğun ebeveyne dönüştürülmesi veya tersi sorunsuz gerçekleşmelidir. Sarı çizgiler de bunu doğruluyor. Ancak, bazı durumlarda serseriler vardır - kırmızı.
 
fxsaber :

Bu durumda dilde yanlış bir şey var

derleyicim bana verdi


 
Kirill Belousov :

derleyicim bana verdi

Evet, mesaj gönderdim.
 
   int tim=( int ) FileGetInteger (aFileName, FILE_CREATE_DATE );
   int cur_tim=( int ) TimeCurrent ();

   RefreshRates ();
   if ( FileGetInteger (aFileName, FILE_EXISTS )== 1 )
       if (tim> 0 )
         if ((cur_tim-tim)> 120 ) 
           {
             Print ( " ttt   " + TimeToString (cur_tim)+ "  " + TimeToString (tim));
             FileDelete (aFileName);
             Print ( "Обновление файла " );
             return false ;
           }

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); zamanı güncellemez.

Bir dosya oluşturuyorum ve 60 saniye sonra onu silmek istiyorum, dosya siliniyor ve int tim=( int ) FileGetInteger (aFileName, FILE_CREATE_DATE ); derlemeden sonraki ilk dosyanın zamanını döndürür. Windows penceresinde dosyanın silindiğini ve yeni bir saat ile oluşturulduğunu görüyorum.

RefreshRates yardımcı olmuyor...

 

int tim=(int)FileGetInteger(aFileName,FILE_MODIFY_DATE);

doğru çalışıyor

 
Vladimir Pastushak :

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); zamanı güncellemez.

Bir dosya oluşturuyorum ve 60 saniye sonra onu silmek istiyorum, dosya siliniyor ve int tim=( int ) FileGetInteger (aFileName, FILE_CREATE_DATE ); derlemeden sonraki ilk dosyanın zamanını döndürür. Windows penceresinde dosyanın silindiğini ve yeni bir saat ile oluşturulduğunu görüyorum.

RefreshRates yardımcı olmuyor...

Dosya oluşturma kodu nerede?

Silmeden önce dosyayı kapatıyor musunuz?

RefreshRates'in bununla ne ilgisi var?

Beşten mi dört kişiden mi bahsediyorsun?