Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1436

 
taramortom #:
Ich verwende die genetische Optimierung.

Dann scheint dies der Fall zu sein. Offenbar sind bei der genetischen Optimierung die Parameter, die für das Ein- und Ausschalten der Oszillatoren verantwortlich sind, in Bezug auf die Oszillatorparameter stark dominant. Das bedeutet, dass bei der Zucht der nächsten Generation ein Elternteil, der das Gen für den ausgeschalteten Oszillator hat, einen Haufen Nachkommen von anderen Eltern mit dem eingeschalteten Gen für diesen Oszillator töten wird. Das heißt, diese Nachkommen werden durch die Bedingung falscher Parameter verworfen, werden keine Nachkommen zeugen, und die Evolution wird schnell in eine Sackgasse geraten.
Versuchen Sie, das Verhalten des Testers bei vollständiger Optimierung in einem kurzen Intervall der Testperiode zu betrachten. Werden in diesem Fall unnötig viele Kombinationen ausgelassen?

 
Yuriy Bykov #:

Dann scheint dies der Fall zu sein. Offenbar sind bei der genetischen Optimierung die Parameter, die für das Ein- und Ausschalten der Oszillatoren verantwortlich sind, in Bezug auf die Oszillatorparameter stark dominant. Das heißt, bei der Zucht der nächsten Generation wird ein Elternteil, der das Gen für den ausgeschalteten Oszillator hat, eine Reihe von Nachkommen anderer Eltern mit dem eingeschalteten Gen für diesen Oszillator töten. Das heißt, diese Nachkommen werden durch die Bedingung falscher Parameter verworfen, werden keine Nachkommen zeugen, und die Evolution wird schnell in eine Sackgasse geraten.
Versuchen Sie, das Verhalten des Testers bei vollständiger Optimierung in einem kurzen Intervall der Testperiode zu betrachten. Werden in diesem Fall unnötig viele Kombinationen ausgelassen?


Ja, das Problem liegt in der Kombination: genetischer Algorithmus + Blockierung bestimmter Kombinationen. Bei vollständiger Optimierung funktioniert alles korrekt, aber die vollständige Optimierung dauert unrealistisch lange.

Ich hatte gehofft, dass ich dem Optimierer irgendwie zeigen kann, dass solche Varianten inakzeptabel sind und dass er gar nicht erst versuchen sollte, sie zu verwenden und sich auf andere Varianten konzentrieren sollte. In der Tat geschieht es so, wie Sie geschrieben haben.

 
Alexey Petrov #:

Sie können eine freiberufliche Stelle einrichten und unter den Entwicklern, die sich auf Ihre Stelle bewerben, auswählen.

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

Ich danke dir, ich habe meine Anzeige gepostet und hoffe, dass ich endlich eine Lösung finden kann :)
 

Hallo!


Wie sieht der Code, der es dem Expert Advisor ermöglicht, zu bestimmten Stunden zu handeln, in MQL5 aus? Ich kann ihn nicht von MQL4 portieren.


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

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

Comment("datum ",inpoint,

"\n", "step ",iter,

"n", "time ",time,

"n", "Preis", "Bid,

"\n", "preis", PriceBid);

if(time <= Stop_work_time)

{

//if(Typ==BUY || Typ==ALL)newbuyorder();

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

in();

takestop();

stoporder();

connected();

delorders();

}

sonst

{

takestop();

delorders();

}

}

Dateien:
kachinmind.mq4  38 kb
 
EfremovSergey es einem Expert Advisor ermöglicht, zu bestimmten Stunden zu handeln, in MQL5 aus? Ich kann ihn nicht von MQL4 portieren.


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

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

Comment("datum ",inpoint,

"{n", "Schritt ",iter,

"n", "Zeit",time,

"n", "Preis", "Bid",

"\n", "Preis", PriceBid);

if(time <= Stop_work_time)

{

//if(Typ==BUY || Typ==ALL)newbuyorder();

//if(Typ==Verkaufen || Typ==ALL)neuverkaufenbestellen();

in();

takestop();

stoporders();

connected();

delorders();

}

sonst

{

takestop();

delorders();

}

}

Die Implementierung dieser Aufgabe in mq5 kann wiederholt werden mit

MqlDateTime
 

Guten Morgen und gute Laune allerseits!

Liebe Experten!!! Könnten Sie mir bitte sagen, was in diesem Code falsch ist (der Teil, wo der Fehler periodisch erscheint, ist gelb hervorgehoben)?

//+------------------------------------------------------------------+
//|                                            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);
  }
//+------------------------------------------------------------------+

Warum periodisch, dann funktioniert im Strategietester, dann funktioniert nicht und im Log erscheint diese Meldung:


Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Guten Morgen und gute Laune, allerseits!

Liebe Experten!!! Bitte sagen Sie mir, was in diesem Code falsch ist (der Teil des Codes, in dem der Fehler periodisch auftritt, ist gelb markiert):

Warum periodisch, dann funktioniert es im Strategietester, dann funktioniert es nicht und im Log erscheint diese Meldung:


Mit freundlichen Grüßen, Vladimir.

Setzen Sie eine Prüfung nach der Zeile

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

wenn Daten < 1 etwas, irgendwie schreien.

 
Alexey Viktorov #:

Setzen Sie einen Haken hinter die Zeile

wenn Data < 1 etwas, schreien Sie irgendwie.

Guten Morgen Alexey, danke für den Hinweis! Ich werde es jetzt versuchen.

Mit freundlichen Grüßen, Vladimir.

 

Anstelle von:

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

Ich habe es eingebaut:

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

und alles funktionierte. Es zieht dieLinie stetig und wie es sollte, aber nur jetzt bei jedem neuen Start des Expert Advisor in der Strategie-Tester Nachrichten erscheinen periodisch:

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

Wird sich das dann irgendwie negativ auf den Code auswirken oder kann ich es "vergessen"?

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin Strategietester:

Wirkt sich das dann irgendwie negativ auf den Code aus oder kann ich das "vergessen"?

Mit freundlichen Grüßen, Vladimir.

Was hindert Sie daran, dies zu tun

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

return true;
}
return false;
}
Grund der Beschwerde: