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

 
new-rena:

5 livres pour une réponse ?

)

Attendre...

Eh bien, si la question nécessite un travail individuel et que le résultat est un code fini, tout est possible...
 

Après-midi. L'indicateur a besoin d'obtenir des données d'un autre indicateur, lors du chargement de l'indicateur l'historique est affiché, les nouvelles valeurs ne sont pas mises à jour, s'il vous plaît conseillez ce qui est l'erreur dans la boucle ou ailleurs :

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,   // Количество просчитанных баров
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit;
   int counted_bars = IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit = Bars - counted_bars - 500;
   for (int i=limit; i>=0; i--)
   {
     Buf_1[i]=iCustom(Symbol(), 0,"ATR", 0, i);//При подстановке любого индикатора нет обновления!!!
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

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

Dérapage - la constante ne peut être modifiée Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

 
-Aleks-:

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

Dérapage - la constante ne peut être modifiée Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

Il n'y a pas de telle chose dans 5

MarketInfo

Je ne sais pas pour le glissement)

 
new-rena:

Celui-là n'est pas dans les 5pc.

MarketInfo

Pourquoi diable - pourquoi ne le met-il pas dans les erreurs...

Quel type d'analogue dois-je utiliser ?

 
-Aleks-:

Oh, des conneries - pourquoi ne le met-il pas en erreur...

Quel type d'analogue dois-je utiliser ?

Le week-end dernier, ce même fil de discussion portait sur le passage au 5-circa.

De mon poste et retour lire tous les postes sur 2-3 pages

https://www.mql5.com/ru/forum/6343/page662#comment_2930149

Вопросы от начинающих
Вопросы от начинающих
  • www.mql5.com
Форум трейдеров MQL5.community
 
new-rena:

Le même fil de discussion du week-end dernier traitait du passage à 5k.

Depuis mon poste et en arrière lire tous les postes sur 2-3 pages

https://www.mql5.com/ru/forum/6343/page662#comment_2930149

Oui, oui, j'ai déjà ouvert cet article - merci. Insertion de la fonction MarketInfoMQL4, mais le résultat est négatif.... Peut-être que je l'ai mis au mauvais endroit...

 
-Aleks-:

Oui, j'ai déjà ouvert cet article - merci. J'ai collé la fonction MarketInfoMQL4, mais le résultat est négatif..... Je l'ai peut-être mis au mauvais endroit...

MarketInfo(Symbol(),MODE_DIGITS) is (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)

Vous feriez mieux de regarder plus profondément dans les profondeurs de la substitution dans les fonctions

Il sera plus élégant et proche de MQL5.

Prenez votre temps, en somme.

Vous n'avez pas besoin de bibliothèques ni de fonctions étrangères. Vous devriez apprendre à écrire en MQL5 pur.

 
-Aleks-:

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

Dérapage - la constante ne peut être modifiée Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

Oui, les paramètres d'entrée ne peuvent pas être modifiés. Pour être honnête, je ne comprends pas pourquoi cette valeur devrait être modifiée 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 ?
 
new-rena:

MarketInfo(Symbol(),MODE_DIGITS) is (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)

Vous feriez mieux de regarder plus profondément dans les profondeurs de la substitution dans les fonctions

Il sera plus élégant et proche de MQL5.

Prenez votre temps, en somme.

Vous n'avez pas besoin de bibliothèques ni de fonctions étrangères. Vous devriez apprendre à écrire en MQL5 pur.

A propos, la fonction de MarketInfoMQL4() conduit à une erreur - comment la corriger ? (l'apprentissage de deux langues va faire bouillir mon cerveau - je dois être capable de vérifier comment les idées fonctionnent en bourse sans codage profond)

'(' - nom attendu Kamikadze_MA-may.mq5 332 17
'::' - nom attendu Kamikadze_MA-may.mq5 332 17


double MarketInfoMQL4(string symbol,
                      int type)
  {
   switch(type)
     {
      case MODE_LOW:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
      case MODE_HIGH:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
      case MODE_TIME:
         return(SymbolInfoInteger(symbol,SYMBOL_TIME));
      case MODE_BID:
        {
         MqlTick last_tick;
         SymbolInfoTick(symbol,last_tick);
         double Bid=last_tick.bid;
         return(Bid);
        }
      case MODE_ASK:
        {
         MqlTick last_tick;
         SymbolInfoTick(symbol,last_tick);
         double Ask=last_tick.ask;
         return(Ask);
        }
      case MODE_POINT:
         return(SymbolInfoDouble(symbol,SYMBOL_POINT));
      case MODE_DIGITS:
         return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
      case MODE_SPREAD:
         return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
      case MODE_STOPLEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
      case MODE_LOTSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
      case MODE_TICKVALUE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
      case MODE_TICKSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
      case MODE_SWAPLONG:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
      case MODE_SWAPSHORT:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
      case MODE_STARTING:
         return(0);
      case MODE_EXPIRATION:
         return(0);
      case MODE_TRADEALLOWED:
         return(0);
      case MODE_MINLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
      case MODE_LOTSTEP:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
      case MODE_MAXLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
      case MODE_SWAPTYPE:
         return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
      case MODE_PROFITCALCMODE:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
      case MODE_MARGINCALCMODE:
         return(0);
      case MODE_MARGININIT:
         return(0);
      case MODE_MARGINMAINTENANCE:
         return(0);
      case MODE_MARGINHEDGED:
         return(0);
      case MODE_MARGINREQUIRED:
         return(0);
      case MODE_FREEZELEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));

      default: return(0);
     }
   return(0);
  }

Raison: