Hatalar, hatalar, sorular - sayfa 2279

 
Vladislav Andruschenko :

Ben sadece cevaplamak istedim, ama kendi sorunuzu cevaplamışsınız.

Onay için teşekkürler)

 

Tünaydın,

Bu işlev çağrılarını strateji testinde çalıştırabilir misiniz lütfen? Sayesinde!

 bool scaleFix= false ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   ChartSetInteger ( ChartID (), CHART_SCALEFIX , true );
   scaleFix= ChartGetInteger ( ChartID (), CHART_SCALEFIX );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
//---
   if (rates_total!=prev_calculated)  
     {
       double max= iHigh ( _Symbol , _Period , iHighest ( _Symbol , _Period , MODE_HIGH , Period )); 
       double min= iLow ( _Symbol , _Period , iLowest ( _Symbol , _Period , MODE_LOW , Period ));
       if (scaleFix && ChartSetDouble ( ChartID (), CHART_FIXED_MAX ,max))
         printf ( "Chart fixed max is %f, should be %f" , ChartGetDouble ( ChartID (), CHART_FIXED_MAX ),max); 
       if (scaleFix && ChartSetDouble ( ChartID (), CHART_FIXED_MIN ,min))
         printf ( "Chart fixed min is %f, should be %f" , ChartGetDouble ( ChartID (), CHART_FIXED_MIN ),min); 
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
2018.09 . 06 12 : 54 : 55.757 2018.09 . 04 12 : 00 : 00    Chart fixed max is 1.171770 , should be 1.162740
2018.09 . 06 12 : 54 : 55.758 2018.09 . 04 12 : 00 : 00    Chart fixed min is 1.158410 , should be 1.155760
2018.09 . 06 12 : 54 : 55.765 2018.09 . 04 13 : 00 : 00    Chart fixed max is 1.171770 , should be 1.162670
2018.09 . 06 12 : 54 : 55.765 2018.09 . 04 13 : 00 : 00    Chart fixed min is 1.158410 , should be 1.155590
2018.09 . 06 12 : 54 : 55.772 2018.09 . 04 14 : 00 : 00    Chart fixed max is 1.171770 , should be 1.162280
2018.09 . 06 12 : 54 : 55.772 2018.09 . 04 14 : 00 : 00    Chart fixed min is 1.158410 , should be 1.154940
2018.09 . 06 12 : 54 : 55.781 2018.09 . 04 15 : 00 : 00    Chart fixed max is 1.171770 , should be 1.162070
2018.09 . 06 12 : 54 : 55.781 2018.09 . 04 15 : 00 : 00    Chart fixed min is 1.158410 , should be 1.154940
2018.09 . 06 12 : 54 : 55.789 2018.09 . 04 16 : 00 : 00    Chart fixed max is 1.171770 , should be 1.162020
2018.09 . 06 12 : 54 : 55.789 2018.09 . 04 16 : 00 : 00    Chart fixed min is 1.158410 , should be 1.154940
2018.09 . 06 12 : 54 : 55.799 2018.09 . 04 17 : 00 : 00    Chart fixed max is 1.171770 , should be 1.161980
2018.09 . 06 12 : 54 : 55.800 2018.09 . 04 17 : 00 : 00    Chart fixed min is 1.158410 , should be 1.153890

 
InstaForex-Sunucusunda , bir nedenden dolayı, tüm piyasa emirleri bir saniyeden fazla yürütülür.
 2018.09 . 06 14 : 08 : 22.754 Trades   '9424479' : instant buy 0.01 CADCHF at 0.7360 (deviation: 1000 )
2018.09 . 06 14 : 08 : 22.936 Trades   '9424479' : accepted instant buy 0.01 CADCHF at 0.7360 (deviation: 1000 )
2018.09 . 06 14 : 08 : 23.944 Trades   '9424479' : deal # 9539619 buy 0.01 CADCHF at 0.7360 done (based on order # 10514041 )
2018.09 . 06 14 : 08 : 23.944 Trades   '9424479' : order # 10514041 buy 0.01 / 0.01 CADCHF at 0.7360 done in 1195.200 ms
2018.09 . 06 14 : 08 : 23.944 Trades   '9424479' : modify # 10514041 buy 0.01 CADCHF sl: 0.0000 , tp: 0.0000 -> sl: 0.0000 , tp: 0.8350
2018.09 . 06 14 : 08 : 24.134 Trades   '9424479' : accepted modify # 10514041 buy 0.01 CADCHF sl: 0.0000 , tp: 0.0000 -> sl: 0.0000 , tp: 0.8350
2018.09 . 06 14 : 08 : 24.134 Trades   '9424479' : modify # 10514041 buy 0.01 CADCHF -> sl: 0.0000 , tp: 0.8350 done in 184.895 ms
2018.09 . 06 14 : 08 : 24.134 Trades   '9424479' : instant sell 0.01 CADCHF at 0.7350 , close # 10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000 )
2018.09 . 06 14 : 08 : 24.314 Trades   '9424479' : accepted instant sell 0.01 CADCHF at 0.7350 , close # 10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000 )
2018.09 . 06 14 : 08 : 25.323 Trades   '9424479' : deal # 9539620 sell 0.01 CADCHF at 0.7350 done (based on order # 10514042 )
2018.09 . 06 14 : 08 : 25.323 Trades   '9424479' : order # 10514042 sell 0.01 / 0.01 CADCHF at 0.7350 done in 1193.896 ms
2018.09 . 06 14 : 08 : 25.323 Trades   '9424479' : buy limit 0.01 CADCHF at 0.6360
2018.09 . 06 14 : 08 : 25.509 Trades   '9424479' : accepted buy limit 0.01 CADCHF at 0.6360
2018.09 . 06 14 : 08 : 25.510 Trades   '9424479' : order # 10514043 buy limit 0.01 / 0.01 CADCHF at market done in 181.861 ms
2018.09 . 06 14 : 08 : 25.510 Trades   '9424479' : cancel order # 10514043 buy limit 0.01 CADCHF at 0.6360
2018.09 . 06 14 : 08 : 25.691 Trades   '9424479' : accepted cancel order # 10514043 buy 0.00   at market
2018.09 . 06 14 : 08 : 25.691 Trades   '9424479' : cancel # 10514043 buy limit 0.01 CADCHF at market done in 181.474 ms
2018.09 . 06 14 : 08 : 25.692 Trades   '9424479' : buy stop 0.01 CADCHF at 0.8360
2018.09 . 06 14 : 08 : 25.878 Trades   '9424479' : accepted buy stop 0.01 CADCHF at 0.8360
2018.09 . 06 14 : 08 : 25.882 Trades   '9424479' : order # 10514044 buy stop 0.01 / 0.01 CADCHF at market done in 190.823 ms
2018.09 . 06 14 : 08 : 25.883 Trades   '9424479' : cancel order # 10514044 buy stop 0.01 CADCHF at 0.8360
2018.09 . 06 14 : 08 : 26.062 Trades   '9424479' : accepted cancel order # 10514044 buy stop 0.01 CADCHF at 0.8360
2018.09 . 06 14 : 08 : 26.062 Trades   '9424479' : cancel # 10514044 buy stop 0.01 CADCHF at market done in 183.056 ms

Aynı zamanda, bekleyenler ping'e yakındır. Demoda böyle bir önyargının nedeni ne olabilir?

 

Piyasada ürünü güncellerken İngilizce/Rusça sayfalarını nelerin değiştiğinin açıklamasıyla doldurdum ve yeni bir sürüm yayınladım ancak ürünümün "yenilikler" bölümünde açıklamamdan hiçbir şey çıkmadı.

En son sürüme karşı hiçbir belge olmadığı için bu açıklamayı düzenlemenin bir yolu bile yok.

değişikliklerin açıklaması nerede?

 
Tetyana Shcherba :

Piyasada ürünü güncellerken İngilizce/Rusça sayfalarını nelerin değiştiğinin açıklamasıyla doldurdum ve yeni bir sürüm yayınladım ancak ürünümün "yenilikler" bölümünde açıklamamdan hiçbir şey çıkmadı.

En son sürüme karşı hiçbir belge olmadığı için bu açıklamayı düzenlemenin bir yolu bile yok.


aynısı. beni rahatsız ettiğini düşündüm

 

"Tek testi başlat" menü öğesini seçtikten sonra

geliyor diye bir şey yok ve karşılık gelen tekli koşu yapılıyor. Tek bir çalışmanın başarılı bir şekilde başlatılması durumunda "Grafik" sekmesine veya bir ara olması durumunda "Günlük" sekmesine geçmek güzel olurdu.


Küçük bir kozmetik niggle gibi görünebilir.

 
Nikolai Semko :

Büyük bir dizinin bir bölümünü tek bir Z değeriyle doldurmam gerektiğinde, yapıyı kullanırım:


Birçoğu diyecek - neden bu kadar zor, çünkü daha kolay olabilir:

Ancak bilinmeyen bir nedenle, bir ara dizi kullanan ilk seçenek, ikincisinden belirgin şekilde daha hızlıdır.

Birkaç yıl önce, bu konuda SD'de zaten yazmıştım. Teşekkürler, sorun bulundu ve düzeltildi diye bir cevap aldım, bir sonraki derlemede iyi olacak.

Ama sorun devam ediyor.

Ve MT4'teki aynı test:

Windows'ta bir bellek özelliğiyle karşılaştınız

ArrayResize eklentisinden hemen sonra

 ArrayFill (arr, 0 ,size, 0 );
Bu, fiziksel belleğin gerçek tahsisini başlatır, böylece testte bu olmaz.


İşte bilgisayarımdan sonuçlar

 2018.09 . 06 16 : 25 : 44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill = 94
2018.09 . 06 16 : 25 : 44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 147
 
Ilyas :

Windows'ta bir bellek özelliğiyle karşılaştınız

ArrayResize eklentisinden hemen sonra

Bu, fiziksel belleğin gerçek tahsisini başlatır, böylece testte bu olmaz.

ArrayResize'da ME'de yerleşik olan profil oluşturucuyu ne ölçer?

 
fxsaber :

ArrayResize'da ME'de yerleşik olan profil oluşturucuyu ne ölçer?

ArrayResize işlevinin çalışma süresini ölçer.

TestArrayFill test kodu, dizi için "soğuk" bellek ayrılacak ve "sıcak" olma şansı olmayacak şekilde oluşturulmuştur


Açık olmak gerekirse, ArrayResize sanal bellek (veya işlem belleği) ayırır, ancak sanal belleğin hemen fiziksel sayfalar alacağına (veya zaten sahip olacağına) dair bir garanti yoktur.

Windows işletim sistemi, bir sanal bellek sayfasına ilk kez erişildiğinde, gerektiğinde fiziksel belleği dağıtacaktır.
Sayfanın boyutu 4KB, yani. "ısınmak" için tüm öğeleri ArrayFill aracılığıyla sıfırlamak (yazdığım gibi), ancak sıfırdan başlayarak yalnızca her 4096 / sizeof(dizi öğesi türü) mümkündü.


Çünkü MQL4'te değişkenlerin sıfırlanması garanti edilir, ardından MT4'teki ArrayResize dizi boyunca çalışır, onu sıfırlar, bu nedenle orada "soğuk" bellek etkisi olmaz.

 
Ilyas :

Ancak incelik. Teşekkür ederim! Belgelerde, "İncelikler" spoiler muhtemelen çok gecikmiştir.