Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Allons à Servicedesk.
Veuillez préciser comment les services ont été déconnectés exactement ? Avez-vous supprimé (gelé) les services ? Veuillez joindre les journaux des agents à l'origine du problème.
Les paramètres du proxy dans vos journaux sont quelque peu étranges. Avez-vous écrit les paramètres du proxy dans la configuration de votre agent ? Veuillez joindre le fichier common.ini de votre gestionnaire.
Il s'avère que j'ai regardé les registres d'hier...
Tout va bien.
Code suivant :
Sorties :
2011.12.05 22:01:28 RectLabel (EURUSD,H1) pos = {12, 176314750}
2011.12.05 22:01:28 RectLabel (EURUSD,H1) other = {123, 456}
Donc, la liste d'initialisation n'a pas fonctionné, il y a des déchets dans la structure. Est-ce un bug ou non ?
//| 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()
{
//---
}
//+------------------------------------------------------------------+
Résultat
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. a été déchargé de la paire 3
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Téléchargé de la paire 2
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Téléchargé de la paire 1
2011.12.06 16:59:52 testDeinit (EURUSD,M5) Ekspert déchargé de la paire 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) L'expert est déchargé de la paire 3
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) L'expert a été déchargé de la paire 2.
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) L'expert est déchargé de la paire 1
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------1--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) ---------------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) L'expert est déchargé de la paire 0
2011.12.06 16:59:51 testDeinit (EURUSD,M5) -------0--------
2011.12.06 16:59:51 testDeinit (EURUSD,M5) nSize = 5
Je ne comprends pas la désinitialisation. Pourquoi le message "Expert unloaded from pair ..." apparaît-il deux fois ?
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("---------------");
}
}
Il s'agit d'un bug dans le compilateur - il n'a pas généré d'erreur disant qu'une structure ne peut pas être initialisée de cette façon (sans constructeur de copie). Fixe. Merci pour cet article.
Euh, non. Plus de détails ici.
Dans l'aide, il est dit que les structures simples peuvent être copiées en tant que variables de types simples :
Alors pourquoi ne peut-on pas le faire dans la liste d'initialisation ? Je ne veux pas définir explicitement les constructeurs, afin de ne pas perdre la méthode d'initialisation utilisée ci-dessus.
Je ne critique pas le principe, je veux juste entendre le commentaire final.
Je lance le terminal avec 12 fenêtres ouvertes, il consomme 325 Mo de RAM.
En exécutant le conseiller expert multidevises, le terminal consomme 990 Mo de mémoire. Le conseiller expert affiche les barres de 5 minutes pour les dernières 48 heures et utilise l'indicateur "fractal". Si je n'exécute que des transactions sur un seul symbole, cela prend 400 Mo. Cette consommation de mémoire est-elle normale lorsque l'on travaille avec 12 symboles ?
J'utilise un Expert Advisor multi-devises, le terminal consomme 990 Mb de RAM. L'expert examine les barres de 5 minutes des dernières 48 heures et utilise l'indicateur "fractal". Si je n'exécute que des transactions sur un seul symbole, cela prend 400 Mo. Cette consommation de mémoire est-elle normale lorsque l'on travaille avec 12 symboles ?
Consultez l'article Principes du recalcul économique des indicateurs
J'ai oublié de mentionner que la fractale est un indicateur standard + tous les calculs ont lieu toutes les cinq minutes.
Comment les développeurs savent-ils ce que vous faites et comment vous le faites ?
Essayez de formuler et d'expliquer clairement l'origine du problème dans votre code.
Décrivez le problème de manière technique.
Comment les développeurs peuvent-ils savoir ce que vous faites et comment vous le faites ?
Essayez de formuler clairement et de mettre en évidence l'essence du problème dans votre code. A quelles conditions la consommation commence à augmenter, faites et montrez l'impression du journal.
Décrivez le problème de manière technique.