Erreurs, bugs, questions - page 422

 
Après la mise à niveau vers la version 468 dans le testeur, les transactions diagnostiquées comme [transaction désactivée] ne sont plus traitées. Test sur le compte championnat 2010.
Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 

Bonjour, membres du forum.

Aidez-moi à comprendre. L'indicateur n'apparaît pas sur le graphique pour une raison quelconque - je ne sais pas où se trouve l'erreur.

En général, il doit être affiché sur le graphique comme ceci :

Mais je n'ai rien dans la fenêtre de cet indicateur. MT4.

Voici le code de l'indicateur. Y a-t-il une erreur dans le code ou dans quelque chose d'autre ?

//+------------------------------------------------------------------+
//|                                                        Bands.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Blue
#property indicator_color2 Yellow
#property indicator_color3 Red
//---- indicator parameters
extern int    BandsPeriod=50;
extern int    BandsShift=0;
extern double BandsDeviations=2.0;
extern int    TrendBars = 10;
extern bool EnableTextDisplay = true;
//---- buffers
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
double HighTrend[];
double LowTrend[];
double MidTrend[];

//bool DisplayText = false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MovingBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpperBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,LowerBuffer);
   SetIndexBuffer(3,HighTrend);
   SetIndexBuffer(4,LowTrend);
   SetIndexBuffer(5,MidTrend);
   
//----
   SetIndexDrawBegin(0,BandsPeriod+BandsShift);
   SetIndexDrawBegin(1,BandsPeriod+BandsShift);
   SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
   if(EnableTextDisplay)
   {
      DisplayLabel_1();
      DisplayLabel_2();
      DisplayLabel_3();
   }
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Bollinger Bands                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int    i,k,counted_bars=IndicatorCounted();
   double deviation;
   double sum,oldval,newres;
//----
   if(Bars<=BandsPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=BandsPeriod;i++)
        {
         MovingBuffer[Bars-i]=EMPTY_VALUE;
         UpperBuffer[Bars-i]=EMPTY_VALUE;
         LowerBuffer[Bars-i]=EMPTY_VALUE;
        }
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
   i=Bars-BandsPeriod+1;
   if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      sum=0.0;
      k=i+BandsPeriod-1;
      oldval=MovingBuffer[i];
      while(k>=i)
        {
         newres=Close[k]-oldval;
         sum+=newres*newres;
         k--;
        }
      deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
      UpperBuffer[i]=oldval+deviation;
      LowerBuffer[i]=oldval-deviation;
      i--;
     }
