Fehler, Irrtümer, Fragen - Seite 670

 

Gibt es Pläne, das Gann-Gitter neu zu gestalten? Es ist absolut unmöglich, es zu benutzen: weder manuell, noch durch Extremums, wie in MT4, kann ich es richtig strecken oder fixieren - wenn ich von TF zu TF wechsle, ändert sich die Größe der Zellen, es gibt keine feste Bindung! Oder vielleicht verstehe ich etwas nicht...

M1M5

 

Nur die Metalle auf Alpari zeigen keine Balken und OHLC an, alle anderen sind in Ordnung. Ich habe das Terminal in einen neuen Ordner verschoben, aber das hilft nicht. Wo kann der Fehler liegen? W7 64

 
BoraBo:

Nur die Metalle auf Alpari zeigen keine Balken und OHLC an, alle anderen sind in Ordnung. Ich habe das Terminal in einen neuen Ordner verschoben, aber das hilft nicht. Wo kann der Fehler liegen? W7 64

Ich habe das gleiche Problem. Ich habe das Gefühl, dass auf dem Server etwas schief gelaufen ist. Kontaktieren Sie den technischen Support von Alpari.

 
void OnStart()
  {
//---
symbol2csv(Symbol(),Period());
  }
//+------------------------------------------------------------------+
int symbol2csv(string smb,ENUM_TIMEFRAMES tf)
  {
   ResetLastError();
   int filehandle=FileOpen(smb+"_"+tf2str(tf)+".csv",FILE_WRITE|FILE_CSV,",");
   if(filehandle!=INVALID_HANDLE)
     {
      MqlRates rates[];
      int i=0,copyed=CopyRates(smb,tf,From,To,rates);
      ArraySetAsSeries(rates,false);
      FileWrite(filehandle,"\"Date\" \"Time\" \"Open\" \"High\" \"Low\" \"Close\" \"Volume\""); // writing header
      for(i=0;i<copyed;i++)
        {
         FileWrite(filehandle,TimeToString(rates[i].time,TIME_DATE),TimeToString(rates[i].time,TIME_MINUTES),DoubleToString(rates[i].open,_Digits),DoubleToString(rates[i].high,_Digits),DoubleToString(rates[i].low,_Digits),DoubleToString(rates[i].close,_Digits),rates[i].real_volume);
        }
      FileClose(filehandle);
      Print(smb+" exported "+IntegerToString(copyed));
      return copyed;
     }
   else Print("FileOpen failure. Error is ",GetLastError());
   return -1;
  }
Warum enthält die Spalte Volume in der Datei immer 0? Und wie kann ich die Lautstärke aufzeichnen?
 
Graff:
Warum enthält die Spalte Volume in der Datei immer 0? Und wie kann man das Schreiben von Bänden erreichen?

real_volume für Forex-Instrumente?

für den Anfang vielleicht einfach tick_volume ausprobieren

 

Was ist der Fehler, den ich nicht verstehen kann?

Hier ist der Code, auf ein Minimum reduziert:

//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//---------- MQL5 --------------
int ecx = 0;//-- Кол-во тестируемых пар --
string g_s_SymbolsTrade[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD",
"GBPCHF","GBPJPY","GBPUSD","NZDUSD","USDCAD","USDCHF","USDJPY"};

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   //-- Сколько всего валютных пар --
   ecx = ArraySize(g_s_SymbolsTrade);
   //-- Установить таймер на каждую секунду --
   if (EventSetTimer(1) == false) return(-1);//int 08
   
   return(0);//ret;
}
//----------------------------------------------------------------------------//
void OnDeinit(const int reason)
{
   EventKillTimer();//timer off
}
//+------------------------------------------------------------------+
//| 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[])
{
    
//--- return value of prev_calculated for next call
   return(rates_total);//ret;
}

//+------------------------------------------------------------------+
////////////////////////////////////////////////////////////////////////////////
//                           Expert Timer function                            //
////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
void OnTimer()//int 08
{
static bool b_Flag = false;
string db_SymbolName;
MqlRates rates[];
int edx;

   if (b_Flag == true) return;//ret -- реентерабельность --
   b_Flag = true;//cli
   //---------------------------------------------
   for (int ebx = 0; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx=CopyRates(db_SymbolName,_Period,0,1,rates);
      if (edx != 1){//cmp edx,1 | jne
         b_Flag = false;//sti
         return;//jne ret;
      }   
   }//loop ecx       
   Print ("Загрузка завершена.");
   //---------------------------------------------
   b_Flag = false;//sti
}

Wenn ich es ausführe, fängt das Terminal manchmal sofort oder nach dem Umschalten einer Periode von Diagrammen plötzlich an, langsamer zu werden und das gesamte Protokoll ist damit verstopft:


Was ist der Grund, ist es mein Fehler oder ein Fehler in der Funktion CopyRates?

 
pusheax:

Woran liegt das, ist es mein Fehler oder ein Fehler in der CopyRates-Funktion?

Beide.

Versuchen Sie es auf diese Weise:

void OnTimer()//int 08
{
static bool b_Flag = false;
if (b_Flag == true) return;//ret -- реентерабельность --
string db_SymbolName;
MqlRates rates[ ecx];    // поправка здесь.
int edx;


   b_Flag = true;//cli
   //---------------------------------------------
   for (int ebx = 0; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx=CopyRates(db_SymbolName,_Period,0,1,rates);
      if (edx != 1){//cmp edx,1 | jne
         b_Flag = false;//sti
         return;//jne ret;
      }   
   }//loop ecx       
   Print ("Загрузка завершена.");
   //---------------------------------------------
   b_Flag = false;//sti
}
 
MetaDriver:

Beide.

Versuchen Sie es so:


Nein, leider hat es nicht geholfen.

Ich habe es folgendermaßen geschrieben: MqlRates rates[100];

sonst: MqlRates rates[ecx]; - gibt einen Kompilierungsfehler aus.

Mir gefiel auch die Idee, sie nach oben zu verschieben:

if (b_Flag == true) return;//ret -- Reentrancy --

aber leider ist das Ergebnis das gleiche.

Haben Sie eine andere Idee?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
papaklass:

Wenn die Anzahl der Balken im Terminal in den Diagrammeinstellungen unbegrenzt ist. Reduzieren Sie die Anzahl der Balken.

Es scheint nur ein Balken kopiert worden zu sein.
 
papaklass:

Also auf 25 Instrumente. Ich hatte das gleiche Problem bei 12, bis ich die Anzahl der Balken reduziert habe.

Dann bedeutet es, zu dienen. Das Terminal sollte beim Lesen von 1 bar nicht die gesamte Historie von der Festplatte durch ein Symbol ausgeben.

Selbst wenn sie auf unbegrenzt eingestellt ist, sollte die Zwischenspeicherung auf intelligente Weise erfolgen.

--

Generell ein guter Rat. Ich habe nachgedacht - er sagt "beim Wechsel der Periode". Das Terminal speichert also alles in Minuten, fängt an, die fehlenden Perioden zu berechnen, und kommt mit zu wenig Speicher für Puffer nicht weiter.

Kurzum: Beide sind schuld. Push hat keinen Speicher gekauft und möchte viele, viele Währungspaare ohne Limit (oder fast ohne Limit).

Und MQ - behandelt es nicht als Indikatorfehler (wie "Fehler XXXX: Schließen Sie Ihre Lippe, Genosse"), sondern nur seine eigene.