Erreurs, bugs, questions - page 2817

 
TesterMaxProfit.all_symbols.M1.20200727.20200805.42.405 CEC9C4975113F378E5F241968A332.opt

Pouvez-vous me dire quel algorithme est utilisé pour former le nom des fichiers d'opt-in ?

 

sur mt4 - il me semble que ChartSaveTemplate(...) fonctionne avec des erreurs, build 1280

Voici le script :

//+------------------------------------------------------------------+
//|                                              Test.mq4            |
//|                   Copyright 2006-2015, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "2006-2015, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property strict
#property  show_inputs

void OnStart()
{
   string s_Symbol = Symbol();
   string s_EA_Name = "eStomper_02";
   string s_MagicChartIDSuffix = "MagicChart";
   int i_Magic = 1;
   string s_GlobalMagicChartID;
   string s_Period = _Period;
   
   s_GlobalMagicChartID = StringConcatenate(s_EA_Name,"-",s_MagicChartIDSuffix,"-",i_Magic,"-",s_Symbol,"-",s_Period);
   if(ChartSaveTemplate(0,s_GlobalMagicChartID))
   {
      Print("s_GlobalMagicChartID=",s_GlobalMagicChartID);     
   }
   else
   {
      Print(__FUNCTION__," Couldnot Save template : " + s_GlobalMagicChartID + ".tpl" + "Error = " + GetLastError());
      return;
   }
}
//+------------------------------------------------------------------+
для М1 и М5 имя шаблона усекается, _Period - в имени шаблона не присутсвует..

смотрю полный игнор, но вот если сделать так, то все в порядке. явно в компиляторе ошибка, что-то типа неправильного выравнивания.


//+------------------------------------------------------------------+
//|                                              Test.mq4            |
//|                   Copyright 2006-2015, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "2006-2015, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property strict
#property  show_inputs

void OnStart()
{
   string s_Symbol = Symbol();
   string s_EA_Name = "eStomper_02";
   string s_MagicChartIDSuffix = "MagicChart";
   int i_Magic = 1;
   string s_GlobalMagicChartID;
   string s_Period = _Period;
   
   if (s_Period == "1" || s_Period == "5")
   {
      s_Period = "0" + s_Period;
   }
   s_GlobalMagicChartID = StringConcatenate(s_EA_Name,"-",s_MagicChartIDSuffix,"-",i_Magic,"-",s_Symbol,"-",s_Period);
   if(ChartSaveTemplate(0,s_GlobalMagicChartID))
   {
      Print("s_GlobalMagicChartID=",s_GlobalMagicChartID);     
   }
   else
   {
      Print(__FUNCTION__," Couldnot Save template : " + s_GlobalMagicChartID + ".tpl" + "Error = " + GetLastError());
      return;
   }
}
//+------------------------------------------------------------------+



 
fxsaber:

Pouvez-vous me dire par quel algorithme est généré le nom des fichiers opt-files ?

Il s'agit d'un MD5 à partir des valeurs des paramètres d'entrée du conseiller expert (pour les paramètres optimisés - start-step-stop, pour les paramètres non optimisés - valeur actuelle).