//----

   double TestVal1 = 0;
   double TrendValueHigh = 0;
   for(i=0;i<TrendBars;i++)
   {
         TestVal1 = UpperBuffer[i] - UpperBuffer[1+1];
         TrendValueHigh = TrendValueHigh - TestVal1;

   }
   double TrendValueLow = 0;
   for(i=0;i<TrendBars;i++)
   {
         TestVal1 = LowerBuffer[i] - LowerBuffer[1+1];
         TrendValueLow = TrendValueLow - TestVal1;

   }   
   double TrendValueMid = 0;
   for(i=0;i<TrendBars;i++)
   {
         TestVal1 = MovingBuffer[i] - MovingBuffer[1+1];
         TrendValueMid = TrendValueMid - TestVal1;

   }  
   
   
   MidTrend[0] = TrendValueMid * 1000;
   HighTrend[0] = TrendValueHigh * 1000;
   LowTrend[0] = TrendValueLow * 1000;


   if(EnableTextDisplay)
   {
      ObjectSetText("Label_Message1","High " + DoubleToStr(HighTrend[0], 2),14,"Arial",Yellow);
      ObjectSetText("Label_Message2","Mid " + DoubleToStr(MidTrend[0], 2),14,"Arial",Yellow);
      ObjectSetText("Label_Message3","Low " + DoubleToStr(LowTrend[0], 2),14,"Arial",Yellow);
   }


   return(0);
  }
  
  int  DisplayLabel_1()  
{
   ObjectCreate("Label_Message1", OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Label_Message1", OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Label_Message1", OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Label_Message1", OBJPROP_YDISTANCE, 15);// Y coordinate

   ObjectSetText("Label_Message1","",14,"Arial",White);
   
   return(0);      
}
int  DisplayLabel_2()  
{
   ObjectCreate("Label_Message2", OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Label_Message2", OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Label_Message2", OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Label_Message2", OBJPROP_YDISTANCE, 35);// Y coordinate

   ObjectSetText("Label_Message2","",14,"Arial",White);
   
   return(0);      
}
int  DisplayLabel_3()  
{
   ObjectCreate("Label_Message3", OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Label_Message3", OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Label_Message3", OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Label_Message3", OBJPROP_YDISTANCE, 55);// Y coordinate

   ObjectSetText("Label_Message3","",14,"Arial",White);
   
   return(0);      
}

//+------------------------------------------------------------------+
 

Désolé, mais vous préférez aller sur le site de MT4

http://forum.mql4.com/ru/


C'est MT5.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Quelqu'un peut-il me dire quelle est la taille maximale autorisée pour le fichier bin ?

qui peut être ouvert par le conseiller pour la lecture, car 25 m avec 3 mln.

Il se peut que 25 mètres et 3 millions de dizaines de valeurs ne soient pas lus, mais que 500.000 valeurs le soient ?

MQL4: форум по механическим торговым системам и тестированию стратегий
  • www.mql5.com
MQL4: форум по механическим торговым системам и тестированию стратегий
 
Im_hungry:

Désolé, mais vous préférez aller sur le site de MT4

https://www.mql5.com/ru/forum


C'est MT5.

Merci, je vais y aller.
 
Im_hungry:

Quelqu'un peut-il me dire quelle est la taille maximale autorisée pour le fichier bin ?

qui peut être ouvert par le Conseiller Expert pour la lecture, parce que 25 m avec 3 mln.

ne veut pas s'ouvrir, mais s'ouvre avec 500.000 valeurs ?

Aux développeurs. Il n'y a rien dans la documentation sur la limitation de la taille des fichiers.
 
Im_hungry:


Quelqu'un peut-il me dire quelle est la taille maximale autorisée pour le fichier bin ?

qui peut être ouvert par le Conseiller Expert pour la lecture, parce que 25 m avec 3 mln.

ne veut pas s'ouvrir, mais il s'ouvre avec 500 000 valeurs ?

Je suppose que le fichier est lu dans le tableau ? - Probablement pas assez de RAM.
 
Chaîne de caractères


Print((int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR)," ",(int)ChartGetInteger(0,CHART_VISIBLE_BARS));

Il renvoie presque les mêmes valeurs (la différence n'est que d'une barre), comment est-ce possible ?

2011.06.18 00:03:45     CHFJPY (CHFJPY,M15)     384 385

Dans l'idée, une fonction devrait retourner le nombre de barres à afficher sur le graphique actuel (par exemple 5000) et l'autre seulement le nombre qui rentre dans l'écran (dans mon cas un peu plus de 380).

Build 466, Full 7 x64

 
olyakish:
La ligne


Il renvoie presque les mêmes valeurs (la différence n'est que d'une barre), comment est-ce possible ?

Dans l'idée, une fonction devrait renvoyer le nombre total de barres à visualiser dans le graphique actuel (par exemple 5000) et l'autre ne devrait renvoyer que le nombre qui tient dans l'écran (dans mon cas un peu plus de 380).

Build 466, Fortock OS 7 x64

C'est vrai. Nombre de barres visibles :
ChartGetInteger(0,CHART_VISIBLE_BARS)

est toujours supérieur de 1 au numéro de la première barre (gauche) visible :

ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR)

La dernière barre (à droite) porte le numéro 0.

Sauf si le graphique est défilé. Si le graphique est "déroulé", <nombre de la première barre visible> = <nombre de barres visibles> + <déplacement du graphique en barres>-1.

Et ce que vous écrivez :

...le nombre total de barres à afficher oui le graphique actuel ( par exemple 5000)....

est un peu différent :

TerminalInfoInteger(TERMINAL_MAXBARS);   // Максимальное количество баров на графике
 

A propos de ne pas ouvrir la taille du fichier, et pour l'année 2010 et 2009 2008 ne veut pas ouvrir,

J'ai essayé d'ouvrir un fichier créé à l'aide de cet outil mais il indique qu'il ne peut pas s'ouvrir.

2 значения - первое целое (хранит время в секундах)

второе дробное (цену или еще что),


Когда время (т.е. секунды) в файле совпадает с временем, текущим, используем второе значение

и выводим его. Все это я реализовал следующим образом - работает без косяков - пока :-)


double proverka()
{
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle<0) Print("-----Неоткрывается :-)");
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     return (ss);
     break;
    }
  } 
 FileClose(handle);
 return (kor);
}

Tout intervalle de temps sauf 2011, 01, 01 ouvre le reste ne le fait pas,

Quel genre de problème ?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
uncleVic:

est un peu différent :


J'ai peur que ça ne marche pas.

TerminalInfoInteger(TERMINAL_MAXBARS); 

Par exemple, j'ai 50000 barres cochées dans mes paramètres mais 11375 barres chargées en réalité.


La méthode

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,);


Et quel numéro utiliser ici.

ZS Voici ce qu'il y a surInit

   SetIndexBuffer(0,CHF,INDICATOR_DATA);
   PlotIndexSetString(0,PLOT_LABEL,"CHF");
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrMagenta);
   ArraySetAsSeries(CHF,true);
   ArrayInitialize(CHF,EMPTY_VALUE);
   //PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,);

Et les ordures de l'histoire ne sont pas nettoyées...