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

 
Alexey Kozitsyn:
Oui, les paramètres d'entrée ne peuvent pas être modifiés. Pour être honnête, je ne comprends pas pourquoi vous devez changer cette valeur en fonction des cotations à 3/5 chiffres ? Vous devez définir cette valeur dans les paramètres d'entrée. Ne pouvez-vous pas simplement écrire 100 (si 3/5 chiffres) et ne pas vous en soucier ?

En fait, j'optimise sur 5 chiffres - plus d'historique, mais je négocie sur 4 et utilise des paramètres différents, y compris les points. Je ne veux pas confondre les paramètres - c'est pourquoi cette solution est la bonne.

 
-Aleks-:

En fait, j'optimise sur 5 chiffres - plus d'historique, mais je négocie sur 4 et utilise des paramètres différents, y compris les points. Je ne veux pas confondre les paramètres - c'est pourquoi cette solution est la bonne.

Cela devrait fonctionner comme suit

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}
 
Vitaly Muzichenko:

Cela devrait fonctionner

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}


Merci - je l'essaierai dès que j'aurai pu mettre en place l'EA et la faire fonctionner...

 

Je reçois également cette erreur - comment puis-je la corriger ?

'MODE_MAIN' - l'identifiant du recenseur est déjà défini initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

 
-Aleks-:

Dans une telle situation, j'obtiens une erreur - aidez-moi à comprendre pourquoi l'erreur se produit - dans MQL5 vous ne pouvez pas changer la valeur d'une variable entrée par l'utilisateur ?

Vous ne pouvez pas !

Si vous avez décidé d'utiliser MQL4_to_MQL5.mqh, je vous recommande vivement de ne pas le faire. Comme il a été écrit pour les exemples, qui sont dans la description de la bibliothèque. C'est-à-dire qu'il n'est pas du tout universel. En particulier, il existe une version très limitée de MarketInfo (pour ne faire que des exemples). Mais de bonnes solutions existent. Il est donc préférable de ne pas utiliser ce mqh lui-même, mais de n'en tirer que des choses utiles.

 
-Aleks-:

Je reçois également cette erreur - comment puis-je la corriger ?

'MODE_MAIN' - l'identifiant du recenseur est déjà défini initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

Renommer. Les champs de TOUS les énumérateurs doivent être différents. Et vous avez les mêmes champs dans l'enum ADX_MODE et l'enum MAIN_SIGNAL_MODE.
 
fxsaber:
Changement de nom. Les champs de TOUTES les énumérations doivent être différents. Et vous avez les mêmes champs dans l'enum ADX_MODE et l'enum MAIN_SIGNAL_MODE.

Je l'ai commenté pour l'instant... Je ne pense pas que ce soit critique...

Cependant, j'ai compilé un EA en utilisant deux bibliothèques - fonctions de trading et traduction d'autres fonctions de 4 à 5.

Je suis toujours malade du testeur dans 5 - je ne trouve pas où les indicateurs peuvent être ajoutés dans la visualisation et comment filtrer le journal...

Je ne peux pas encore voir les ordres ouverts, hein.

 

Comment l'interpréter :

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Lors du paramétrage en attente erreur imprévue - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder a envoyé une requête pour définir un ordre. Type : BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 échec de l'achat stop 1.00 RTS-12.16 à 68180 sl : 67260 tp : 68200 [Expiration non valide].
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Lors du paramétrage en attente erreur imprévue - 4756

 
-Aleks-:

Comment l'interpréter :

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Lors du paramétrage en attente erreur imprévue - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder a envoyé une requête pour définir un ordre. Type : BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 échec de l'achat stop 1.00 RTS-12.16 à 68180 sl : 67260 tp : 68200 [Expiration non valide].
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Lors du paramétrage en attente erreur imprévue - 4756

Il y a un problème avec le paramètre d'expiration.
 
-Aleks-:

Jusqu'à présent, je suis malade du testeur en cinq - je ne trouve pas où les indicateurs peuvent être ajoutés à la visualisation et comment filtrer le journal...

Pas encore de moyen de voir les commandes en cours, hein.

J'utilise un script MT4 converti de 2006 pour afficher l'historique du testeur. Il montre tout aussi facilement que MT4.
Raison: