Fehler, Irrtümer, Fragen - Seite 991

 
costy_:

Wenn ich es aufrufe, erhalte ich

2013.05.31 13:08:41 temp (AUDUSD,M5) TERMINAL_COMPANY = MetaQuotes Software Corp.

Es sollte ein anderer Broker sein, oder es stimmt etwas nicht, danke.

 AccountInfoString(ACCOUNT_SERVER)

Terminal gehört der MetaQuotes Software Corp.

brokerAccountInfoString(ACCOUNT_SERVER)

 
pako:

Terminal gehört der MetaQuotes Software Corp.

brokerAccountInfoString(ACCOUNT_SERVER)

Danke, ich habe es doch verloren.
 

Guten Tag!

Ich schreibe einen Multicurrency-Indikator. Wenn ich den Code erneut ändere, lässt er sich gut kompilieren, aber wenn ich versuche, einen Indikator in ein Diagramm einzufügen, erhalte ich die Meldung "Ungültige ex5-Datei". Ich habe versucht, sie unter einem anderen Namen erneut zu speichern - dasselbe Ergebnis. Es stellt sich heraus, dass das Problem im Code liegt, aber die Kompilierung ist in Ordnung.

//+------------------------------------------------------------------+
//|                                                      Therm02.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+

#include <ST_ServicesAndAbstracts.mqh>

#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 120
#property indicator_buffers 1
#property indicator_plots   2
//--- plot Label1
#property  indicator_label1  "Label1"
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrBlack
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- indicator buffers
double         gThermB[];

double         gEURThermB[];
double         gCHFThermB[];

CRangeManager  *gEURRM, *gCHFRM;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,gEURThermB,INDICATOR_DATA);
   SetIndexBuffer(0,gCHFThermB,INDICATOR_DATA);
   gEURRM = new CRangeManager(1,0.2,20,"EURUSD");
   gCHFRM = new CRangeManager(1,0.2,20,"USDCHF");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // size of input time series
                 const int prev_calculated,  // bars handled in previous call
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   )

  {
//---
   double lEUR[], lCHF[];
   int copied;
   copied=CopyClose("EURUSD",PERIOD_CURRENT,0,5000,lEUR); 
   if (copied==-1){Print("Ждите...EUR");return(0);}
   copied=CopyClose("USDCHF",PERIOD_CURRENT,0,5000,lCHF); 
   if (copied==-1){Print("Ждите...CHF");return(0);}


   sThermometer lT;
   for(int i=prev_calculated;i<rates_total;i++)
      {
         lT = gEURRM.getState(lEUR[i]);
         gEURThermB[i] = lT.currentT; 
         
         lT = gEURRM.getState(lCHF[i]);
         gEURThermB[i] = lT.currentT; 
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---
   
  }
//+------------------------------------------------------------------+

Wie kann ich helfen?

Ich danke Ihnen!

 
ns_k:

Guten Tag!

Ich schreibe einen Multicurrency-Indikator. Wenn ich den Code erneut ändere, lässt er sich gut kompilieren, aber wenn ich versuche, einen Indikator in ein Diagramm einzufügen, erhalte ich die Meldung "Ungültige ex5-Datei". Ich habe versucht, sie unter einem anderen Namen erneut zu speichern - dasselbe Ergebnis. Es stellt sich heraus, dass das Problem im Code liegt, aber die Kompilierung ist in Ordnung.

Wie kann ich helfen?

Ich danke Ihnen!

Läuft die Kompilierung ohne Fehler oder Warnungen ab? Ist sie genau?
 
tol64:
Läuft die Kompilierung ohne Fehler oder Warnungen ab? Sind Sie sicher?
Es gibt keine Fehler, sondern nur Warnungen, meist harmlose wie unbenutzte Werte. Aber es gibt diesen Indikator Puffer Menge ist weniger als erforderlich. Ich werde versuchen, hier zu graben

 
ns_k:
Es gibt keine Fehler, aber Warnungen, meist harmlose wie unbenutzte Werte. Allerdings gibt es diesen Indikator Puffer Menge ist weniger als erforderlich. Ich werde versuchen, hier zu graben.

Ja, das ist genau das Richtige. Darin liegt der Fehler:

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,gEURThermB,INDICATOR_DATA);
   SetIndexBuffer(0,gCHFThermB,INDICATOR_DATA);
   gEURRM = new CRangeManager(1,0.2,20,"EURUSD");
   gCHFRM = new CRangeManager(1,0.2,20,"USDCHF");
//---
   return(INIT_SUCCEEDED);
  }
In Rot hervorgehoben. Ersetzen Sie durch 1.
 
#property indicator_buffers 1
#property indicator_plots   2
Die Anzahl der Puffer darf nicht geringer sein als die Anzahl der Parzellen. Das sagt Ihnen der Compiler in der Meldung.
 
tol64:

Ja, das ist genau das Richtige. Genau das ist der Fehler:

In Rot hervorgehoben. Ersetzen Sie durch 1.
#property indicator_buffers 1
#property indicator_plots   2
Спасибо всем!
 
ns_k:

MT4 gebaut 500. Ich stelle den Alarm auf einen bestimmten Wert ein, er geht los und alles ist in Ordnung. Deaktiviere ich die Meldung (Leerzeichen), wird sie als ausgesetzt angezeigt. Dann erreicht das Gerät den Schwellenwert und der Alarm wird ausgelöst. Sollte es so sein?

ps. Ja, eine Randnotiz. Zuerst markierte ich alle Ausschreibungen mit der Maus (6 Stück) und drückte die Leertaste, woraufhin sie alle ausgesetzt wurden. Nachdem ich eine ausgelöst habe, habe ich sie bereits mit der Leertaste ausgeschaltet und sie löst immer noch aus.

 

Ich werde noch ein paar mehr einstreuen.

//+------------------------------------------------------------------+
//|                                                      Therm02.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+

//#include <ST_ServicesAndAbstracts.mqh>

#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 120
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Label1
#property  indicator_label1  "Label1"

#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrBlack
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- indicator buffers
double         gThermB[];

double         gEURThermB[];
double         gCHFThermB[];

//CRangeManager  *gEURRM, *gCHFRM;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,gEURThermB,INDICATOR_DATA);
   SetIndexBuffer(1,gCHFThermB,INDICATOR_DATA);
   //gEURRM = new CRangeManager(1,0.2,20,"EURUSD");
   //gCHFRM = new CRangeManager(1,0.2,20,"USDCHF");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // size of input time series
                 const int prev_calculated,  // bars handled in previous call
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   )

  {
//---
   double lEUR[], lCHF[];
   int copied;
  // copied=CopyClose("EURUSD",PERIOD_CURRENT,0,5000,lEUR); 
   if (copied==-1){Print("Ждите...EUR");return(0);}
  // copied=CopyClose("USDCHF",PERIOD_CURRENT,0,5000,lCHF); 
   if (copied==-1){Print("Ждите...CHF");return(0);}


   //sThermometer lT;
   for(int i=prev_calculated;i<5000;i++)
      {
         //lT = gEURRM.getState(lEUR[i]);
       //  gEURThermB[i] = lT.currentT; 
         
     //    lT = gCHFRM.getState(lCHF[i]);
     //    gCHFThermB[i] = lT.currentT; 
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---
   
  }
//+------------------------------------------------------------------+

Beim Start meldet das Terminal, dass das angegebene Symbol nicht ausgewählt ist. Ich habe es auf einen anderen MT5 über die Cloud gezogen - es funktioniert, und mit kommentierten Strings mit Tickern.

Ich würde versuchen, den Grund dafür zu finden, aber ich weiß nicht, wo ich mit der Suche nach einem solchen Fehler anfangen soll. Vielleicht sollte ich das Terminal gleich neu installieren?

Grund der Beschwerde: