Fehler, Irrtümer, Fragen - Seite 2279

 
Vladislav Andruschenko:

wollte gerade antworten, aber SIE haben Ihre eigene Frage beantwortet.

Danke für die Bestätigung)

 

Guten Tag,

Könnten Sie bitte dafür sorgen, dass diese Funktionsaufrufe im Strategietest funktionieren? Danke!

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

 
Aus irgendeinem Grund werden alle Marktaufträge auf dem InstaForex-Server länger als eine Sekunde ausgeführt
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

Gleichzeitig sind die anhängigen Fälle nahe am Ping. Was kann der Grund für eine solche Schieflage auf der Demo sein?

 

Als ich das Produkt auf dem Marktplatz aktualisierte, füllte ich die englischen/russischen Seiten mit einer Beschreibung der Änderungen aus und veröffentlichte die neue Version, aber nichts von meiner Beschreibung erschien im Abschnitt "Was ist neu" meines Produkts.

Ich kann diese Beschreibung nicht einmal bearbeiten, da es überhaupt kein Dokument für die neueste Version gibt.

Wo ist die Beschreibung der Änderungen?

 
Tetyana Shcherba:

Als ich das Produkt auf dem Marktplatz aktualisierte, füllte ich die englischen/russischen Seiten mit einer Beschreibung der Änderungen aus und veröffentlichte die neue Version, aber nichts von meiner Beschreibung erschien im Abschnitt "Was ist neu" meines Produkts.

Es gibt auch keine Möglichkeit, diese Beschreibung zu bearbeiten, da es kein Dokument zur letzten Version gibt.


Das Gleiche. Ich dachte, es sei eine Störung.

 

Nach Auswahl des Menüpunktes "Einzeltest durchführen"

nichts darauf hindeutet, dass ein entsprechender Einzeltest läuft und durchgeführt wurde. Es ist ratsam, zur Registerkarte "Grafik" zu wechseln, wenn der einzelne Lauf erfolgreich war, oder zur Registerkarte "Protokoll", wenn er fehlgeschlagen ist.


Es mag wie eine kleine kosmetische Kleinigkeit erscheinen.

 
Nikolai Semko:

Wenn ich einen Teil eines großen Arrays mit einem einzigen Z-Wert füllen muss, verwende ich eine Konstruktion:


Viele werden sagen, warum ist das so kompliziert, es geht auch einfacher:

Aber aus einem unbekannten Grund ist die erste Variante, die ein Zwischenfeld verwendet, viel schneller als die zweite Variante

Zu dieser Frage habe ich bereits vor einigen Jahren an SD geschrieben. Ich erhielt eine Antwort, in der mir mitgeteilt wurde, dass ich das Problem gefunden und behoben habe und dass es in der nächsten Version behoben sein würde.

Aber das Problem bleibt bestehen.

Ich habe denselben Test in MT4 durchgeführt:

Sie sind auf eine Besonderheit der Speicheroperation in Windows gestoßen

Direkt nach ArrayResize add

ArrayFill(arr,0,size,0);
Dadurch wird die tatsächliche Zuweisung von physischem Speicher eingeleitet, so dass dies nicht während des Tests geschieht.


Hier sind die Ergebnisse von meinem Computer

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:

Sie sind auf eine Speicherbesonderheit in Windows gestoßen

Unmittelbar nach ArrayResize add

Dadurch wird die tatsächliche Zuweisung von physischem Speicher eingeleitet, so dass dies nicht während des Tests geschieht.

Was misst dann der eingebaute ME-Profiler bei ArrayResize?

 
fxsaber:

Was misst der eingebaute ME-Profiler dann bei ArrayResize?

Sie misst die Laufzeit der Funktion ArrayResize.

Der TestArrayFill-Testcode ist so aufgebaut, dass "kalter" Speicher für das Array zugewiesen wird, ohne dass die Möglichkeit besteht, "heißen" Speicher zu erhalten.


Um das klarzustellen, ArrayResize weist virtuellen Speicher (oder Prozessspeicher) zu, aber es gibt keine Garantie, dass der virtuelle Speicher sofort physische Seiten erhält (oder bereits hat).

Windows weist bei Bedarf physischen Speicher zu, wenn das erste Mal auf die virtuelle Speicherseite zugegriffen wird.
Die Seite ist 4KB groß, d.h. zum "Aufwärmen" konnten nicht alle Elemente über ArrayFill (wie ich geschrieben habe) auf Null gesetzt werden, sondern nur alle 4096 / sizeof(Array Elementtyp) beginnend bei Null.


Da das Nullsetzen von Variablen in MQL4 garantiert ist, durchläuft ArrayResize in MT4 das Array und setzt es auf Null, so dass es dort keinen "kalten" Speichereffekt gibt.

 
Ilyas:

Allerdings mit Subtilität. Ich danke Ihnen! Die Dokumentation ist wahrscheinlich längst überfällig für einen "Subtlety"-Spoiler.