Questions des débutants MQL5 MT5 MetaTrader 5 - page 1218

 
Pineapple88:

Je l'ai corrigé, tout semble fonctionner).

J'ai transféré deux indicateurs MA à la fonction OnInit.

Je comprends que nous créons seulement le handle de l'indicateur dans la fonction OnInit et que nous effectuons toutes les autres manipulations avec les tableaux dans la fonction OnTick et que nous le vérifions à chaque tick ?

Oui, nous créons le handle de l'indicateur dans OnInit. Et toutes les autres opérations sont implémentées dans OnTick.

 
Vladimir Karputov:

Oui, la poignée de l'indicateur est créée dans OnInit. Et le reste du travail est implémenté dans OnTick.

Je l'ai, merci !

 
L'optimisation d'un EA dans MT5 est une chose nécessaire et utile. Mais voici la question : pour quelle période sont les meilleurs paramètres pour l'opération EA afin de garantir sa rentabilité à l'avenir ? On estime que l'optimisation doit être effectuée tous les mois. Mais l'optimisation garantit que le dépôt ne sera pas perdu au moins dans le mois qui suit ?
 
BORIS GOLICIN:
L'optimisation d'un EA dans MT5 est une chose nécessaire et utile. Mais voici la question : pour quelle période sont les meilleurs paramètres pour le fonctionnement de l'EA qui garantissent son équilibre financier dans le futur ? On estime que l'optimisation doit être effectuée tous les mois. Mais l'optimisation garantit que le dépôt ne sera pas perdu au moins dans le mois qui suit ?

pour une garantie au secteur bancaire )

 
BORIS GOLICIN:
L'optimisation du conseiller expert dans MT5 est utile et nécessaire. Mais voici la question : pour quelle période les meilleurs paramètres de l'expert lui garantissent d'atteindre le seuil de rentabilité à l'avenir ? On estime que l'optimisation doit être effectuée tous les mois. Mais l'optimisation garantit que le dépôt ne sera pas perdu au moins dans le mois qui suit ?

À mon avis, l'optimisation est inutile. Il n'est bon que pour estimer le montant des pertes que vous avez subies au cours d'une période donnée et le montant des bénéfices que vous auriez pu réaliser. En outre, la situation du marché peut changer à tout moment, et toute l'optimisation sera perdue. Pour qu'une stratégie fonctionne plus longtemps en mode automatique, vous ne devez pas être gourmand. N'essayez pas de tirer le maximum du marché. La société de courtage ne le permettra pas.

 

Voici ce que j'ai pu trouver sur Internet à propos de l'optimisation :

Supposons que nous ayons un morceau d'histoire de 15 ans (au moins 10), disons de 2000 à 2015. Nous divisons cette pièce en plusieurs périodes : La période 2000-2003 est notre test rétrospectif, la période 2003-2012 est la période d'optimisation, la période 2012-2015 est le test prospectif. Après l'optimisation, nous effectuons les tests préalables habituels en sélectionnant 10 à 20 ensembles les plus performants. Ensuite, nous soumettons ces ensembles sélectionnés à un test à rebours. Les résultats devraient être similaires à ceux obtenus lors des essais avant. Les ensembles qui ont passé le test sont conservés pour une comparaison ultérieure. Ensuite, nous effectuons le test sur les ensembles restants dans l'ensemble de l'historique et nous sélectionnons celui qui donne de meilleurs résultats que les autres. Par conséquent, nous nous retrouvons avec un seul ensemble de paramètres qui est le plus approprié.
Comment sélectionner les ensembles lors de la première étape - l'essai préalable ? Très simple : le plus important pour nous à ce stade est le type de courbe d'équilibre. Idéalement, il devrait s'agir d'une ligne droite allant du coin inférieur gauche au coin supérieur droit. Cela dit, il ne sert à rien de regarder tous les meilleurs ensembles d'affilée - ils sont souvent presque identiques.

 

Bon après-midi à tous !

Lorsque l'on accède au gestionnaire de l'indicateur ATR, les 30 premières secondes donnent des valeurs étranges.

Vous n'arrivez pas à trouver la cause de ce problème ?

int ATRdefinition = 0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   ATRdefinition = iATR(_Symbol,_Period,14);
   if(ATRdefinition == INVALID_HANDLE)
     {
      Print("Ошибка создания Хендла");
     }

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   string signal = "";

   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   double ATRarray[];
   ArraySetAsSeries(ATRarray,true);

   CopyBuffer(ATRdefinition,0,0,3,ATRarray);
   
   double ATRValue = NormalizeDouble(ATRarray[0],5);

   Print("ATRVALUE: ",ATRValue);
  }
Dossiers :
ATR.png  51 kb
 
Pineapple88:

Bonne journée à tous !

Lorsque l'on accède au gestionnaire de l'indicateur ATR, les 30 premières secondes donnent des valeurs étranges.

Je ne peux pas comprendre quelle est la raison ?

Vérifiez-vous si l'indicateur est prêt ?

//--- determine the number of values calculated in the indicator 
   int calculated=BarsCalculated(handle); 

(insérez votre pseudo au lieu de"pseudo")

 

Il s'avère que cette donnée(402082) n'est pas suffisante pour calculer l'indicateur?

Je pensais que la fonctionBarsCalculated devait donner une erreur (-1) s'il n'y a pas assez de données pour le calcul.

Dossiers :
ATR2.png  21 kb
 
Pineapple88:

Il s'avère que cette donnée(402082) n'est pas suffisante pour calculer l'indicateur?

Je pensais que la fonctionBarsCalculated devait donner une erreur (-1) s'il n'y a pas assez de données pour le calcul.

Il semble que le terminal continue à gonfler l'historique - respectivement, l'indicateur est recalculé en permanence. Ou, autre option : dans votre terminal, vous avez défini un TRES grand nombre de barres à afficher sur le graphique et votre ordinateur est TRES faible.


Ajouté.

Vérifié sur MetaTrader 5 x64 build 2470 et avec le paramètre "Show bars" de 100000 - avec l'historique téléchargé depuis longtemps. Le code a fonctionné parfaitement.