Fehler, Irrtümer, Fragen - Seite 949

 
Renat:
Sie haben eine seltsame Einstellung zu Endgeräten und Ressourcen.

Das Handelsterminal hat keine Aufgabe, Ressourcen zu sparen, wenn seine Hauptaufgabe darin besteht, effektiv mit großen Datenmengen zu arbeiten. Außerdem können Sie sich nicht darüber beschweren, dass vier Kopien des Number Cruncher nicht genug Gigabyte Speicher im VPS haben.

Dies ist nicht das Problem, sondern das unterschiedliche Verhalten auf Win2003x64 Server (VPS) und Win7x64 Home.

http://file.karelia.ru/6v55j5/ das Video auf dem Link besagt, dass beim Starten des Terminals viel mehr zugewiesener Speicher verbraucht wird, als das Betriebssystem für diesen Prozess anzeigt.

 
olyakish:

Dies ist nicht das Problem, sondern das unterschiedliche Verhalten auf Win2003x64 Server (VPS) und Win7x64 Home.

http://file.karelia.ru/6v55j5/ das Video auf dem Link sagt, dass beim Starten des Terminals viel mehr zugewiesener Speicher verbraucht wird, als das Betriebssystem für diesen Prozess anzeigt.

Oh, wie alles läuft.

Das ist zu lang, um es zu erklären, und es hat nichts mit dem Terminal zu tun. Vergessen Sie es und sparen Sie nicht an dem VPS.

 
Renat:

Oh, wie verkorkst das ist.

Das ist zu lang, um es zu erklären, und es hat nichts mit dem Terminal zu tun. Vergessen Sie es und sparen Sie nicht an dem VPS.

Vielleicht nicht so sehr.

Es kann zum Beispiel sein, dass das Endgerät Dienste von Dritten in Anspruch nimmt, die mehr verbrauchen als das Endgerät selbst. Und auf meinem Laptop sind sie nur anfangs beim Starten zu sehen,

Warum wird dann so viel Speicher verbraucht wie bei der ersten Ausführung des Terminals - es reicht, den Dienst einmal auszuführen. (obwohl es fraglich ist, ob der Dienst Threads für jede Kopie des Terminals ausführen kann)

OK, ich werde anders fragen, wenn der Server 2008 auf einem VPN ist, wird es diesen Effekt nicht haben, wenn es zu lang zu erklären ist.

 
olyakish:

Vielleicht nicht so sehr.

Es kann zum Beispiel sein, dass das Endgerät Dienste von Dritten in Anspruch nimmt, die mehr verbrauchen als das Endgerät selbst. Auf meinem Laptop sind sie nur anfangs beim Starten zu sehen,

warum ist dann der Speicherverbrauch ähnlich wie beim ersten Start des Terminals - der Dienst muss nur einmal ausgeführt werden. (obwohl es fraglich ist, ob der Dienst Threads für jede Kopie des Terminals starten kann)

Ok, ich werde anders fragen, wenn der Server 2008 auf pps ist, wird es nicht diesen Effekt haben, wenn es zu lang ist, es zu erklären.

Ich habe auf dem VPS (Win XP) etwa 200 MB, die vom MT4-Terminal verbraucht werden.
 
Warum nicht erlauben (mit einem Häkchen in den Einstellungen), dass das Terminal einen Cache-Swap verwendet? Es wird einen vom Benutzer wählbaren Kompromiss zwischen Geschwindigkeit und Speicherplatzbedarf geben.
 

...Scheint ein einfacher Vorgang zu sein, aber die richtigen ganzzahligen Werte in Pips können nicht ermittelt werden. Hier ist der Code des Skripts:

void OnStart() {
//---
   double max_price = NormalizeDouble(ChartGetDouble(0, CHART_PRICE_MAX), _Digits);
   double min_price = NormalizeDouble(ChartGetDouble(0, CHART_PRICE_MIN), _Digits);
   
   double entry_price, stop_price, profit_price;
   entry_price = NormalizeDouble((max_price+min_price)/2, _Digits);
   stop_price = NormalizeDouble(entry_price-(entry_price-min_price)/2, _Digits);
   profit_price = NormalizeDouble(max_price-(max_price-entry_price)/2, _Digits);
   
   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
   
   Print("Entry: ", entry_price, ", Stop: ", stop_price, ", Profit: ", profit_price,
         ", Stop pips: ", stop_pips, ", Profit pips: ", profit_pips);
//---   
}

Hier sind die Ergebnisse des Laufs:

2013.03.29 16:42:03 Experiment_Script (EURUSD,H4) Einstieg: 1.29445, Stop: 1.28453, Gewinn: 1.30438, Stop-Punkte: 991, Gewinn-Punkte: 993
2013.03.29 16:41:57 Experiment_Script (GBPUSD,H4) Einstieg: 1.50465, Stop: 1.49348, Gewinn: 1.51583, Stop-Punkte: 1117, Gewinn-Punkte: 1117

Sie sollte 992 und 993 (für EURUSD), 1117 und 1118 (für GBPUSD) betragen. Können Sie mir sagen, wie ich ein korrektes Ergebnis erhalte?

 
Rone:

...

Versuchen Sie, durch 2,0 statt nur durch 2 zu dividieren.

Das Ergebnis einer Ganzzahl-Operation ist eine Ganzzahl, und es spielt keine Rolle, dass das Ergebnis in Double geschrieben wird.

 
muallch: Warum nicht erlauben (mit einem Häkchen in den Einstellungen), dass das Terminal einen Cache-Swap verwendet? Es wird einen vom Benutzer wählbaren Kompromiss zwischen Geschwindigkeit und Speicherbelastung geben.
Wenden Sie sich mit solchen Fragen lieber direkt an den Service Desk. Andernfalls werden sie verloren gehen.
 
fyords: Versuchen Sie, durch 2,0 statt nur durch 2 zu dividieren.

Nein, das ist nicht das Problem. Das Teilbare ist ein Double.

Das Problem wird höchstwahrscheinlich durch diese Leitungen verursacht:

   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
Rone:
Versuchen Sie, den Wert "(entry_price - stop_price)/_Point" ohne Rundung zu drucken.
 

Bitte teilen Sie uns mit, ob jemand schon einmal auf so etwas gestoßen ist.

Es gibt einen Code:

//+------------------------------------------------------------------+
double date[];
//+------------------------------------------------------------------+
void OnInit()
{
   ArrayResize(date,3);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   Print("ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+
Es funktioniert in Echtzeit im Terminal:
DH      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
LN      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
DG      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
In der Testversion führt derselbe Code jedoch zu einem anderen Ergebnis:
MN      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
OG      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
IM      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
Grund der Beschwerde: