Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Lassen Sie uns zu servicedesk gehen.
Bitte klären Sie, wie genau die Dienste abgeschaltet wurden? Haben Sie die Dienste gelöscht (eingefroren)? Bitte fügen Sie die Protokolle der Problem-Agenten bei.
Die Proxy-Einstellungen in Ihren Protokollen sind etwas seltsam. Haben Sie die Proxy-Einstellungen in Ihre Agenten-Konfigurationen geschrieben? Bitte hängen Sie die common.ini Ihres Managers an.
Es stellt sich heraus, dass ich mir die Protokolle von gestern angesehen habe...
Alles ist in Ordnung.
Nächster Code:
Ausgänge:
2011.12.05 22:01:28 RectLabel (EURUSD,H1) pos = {12, 176314750}
2011.12.05 22:01:28 RectLabel (EURUSD,H1) andere = {123, 456}
Die Initialisierungsliste hat also nicht funktioniert, es ist Müll in der Struktur. Ist dies ein Fehler oder nicht?
//| testDeinit.mq5 |
//| Copyright 2011, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
class CTest_Expert
{
public:
CTest_Expert();
~CTest_Expert() { Deinit(); }
void Processing();
void Deinit();
bool StartTimer(int nCounSeconds);
void StopTimer();
string Exp_Symbol;
};
CTest_Expert arSymbols[];
//+------------------------------------------------------------------+
//| Конструктор |
//+------------------------------------------------------------------+
CTest_Expert::CTest_Expert()
{
}
//+------------------------------------------------------------------+
//| Функция удаления динамических объектов |
//+------------------------------------------------------------------+
void CTest_Expert::Deinit()
{
Print("Эксперт выгружен с пары "+Exp_Symbol);
Comment("");
}
//+------------------------------------------------------------------+
//|Инициализация таймера |
//+------------------------------------------------------------------+
bool CTest_Expert::StartTimer(int nCountSeconds)
{
return(EventSetTimer(nCountSeconds));
}
//+------------------------------------------------------------------+
//|Уничтожение таймера |
//+------------------------------------------------------------------+
void CTest_Expert::StopTimer()
{
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ArrayResize(arSymbols, 5);
arSymbols[0].Exp_Symbol="0";
arSymbols[1].Exp_Symbol="1";
arSymbols[2].Exp_Symbol="2";
arSymbols[3].Exp_Symbol="3";
arSymbols[4].Exp_Symbol="4";
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
int nSize=ArraySize(arSymbols);
Print("nSize = " + IntegerToString(nSize));
for(int i=0;i<nSize;i++)
{
Print("-------"+IntegerToString(i)+"--------");
arSymbols[i].Deinit();
Print("---------------");
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
Ergebnis
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:00:00
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14:02:00 PM testDeinit (EURUSD,M5) E.T.A. wurde von Paar 3 entladen
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Heruntergeladen von Paar 2
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Heruntergeladen von Paar 1
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Ekspert entladen von Paar 0
2011.12.06 16:59:52 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:52 testDeinit (EURUSD,M5) 14
2011.12.06 16:59:52 testDeinit (EURUSD,M5) -------4--------
2011.12.06 16:59:52 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) Der Experte wird von Paar 3 entladen
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------3--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) Der Experte wurde von Paar 2 entladen
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------2--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) Der Experte wurde von Paar 1 entladen
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) Der Experte wird von Paar 0 entladen
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------0--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) nSize = 5
Ich kann die Deinitialisierung nicht verstehen. Warum erscheint die Meldung "Expert unloaded from pair ..." zweimal?
CTest_Expert arSymbols[];
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
int nSize=ArraySize(arSymbols);
Print("nSize = " + IntegerToString(nSize));
for(int i=0;i<nSize;i++)
{
Print("-------"+IntegerToString(i)+"--------");
arSymbols[i].Deinit();
Print("---------------");
}
}
Dies ist ein Fehler im Compiler - er hat keine Fehlermeldung erzeugt, die besagt, dass eine Struktur auf diese Weise nicht initialisiert werden kann (ohne Kopierkonstruktor). Behoben. Vielen Dank für diesen Beitrag.
Äh, nein. Weitere Einzelheiten sind hier zu finden.
In Help heißt es, dass einfache Strukturen als Variablen einfachen Typs kopiert werden können:
Warum kann dies dann nicht in der Initialisierungsliste geschehen? Ich möchte nicht explizit Konstruktoren definieren, um die oben verwendete Initialisierungsmethode nicht zu verlieren.
Ich bin nicht grundsätzlich kritisch, sondern möchte nur den letzten Kommentar hören.
Wenn ich das Terminal mit 12 geöffneten Fensternlaufen lasse, verbraucht es 325 MB RAM.
Wenn der Expert Advisor für mehrere Währungen ausgeführt wird, verbraucht das Terminal 990 MB Speicherplatz. Der Expert Advisor zeigt 5-Minuten-Balken der letzten 48 Stunden an und verwendet den Indikator "Fraktal". Wenn ich nur mit einem Symbol handele, dauert es 400 Mb. Ist dieser Speicherverbrauch normal, wenn man mit 12 Symbolen arbeitet?
Ich führe einen Multi-Currency Expert Advisor aus, das Terminal verbraucht 990 Mb RAM. Der Experte betrachtet die 5-Minuten-Balken der letzten 48 Stunden und verwendet den Indikator "Fractal". Wenn ich nur mit einem Symbol handele, dauert es 400 Mb. Ist dieser Speicherverbrauch normal, wenn man mit 12 Symbolen arbeitet?
Lesen Sie den Artikel Prinzipien der ökonomischen Neuberechnung von Indikatoren
Ich vergaß zu erwähnen, dass das Fraktal ein Standardindikator ist und alle Berechnungen alle fünf Minuten stattfinden.
Woher wissen die Entwickler, was Sie tun und wie Sie es tun?
Versuchen Sie, die Ursache des Problems in Ihrem Code klar zu formulieren und zu erklären.
Beschreiben Sie das Problem auf technische Art und Weise.
Wie können Entwickler wissen, was Sie tun und wie Sie es tun?
Versuchen Sie, den Kern des Problems in Ihrem Code klar zu formulieren und herauszustellen, unter welchen Bedingungen der Verbrauch zu steigen beginnt, und zeigen Sie den Protokollausdruck.
Beschreiben Sie das Problem auf technische Art und Weise.