Fehler, Irrtümer, Fragen - Seite 3137

 
Hallo!
Beim Testen des EA auf Geschichte für alle ausgewählten Instrumente, der Tester gibt nur Ergebnisse für Währungspaare, aber für Krypto es gibt "oninit gibt nicht-Null-Code 1". Was kann ich dagegen tun? Wer hat diese Erfahrung gemacht?
 
lapundra1 #:
Hallo!
Beim Testen des EA auf Geschichte für alle ausgewählten Instrumente, der Tester gibt nur Ergebnisse für Währungspaare, aber für Krypto es gibt "oninit gibt nicht-Null-Code 1". Was kann ich dagegen tun? Wer hatte es?

Kommentieren Sie Zeile 123 aus und der Fehler verschwindet. Ich sage es Ihnen als Telepathin :) - weil es keinen Code gibt, also nur Telepathie, keine andere Möglichkeit :)

 

Grüße.

Bei der Ausführung von MT5 im Terminal tritt ein Fehler auf:

2022.01.03 15:33:30.108 Virtuelles Hosting konnte keine Liste der virtuellen Hosts abrufen [1001] (tls - create certificate chain engine failed)

2022.01.03 15:34:30.945 Signal '56334871': Liste der Signale konnte nicht abgerufen werden


Und als nächstes, wenn Sie versuchen, eine Verbindung zu einem Repository in MetaEditor herzustellen:

2022.01.03 15:34:39.668 Storage projects list request failed with error 1001

2022.01.03 15:34:46.561 Storage Aktivierung von MQL5 Storage fehlgeschlagen [1001]


Gleichzeitig funktionierte die Verbindung zu einem anderen Computer einwandfrei, und alle Änderungen wurden an den Speicher übertragen.

Auf dem Computer wurden keine Netzwerkprobleme festgestellt, alles funktioniert einwandfrei. Auch in den letzten Monaten wurden keine "riskanten" Aktivitäten am Computer durchgeführt, und alles funktioniert einwandfrei. Das Baujahr ist 3140.

In welche Richtung soll ich graben?


 

Ich gehe nicht einmal auf die "Geheimnisse von Madrid" ein, und Gott bewahre mich davor, mich zu fragen, warum die Indikatorgriffe bei 10 und nicht bei 0 oder 1 beginnen. Das ist mir egal, ich kann damit leben.

Warum sollte ich fragen, wenn es zwei unabhängige Griffe desselben Indikators gibt und ich den zweiten lösche, verschwindet nicht nur der zweite MA, sondern auch der erste? Das heißt, wenn einer der Griffe entfernt wird, wird auch der andere zerstört. Hier ist der stark vereinfachte und verdoppelteiMA-Code aus der Hilfe:

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2

#property indicator_label1  "iMA1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

#property indicator_label2  "iMA2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

double iMABuffer1[], iMABuffer2[];
int    handle1, handle2;
int    bars_calculated=0;

int OnInit()
  {
   SetIndexBuffer(0,iMABuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,iMABuffer2,INDICATOR_DATA);

   PlotIndexSetInteger(0,PLOT_SHIFT,0);
   PlotIndexSetInteger(1,PLOT_SHIFT,0);

   handle1=iMA(_Symbol,PERIOD_CURRENT,10,0,MODE_SMA,PRICE_CLOSE);
   handle2=iMA(_Symbol,PERIOD_CURRENT,20,0,MODE_SMA,PRICE_CLOSE);

   return(INIT_SUCCEEDED);
  }

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 values_to_copy;

   int calculated=BarsCalculated(handle1);
   if(calculated<=0) return(0);

   if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
      if(calculated>rates_total) values_to_copy=rates_total;
      else                       values_to_copy=calculated;
   else
      values_to_copy=(rates_total-prev_calculated)+1;

   if(!FillArrayFromBuffer(iMABuffer1,0,handle1,values_to_copy)) return(0);
   if(!FillArrayFromBuffer(iMABuffer2,0,handle2,values_to_copy)) return(0);

   //if(handle2!=INVALID_HANDLE)
   //   Print(IndicatorRelease(handle2));

   bars_calculated=calculated;

   return(rates_total);
  }

bool FillArrayFromBuffer(double &values[],
                         int shift,
                         int ind_handle,
                         int amount
                         )
  {
   if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
      return(false);

   return(true);
  }

void OnDeinit(const int reason)
  {
   if(handle1!=INVALID_HANDLE)
      IndicatorRelease(handle1);
   if(handle2!=INVALID_HANDLE)
      IndicatorRelease(handle2);
  }

Wenn Sie die beiden Zeilen auskommentieren, wird nichts gerendert. Erwartet: Der erste MA (rot) bleibt bestehen.

...und alles was ich tun wollte, war, den Speicher aufzuräumen.

 
x572intraday #:

Ich gehe nicht einmal auf die "Geheimnisse von Madrid" ein, und Gott bewahre mich davor, mich zu fragen, warum die Indikatorgriffe bei 10 und nicht bei 0 oder 1 beginnen. Das ist mir egal, ich kann damit leben.

Warum sollte ich fragen, wenn es zwei unabhängige Griffe desselben Indikators gibt und ich den zweiten lösche, verschwindet nicht nur der zweite MA, sondern auch der erste? Das heißt, wenn einer der Griffe entfernt wird, wird auch der andere zerstört. Hier ist der stark vereinfachte und verdoppelteiMA-Code aus der Hilfe:

Wenn Sie die beiden Zeilen auskommentieren, wird nichts gerendert. Erwartet: Der erste MA (rot) bleibt bestehen.

...und alles was ich tun wollte, war, den Speicher aufzuräumen.

Zumindest:

if(handle2!=INVALID_HANDLE && !FillArrayFromBuffer(iMABuffer2,0,handle2,values_to_copy)) return(0);
 
JRandomTrader #:

Zumindest das:

Haben Sie das überprüft? Bei mir hat es nicht funktioniert. Und Sie brauchen nur eine zu löschen (mit Speicherfreigabe) und die andere visuell zu belassen. Und aus Ihrer Logik folgt: wenn zweites Handle existiert und zweiter Puffer nicht gefüllt wurde, dann exit, und es kommt nicht einmal zu meiner Zeile mit IndicatorRelease(handle2) (wenn ich Code an der richtigen Stelle eingefügt habe).

 
   int dim=5;
   int Arr1[5];// OK
   int Arr2[dim];// '[' - invalid index value

Entweder bin ich total durchgeknallt oder, wenn es kein Fehler ist, stochere in der Hilfe herum.

 
x572intraday #:

Entweder bin ich völlig aufgeschmissen, oder, wenn es kein Fehler ist, stoßt mich in der Hilfe.

Die Größe eines statischen Arrays ist eine Konstante, kein int.

 
Valeriy Yastremskiy #:

Die Dimensionalität eines statischen Arrays ist eine Konstante, kein int.

Es ist möglich, einen Vektor auf diese Weise zu definieren, aber sie sind nur doppelt.

int n = 5;
vector v(n);
v[0] = 1.2;
 
Aleksey Nikolayev #:

Man kann einen Vektor auf diese Weise definieren, aber sie tun nur so.

Ja. Dann sollte ich die Größe ändern.