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

 
Alex:

Merci pour vos réponses et votre patience.


Vladimir, je vous ai probablement déjà ennuyé :) Mais j'ai du mal avec les bases. J'ai essayé d'effectuer une tâche de test avec les fonctions de copie... L'indicateur n'est pas dessiné, bien qu'il y ait des chiffres à Printe... Je ne comprends rien.


Un seul et même tableau UpBar va dans deux buffers : 0 et 1.

Et pour les index pour lesquels vous ne voulez pas définir de valeurs, écrivez des valeurs vides.

Et, d'après ce que je comprends, vous écrivez des valeurs de 3 à 3 barres. Cela signifie que les valeurs les plus anciennes seront écrites, et non les plus récentes (l'ordre de numérotation est différent de celui de mql4).

 
Alex:

Merci pour vos réponses et votre patience.


Vladimir, je vous ai probablement déjà ennuyé :) Mais j'ai du mal avec les bases. J'ai essayé d'effectuer une tâche de test avec les fonctions de copie... L'indicateur n'est pas dessiné, bien qu'il y ait des chiffres à Printe... Je ne comprends rien.


//+------------------------------------------------------------------+
//|                                                        PBars.mq5 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot UpBar
#property  indicator_label1  "UpBar"
#property  indicator_type1   DRAW_HISTOGRAM
#property  indicator_color1  clrGreen
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  6
////--- plot DnBar
//#property indicator_label2  "DnBar"
//#property indicator_type2   DRAW_HISTOGRAM
//#property indicator_color2  clrRed
//#property indicator_style2  STYLE_SOLID
//#property indicator_width2  6
//--- input parameters
input int   Histori=30;
input ENUM_TIMEFRAMES TimeFrame=0;
input string  Simvol="EURUSD";
//--- indicator buffers
double         UpBar[];
//double         DnBar[];
double         O_Price[];
double         C_Price[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,UpBar,INDICATOR_DATA);
//SetIndexBuffer(1,UpBar,INDICATOR_DATA);
   SetIndexBuffer(1,O_Price,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,C_Price,INDICATOR_CALCULATIONS);
//---
   ArraySetAsSeries(O_Price,true);
   ArraySetAsSeries(C_Price,true);
   ArraySetAsSeries(UpBar,true);
   ArrayInitialize(UpBar,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(close,true);

   if(prev_calculated==0)
     {
      ArrayInitialize(UpBar,0.0);
      ArrayInitialize(O_Price,0.0);
      ArrayInitialize(C_Price,0.0);
      Print(__FUNCTION__);
      ResetLastError();
      if(CopyOpen(Simvol,TimeFrame,0,Histori,O_Price)==-1)
         Print("Error CopyOpen #",GetLastError());
      ResetLastError();
      if(CopyClose(Simvol,TimeFrame,0,Histori,C_Price)==-1)
         Print("Error CopyClose #",GetLastError());
      for(int t=3; t<Histori; t++)
        {
         UpBar[t]=MathAbs(NormalizeDouble((O_Price[t]-C_Price[t]),Digits()));
         Print(IntegerToString(t)," ",DoubleToString(UpBar[t],Digits()));
         int g=0;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

Et le résultat :

Résultat

 
Karputov Vladimir:

Et le résultat :


Encore une fois, merci beaucoup.
 
Alex:
Encore une fois, merci beaucoup.
Vous êtes les bienvenus. N'hésitez pas à me contacter si vous avez des questions sur MQL5.
 

Existe-t-il des fonctions dans MQL4 qui donnent des valeurs de prix maximum/minimum pour un nombre donné de barres?

Je pense qu'il y en avait un, mais je ne le trouve pas...

 
-Aleks-:

Existe-t-il des fonctions dans MQL4 qui donnent les valeurs de prix maximum/minimum pour un nombre donné de barres?

Je pense qu'il y en avait un, mais je ne le trouve pas...

https://docs.mql4.com/ru/series/ihighest

https://docs.mql4.com/ru/series/ilowest

iHighest - Доступ к таймсериям и индикаторам - Справочник MQL4
iHighest - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iHighest - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Oui, oui, merci - je n'ai pas assez cherché - je l'ai déjà trouvé moi-même.
 
-Aleks-:
Oui, merci - je n'ai pas assez cherché - je l'ai déjà trouvé moi-même.
Fonctions compatibles avec mql5 CopyHigh et CopyLow puis dans le tableau résultant ArrayMaximum et ArrayMinimum
 
Est-il vrai que chaque ensemble de variables qui composent un système de trading a une distribution aléatoire des profits et des pertes ?
 
Евгений:
Est-il vrai que chaque ensemble de variables qui composent un système de trading a une distribution aléatoire des profits et des pertes ?

Une contre question.

Pensez-vous que l'évolution de toute paire de devises : graphique, cours acheteur et vendeur, etc., dépend de l'ensemble de vos variables ?