Fehler, Irrtümer, Fragen - Seite 422

 
Nach dem Upgrade auf Build 468 im Tester werden die als [trade disabled] diagnostizierten Trades nicht mehr verarbeitet. Test auf dem Meisterschaftskonto 2010.
Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 

Guten Tag, liebe Forumsnutzer.

Bitte helfen Sie mir zu verstehen. Der Indikator erscheint aus irgendeinem Grund nicht auf dem Diagramm - ich weiß nicht, wo der Fehler liegt.

Im Allgemeinen sollte sie auf dem Diagramm wie folgt angezeigt werden:

Aber ich habe einfach nichts im Fenster dieses Indikators. MT4.

Hier ist der Code des Indikators. Liegt ein Fehler im Code oder in etwas anderem vor?

//+------------------------------------------------------------------+
//|                                                        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);      
}

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

Tut mir leid, aber Sie sollten lieber auf die MT4-Website gehen

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


Das ist MT5.

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


Kann mir jemand sagen, wie groß die maximal zulässige Bin-Datei sein darf?

der vom Berater zum Lesen geöffnet werden darf, denn 25 m mit 3 mln.

Es mag sein, dass 25 Meter und 3 Millionen Zehnerwerte nicht gelesen werden, aber 500.000 Werte werden gelesen?

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

Tut mir leid, aber Sie sollten lieber auf die MT4-Website gehen

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


Das ist MT5.

Danke, ich werde dorthin gehen.
 
Im_hungry:

Kann mir jemand sagen, wie groß die maximal zulässige Bin-Datei sein darf?

die vom Expert Advisor zum Lesen geöffnet werden können, weil 25 m mit 3 mln.

will sich nicht öffnen, sondern öffnet sich mit 500.000 Werten ?

An die Entwickler. In der Dokumentation ist nichts über eine Begrenzung der Dateigröße zu finden.
 
Im_hungry:


Kann mir jemand sagen, wie groß die maximal zulässige Bin-Datei sein darf?

die vom Expert Advisor zum Lesen geöffnet werden können, weil 25 m mit 3 mln.

nicht öffnen will, sich aber mit 500.000 Werten öffnet?

Ich nehme an, die Datei wird in das Array eingelesen? - Wahrscheinlich reicht der Arbeitsspeicher einfach nicht aus.
 
Zeichenfolge


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

Es werden fast die gleichen Werte zurückgegeben (der Unterschied beträgt nur einen Balken), wie ist das möglich?

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

Die eine Funktion sollte die Anzahl der Balken zurückgeben, die im aktuellen Diagramm angezeigt werden sollen (z. B. 5000), die andere nur die Anzahl, die auf den Bildschirm passt (in meinem Fall knapp über 380).

Build 466, Vollversion 7 x64

 
olyakish:
Die Linie


Es werden fast die gleichen Werte zurückgegeben (der Unterschied beträgt nur einen Balken), wie ist das möglich?

Die eine Funktion sollte die Gesamtzahl der Balken zurückgeben, die im aktuellen Diagramm zu sehen sind (z. B. 5000), die andere nur die Anzahl, die auf den Bildschirm passt (in meinem Fall etwas mehr als 380).

Build 466, Fortock OS 7 x64

Das ist richtig. Anzahl der sichtbaren Balken:
ChartGetInteger(0,CHART_VISIBLE_BARS)

ist immer 1 mehr als die Nummer des ersten (linken) sichtbaren Balkens:

ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR)

Der letzte Balken (rechts) hat die Nummer 0.

Es sei denn, das Diagramm wird gescrollt. Wenn das Diagramm "gescrollt" ist, ist <Nummer des ersten sichtbaren Balkens> = <Anzahl der sichtbaren Balken> + <Verschiebung des Diagramms in Balken>-1.

Und was Sie schreiben:

...wie viele Balken insgesamt angezeigt werden sollen, ja das aktuelle Diagramm (z.B. 5000)...

ist ein bisschen anders:

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

Über nicht öffnen die Dateigröße, und für das Jahr 2010 und 2009 2008 will nicht öffnen,

Ich habe versucht, eine mit diesem Code erstellte Datei zu öffnen, erhalte aber immer wieder eine Fehlermeldung

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);
}

Jedes Zeitintervall außer 2011, 01, 01 öffnet den Rest nicht,

Was für ein Problem?

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

ist ein wenig anders:


Ich fürchte, das wird nicht funktionieren.

TerminalInfoInteger(TERMINAL_MAXBARS); 

Ich habe zum Beispiel 50000 Balken in meinen Einstellungen aktiviert, aber 11375 Balken in der Realität geladen.


Die Methode

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,);


Und welche Nummer hier zu verwenden ist.

ZS Hier ist, was onInit ist

   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,);

Und der Müll in der Geschichte wird nicht beseitigt...