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

 
taramortom #:
J'utilise l'optimisation génétique.

Il semble que ce soit le cas. Apparemment, dans l'optimisation génétique, les paramètres responsables de l'activation/désactivation des oscillateurs sont fortement dominants par rapport aux paramètres de l'oscillateur. En d'autres termes, lors de la reproduction de la génération suivante, un parent possédant le gène de l'oscillateur désactivé tuera une série de descendants d'autres parents possédant le gène activé de cet oscillateur. En d'autres termes, ces descendants seront écartés en raison de paramètres incorrects, ne donneront pas de descendance et l'évolution se retrouvera rapidement dans une impasse.
Essayez d'examiner le comportement du testeur lors d'une optimisation complète sur un court intervalle de la période de test. Y aura-t-il des omissions inutiles de combinaisons dans ce cas ?

 
Yuriy Bykov #:

Il semble que ce soit le cas. Apparemment, lors de l'optimisation génétique, les paramètres responsables de l'activation/désactivation des oscillateurs sont fortement dominants par rapport aux paramètres de l'oscillateur. En d'autres termes, lors de la reproduction de la génération suivante, un parent possédant le gène de l'oscillateur désactivé tuera une partie de la progéniture d'autres parents possédant le gène activé de cet oscillateur. En d'autres termes, ces descendants seront écartés en raison de paramètres incorrects, ne donneront pas de descendance et l'évolution se retrouvera rapidement dans une impasse.
Essayez d'examiner le comportement du testeur lors d'une optimisation complète sur un court intervalle de la période de test. Y aura-t-il des omissions inutiles de combinaisons dans ce cas ?


Oui, le problème réside dans la combinaison : algorithme génétique + blocage de certaines combinaisons. Avec une optimisation complète, tout fonctionne correctement, mais l'optimisation complète prendra un temps irréaliste.

J'espérais pouvoir montrer d'une manière ou d'une autre à l'optimiseur que ces variantes sont inacceptables et qu'il ne devrait même pas essayer de les utiliser et se concentrer sur d'autres variantes. En fait, les choses se passent comme vous l'avez écrit.

 
Alexey Petrov #:

Vous pouvez créer un emploi en freelance et choisir parmi les développeurs qui postulent pour votre emploi

https://www.mql5.com/fr/job

Je te remercie, j'ai posté mon annonce et j'espère pouvoir enfin trouver une solution :)
 

Bonjour !


A quoi ressemble le code qui permet à l'Expert Advisor de négocier à certaines heures dans MQL5 ? Je n'arrive pas à le porter depuis MQL4.


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID) ;

double time = Hour() + Minute()*0.01 ;

Comment("datum ",inpoint,

"\n", "step ",iter,

"n", "time ",time,

n", "price", "Bid,

"\n", "price", PriceBid) ;

if(time <= Stop_work_time)

{

//si(Type==BUY || Type==ALL)newbuyorder() ;

//si(Type==SELL || Type==ALL)newsellorder() ;

in() ;

takestop() ;

stoporders() ;

connecté() ;

delorders() ;

}

else

{

takestop() ;

delorders() ;

}

}

Dossiers :
kachinmind.mq4  38 kb
 
EfremovSergey à un Expert Advisor de négocier à certaines heures dans MQL5 ? Je ne peux pas le porter depuis MQL4.


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID) ;

double time = Hour() + Minute()*0.01 ;

Comment("datum ",inpoint,

"{n", "step ",iter,

"n", "time",time,

"n", "price", "Bid",

"\n", "price", PriceBid) ;

if(time <= Stop_work_time)

{

//si(Type==BUY || Type==ALL)newbuyorder() ;

//si(Type==VENTE || Type==ALL)newsellorder() ;

in() ;

takestop() ;

stoporders() ;

connecté() ;

delorders() ;

}

else

{

takestop() ;

delorders() ;

}

}

La mise en œuvre de cette tâche dans mq5 peut être répétée en utilisant

MqlDateTime
 

Bonjour et bonne humeur à tous !

Chers experts ! !! Pourriez-vous me dire ce qui ne va pas dans ce code (la partie où l'erreur apparaît périodiquement est surlignée en jaune) ?

//+------------------------------------------------------------------+
//|                                            Proba (version_1).mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Global variables
MqlRates pArray[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ArraySetAsSeries(pArray,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!DownwardTrendline())
     {
      Print("Ошибка при создании линии DownwardTrendline!!! ", GetLastError());
      return;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool DownwardTrendline()
  {
   int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   CopyHigh(_Symbol,_Period,0,candles,pHigh);
   int candleHigh = ArrayMaximum(pHigh,0,candles);
   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
   ObjectDelete(0,"DnwardTrendline");
   ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,
                pArray[candleHigh].high,pArray[0].time,pArray[0].high);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
   return(true);
  }
//+------------------------------------------------------------------+

Pourquoi périodiquement, puis fonctionne dans le testeur de stratégie, puis ne fonctionne pas et dans le journal apparaît ce message :


Cordialement, Vladimir.

 
MrBrooklin #:

Bonjour et bonne humeur à tous !

Chers experts ! !! Veuillez me dire ce qui ne va pas dans ce code (la partie du code où l'erreur apparaît périodiquement est surlignée en jaune) :

Pourquoi périodiquement, puis fonctionne dans le testeur de stratégie, puis ne fonctionne pas et dans le journal apparaît ce message :


Cordialement, Vladimir.

Mettez une vérification après la ligne

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

si Données < 1 quelque chose, d'une manière ou d'une autre, crie.

 
Alexey Viktorov #:

Mettre une coche après la ligne

si Données < 1 quelque chose, crier d'une manière ou d'une autre.

Bonjour Alexey, merci pour l'astuce ! Je vais essayer maintenant.

Cordialement, Vladimir.

 

Au lieu de :

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

Je l'ai mis :

   if(CopyRates(_Symbol,_Period,0,candles,pArray)==-1)
     {
      Print("Ошибка копирования исторических данных в массив pArray[]!!!", GetLastError());
      return(false);
     }

et tout a fonctionné. Il trace laligne régulièrement et comme il se doit, mais seulement maintenant, à chaque nouveau démarrage de l'Expert Advisor dans le testeur de stratégie, des messages apparaissent périodiquement :

2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка копирования исторических данных в массив pArray[]!!!4003
2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка при создании линии DownwardTrendline!!! 4003

Cela aura-t-il un impact négatif sur le code ou puis-je l'oublier ?

Cordialement, Vladimir.

 
MrBrooklin testeur de stratégie:

Cela aura-t-il une incidence négative sur le code ou puis-je l'oublier ?

Cordialement, Vladimir.

Qu'est-ce qui vous empêche de faire cela ?

bool .....()
{
if(Data>0)
{
..................
................

return true;
}
return false;
}