42 - ticks réels, optimisation par symboles

Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 
Pavel Verveyko:
est-il possible de contrôler ce chiffre via MQL ? (c'est la boîte de la ligne sur le graphique en MT)
Utilisation de cette bibliothèque
 
Rorschach:
Avec l'aide de cette bibliothèque

de nombreux remerciements

 

Question de clarification. Comment connaître le symbole et la période d'un indicateur par sa poignée ?

Il existe une fonctionIndicatorParameters dans l'API MQL pour lire les paramètres de l'indicateur, mais elle n'est pas suffisante : à quoi bon connaître, par exemple, la période, si le symbole et le délai ne sont pas connus ? Je ne sais pas s'il s'agit d'une omission ou si je ne trouve pas comment faire - veuillez me donner le lien.

 
Stanislav Korotky:

Question de clarification. Comment puis-je savoir, à partir d'une poignée d'indicateur, pour quel symbole et quelle période de temps il a été créé ?

pas du tout

je ne peux pas. L'année dernière@fxsaber a posé la même question, mais en ce qui concerne les fichiers - comment connaître le nom du fichier à partir d'un handle, il n'y a pas de solution

J'ai trouvé une suggestion de conteneur pour un handle de fichier de@fxsaber

struct FILE
{
  const int handle;
  
  FILE( const string FileName, const int Flags ) : handle(::FileOpen(FileName, Flags)) {}  
  ~FILE( void ) { if (this.handle != INVALID_HANDLE) ::FileClose(this.handle); }
};
 
Stanislav Korotky:

Question de clarification. Comment connaître le symbole et la période d'un indicateur par sa poignée ?

Il existe une fonction IndicatorParameters dans l'API MQL pour lire les paramètres de l'indicateur, mais elle n'est pas suffisante : à quoi bon connaître, par exemple, la période, si le symbole et le délai ne sont pas connus ? S'il y a un problème ou si je ne peux pas le trouver, veuillez me donner le lien.

Igor Makanu:

pas du tout

Oui, vous pouvez.

bool FindIndicatorByHandle(long handle, string &symbol, ENUM_TIMEFRAMES &timeframe, long &ChartId, int &sub_win, string &Name) {
   long chart_id =ChartFirst();
   while (chart_id!=-1) {
      int total_sub = (int)ChartGetInteger(chart_id,CHART_WINDOWS_TOTAL);
      int total_ind;
      for(int i=0; i<total_sub; i++) {
         total_ind = ChartIndicatorsTotal(chart_id,i);
         for (int j=0; j<total_ind; j++) {
            string name = ChartIndicatorName(chart_id,i,j);
            if (ChartIndicatorGet(chart_id,i,name)== handle) {
               ChartId=chart_id;
               symbol= ChartSymbol(chart_id);
               timeframe=ChartPeriod(chart_id);
               sub_win=i;
               Name=name;
               return true;
            }
         }
      }
      chart_id=ChartNext(chart_id);
   }
   return false;
}

Je joins le script de test.

Le résultat du travail sur le scénario :

2020.08.07 01:39:43.435 All_Indicators (US30Index,M1)   Market Watch: CADRUB  USDRUB  USDCAD  EURCAD  EURUSD  .BrentCrud  XAUUSD  GBPAUD  BTCUSD  US30Index  USDJPY  Symb001  USD-BTC  EURCHF  USDCHF  
2020.08.07 01:39:43.498 All_Indicators (US30Index,M1)   Chart EURUSD PERIOD_M1 has indicators: TestMinMax(handle=10)   RVI(10)(handle=11)   RSI_154(14)(handle=12)   
2020.08.07 01:39:43.499 All_Indicators (US30Index,M1)   Chart .BrentCrud PERIOD_M1 has indicators: 
2020.08.07 01:39:43.500 All_Indicators (US30Index,M1)   Chart CADRUB PERIOD_M1 has indicators: 
2020.08.07 01:39:43.501 All_Indicators (US30Index,M1)   Chart USDCAD PERIOD_M5 has indicators: 
2020.08.07 01:39:43.502 All_Indicators (US30Index,M1)   Chart US30Index PERIOD_M1 has indicators: MA(100)(handle=13)   TestMinMax(handle=14)   
2020.08.07 01:39:43.505 All_Indicators (US30Index,M1)   Chart .BrentCrud PERIOD_D1 has indicators: DinTF(handle=15)   
2020.08.07 01:39:43.509 All_Indicators (US30Index,M1)   Chart USDRUB PERIOD_M1 has indicators: Bands(200)(handle=16)   Env(10)(handle=17)   MACD(12,26,9)(handle=18)   RSI(14)(handle=19)   
2020.08.07 01:39:43.523 All_Indicators (US30Index,M1)   Chart EURUSD PERIOD_M30 has indicators: MA(15)(handle=20)   TestMinMax(handle=21)   
2020.08.07 01:39:43.527 All_Indicators (US30Index,M1)   Chart .BrentCrud PERIOD_M5 has indicators: 
2020.08.07 01:39:43.527 All_Indicators (US30Index,M1)   Chart USDCAD PERIOD_M15 has indicators: DinTF(handle=22)   
2020.08.07 01:39:43.527 All_Indicators (US30Index,M1)   Chart USDCAD PERIOD_H1 has indicators: pMa(2 - 940)(handle=23)   !Channels_3.05)(handle=24)   
2020.08.07 01:39:43.528 All_Indicators (US30Index,M1)   Chart USDCAD PERIOD_H4 has indicators: 
2020.08.07 01:39:43.528 All_Indicators (US30Index,M1)   Chart XAUUSD PERIOD_M1 has indicators: Tick(handle=25)   
2020.08.07 01:39:43.528 All_Indicators (US30Index,M1)   --------------------------------------------------------------------------------
2020.08.07 01:39:43.528 All_Indicators (US30Index,M1)   Попробуем найти индикатор по хэндлу h = 18
2020.08.07 01:39:43.529 All_Indicators (US30Index,M1)   Нашли: USDRUB  PERIOD_M1, chart_id = 128968168864101623, подокно = 1, короткое имя = MACD(12,26,9)
Dossiers :
 
Nikolai Semko:

Vous pouvez.

Votre code fonctionnera probablement

Je n'ai jamais utiliséChartIndicatorGet(), ce n'est que maintenant que je l'ai trouvé dans la référence

mais de toute façon, il est plus facile de lier le handle de l'indicateur directement au nom de l'indicateur dans votre code, même si cela peut être la tâche de trouver ce que l'utilisateur a lancé.


merci ! intéressant

 
Stanislav Korotky:

Au fait, je me suis souvenu que vous êtes un fan de Renko.
À en juger par votre question, vous êtes déjà sur le point de réaliser que votre déclaration précédente concernant l'impossibilité d'appliquer des indicateurs et de superposer des EA sur le reno formé sur le canevas est fausse.
Hourra !