Toute question d'un PROFI à un SUPER PROFI - 1. - page 40

 
olyakish:

pouvez-vous me donner un exemple du nombre que vous avez fixé

20 ou 0.00020 ?


Bien sûr, 20 ! Elle est toujours fixée en points :

   int      slippage,            // проскальзывание

Mais ce n'est pas suffisant pour un écart à 5 chiffres ! Comme déjà conseillé ci-dessus, un écart plus important est raisonnable, ou mieux encore, doublez l'écart !

 
borilunad:

Bien sûr, 20 ! Toujours fixé en points :

Mais ce n'est pas suffisant pour un écart à 5 chiffres ! Comme indiqué ci-dessus, il est judicieux d'augmenter l'écart ou, mieux encore, de le doubler !

Merci, j'en suis conscient. Vous avez répondu à une question qui ne vous était pas adressée.

 
olyakish:

Merci, j'en suis conscient. Vous avez répondu à une question qui ne vous était pas adressée.


Désolé, je ne savais pas que tu passais un examen ! ;)
 

Y a-t-il un mode dans le terminal où il enregistre les plantages ?

Je parle de crashs silencieux, quand le terminal se ferme sans erreur.

Je veux trouver la raison pour laquelle le terminal se bloque parfois pendant l'optimisation. La stratégie utilise le dll. Tout le code est enveloppé dans des try - catch, avec sa propre journalisation, mais il ne montre aucune erreur, néanmoins le terminal se plante parfois à la génétique massive. Le système global est indétectable, peut se planter après 100 itérations, ou survivre après 10 000, avec un ensemble et une gamme de paramètres absolument identiques.

Le gestionnaire de tâches ne montre aucune fuite de mémoire (je comprends que ce n'est pas le meilleur outil pour ce genre de choses, mais quand même).

 
TomKein:

Y a-t-il un mode dans le terminal où il enregistre les plantages ?

Je parle de crashs silencieux, quand le terminal se ferme sans erreur.

Je veux trouver la raison pour laquelle le terminal se bloque parfois pendant l'optimisation. La stratégie utilise le dll. Tout le code est enveloppé dans des try - catch, avec sa propre journalisation, mais il ne montre aucune erreur, néanmoins le terminal se plante parfois à la génétique massive. Le système global est indétectable, peut se planter après 100 itérations, ou survivre après 10 000, avec un ensemble et une gamme de paramètres absolument identiques.

Le gestionnaire de tâches ne montre aucune fuite de mémoire (je comprends que ce n'est pas le meilleur outil pour ce genre de choses, mais quand même).

A mon avis, la dll dans le testeur ne fonctionne pas, donc elle ne ralentit pas le processus !
 

Pourquoi écrire quelque chose dont vous n'avez aucune idée ?

 
TomKein:

Le terminal dispose-t-il d'un mode où il enregistre les plantages ?

Si le terminal vous informe du crash, vous pouvez le vider manuellement et l'utiliser ensuite pour le résoudre.

Si le terminal se ferme sans fenêtre de notification de crash, vous devez faire un dump par vous-même. J'ai un projet appelé breakpad à partir de chrome, il n'est pas trop difficile de se connecter à presque n'importe quel projet et il écrit des dumps de manière fiable. À un moment donné, j'ai débogué la dll pour le terminal de cette façon.

 

Existe-t-il un moyen d'obtenir le nom de la variable sous forme de chaîne ?

int varTakeProfit = 1;
Print( VarName( varTakeProfit ), " = ", varTakeProfit ); // varTakeProfit = 1

string VarName( int Var )
{
   ???
}
 
#define  VarName(x) #x


int varTakeProfit = 1;
Print( VarName( varTakeProfit ), " = ", varTakeProfit ); //  varTakeProfit = 1

 
Andrey Khatimlianskii:

Existe-t-il un moyen d'obtenir le nom de la variable sous forme de chaîne ?

Il n'y a pas de telle chose dans MQL. Si une telle tâche se présente, je fais ce qui suit :

struct ValueAndName
{
   double   fValue;                     // Значение переменной
   string   sName;                      // Имя переменной

   ValueAndName(double _fValue, string _sName)
   {
      SetData(_fValue, _sName);
   }

   void SetData(double _fValue, string _sName)
   {
      fValue = _fValue;
      sName = _sName;
   }
};

VarAndName g_stVarTakeProfit(12.0, "VarTakeProfit");
VarAndName g_stVarStopLoss(20.0, "VarStopLoss");

void OnStart()
{
  Print("Значение переменной ", g_stVarTakeProfit.sName, " равно: ", g_stVarTakeProfit.fValue);
  Print("Значение переменной ", g_stVarStopLoss.sName, " равно: ", g_stVarStopLoss.fValue);
}