Fehler, Irrtümer, Fragen - Seite 917

 
Konstantin83:

Beim Speichern einer csv-Datei werden die Daten nicht in Spalten aufgeteilt. Auch das Skript aus dem Standardbeispiel gibt alle Daten in einer Spalte aus.

Geben Sie das Trennzeichen an:

filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV,",");
 
tol64:

Geben Sie das Trennzeichen an:

Es hat nicht funktioniert. Beim Öffnen in Excel wird ein unbekanntes Dateiformat angezeigt, und die Spalten werden auch nicht geteilt. Wenn Sie jedoch kein Trennzeichen und keine Dateierweiterung angeben, wird auch ein unbekanntes Format angezeigt, aber der Text ist in Spalten unterteilt...
 
Konstantin83:
Es hat nicht funktioniert. Beim Öffnen in Excel erscheint die Meldung "Unbekanntes Dateiformat" und die Spalten werden auch nicht geteilt. Wenn Sie jedoch kein Trennzeichen und keine Dateierweiterung angeben, wird ebenfalls ein unbekanntes Format angezeigt, aber der Text ist in Spalten unterteilt...

Es gibt noch mehr solcher Dinge zu tun:

filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV|FILE_ANSI,",");
 
Es gibt eine Störung bei den Diagrammen in Signals. Oder bin das nur ich?
 

Ist es möglich, einen Indikator zu erstellen, der eine Pufferzeile, z. B. eine close[]-Zeile und einen Kommentar oben links enthält? Ich habe versucht, ein einfaches Beispiel zu machen, so dass mein Terminal hängen bleibt

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Histogram
#property indicator_label1  "1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
double MAbuf1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ChartGetInteger(0,CHART_VISIBLE_BARS);
   SetIndexBuffer(0,MAbuf1,INDICATOR_DATA);
   return(0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- вычисления значений индикатора
   int start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate
   if(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара
//--- заполняем индикаторный буфер значениями
   for(int i=start;i<rates_total;i++)
     {
      //----------------------Обнуляем буферы
      MAbuf1[i]=0;
      MAbuf1[i]=close[i];
      Comment("Work");


     }
//--- вернем значение prev_calculated для следующего вызова функции
   return(rates_total);
  }
 
Nehmen Sie den Kommentar aus der Schleife heraus - das sollte es einfacher machen.
 
Dima_S:
Nehmen Sie den Kommentar aus der Schleife heraus - das sollte es einfacher machen.
Danke, ich wusste nicht, dass dies eine solche Belastung für das System darstellt.
 
Wann wird die Option #resource auf die Indikatordateien angewendet? Weiß das jemand? Ich würde gerne das gesamte Projekt in einer .ex5-Datei zusammenfassen.
 
MoneyJinn:
Wann wird die Option #resource auf die Indikatordateien angewendet? Weiß das jemand? Ich würde sehr gerne das gesamte Projekt in einer .ex5-Datei zusammenfassen.
Sie scheinen eine solche Möglichkeit in Aussicht gestellt zu haben, haben aber nicht gesagt, wann.
 

Bitte erklären Sie, warum der zweite Puffer (label2) Null ist

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrWhite
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- indicator buffers
double ExtLineBuffer[];
double ExtLineBuffer2[];
int    InpMAPeriod=13;         // Period
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLineBuffer2,INDICATOR_DATA);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- check for bars count
   if(rates_total<InpMAPeriod-1+begin)
      return(0);// not enough bars for calculation
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
      ArrayInitialize(ExtLineBuffer,0);
//--- sets first bar from what index will be draw
      InpMAPeriod=20;
   int i,limit;
//--- first calculation or number of bars was changed
   if(prev_calculated==0)// first calculation
     {
      limit=InpMAPeriod+begin;
      //--- set empty value for first limit bars
      for(i=0;i<limit-1;i++) ExtLineBuffer[i]=0.0;
      //--- calculate first visible value
      double firstValue=0;
      for(i=begin;i<limit;i++)
         firstValue+=price[i];
      firstValue/=InpMAPeriod;
      ExtLineBuffer[limit-1]=firstValue;
      //ExtLineBuffer[i]=1;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total && !IsStopped();i++)
   ExtLineBuffer[i]=ExtLineBuffer[i-1]+(price[i]-price[i-InpMAPeriod])/InpMAPeriod;
   ExtLineBuffer2[i]=ExtLineBuffer[i];
//--- return value of prev_calculated for next call
   Comment(ExtLineBuffer[rates_total-1]);
   return(rates_total);
  }
//+------------------------------------------------------------------+

1) Aus irgendeinem Grund hat die Funktion OnCalculate keine Probleme mit mehreren Puffern, bei denen es getrennte Schließen, Öffnen usw. gibt.

2) Ich würde ihn gerne verwenden, aber er verwendet nicht den Algorithmus zur Berechnung der gleitenden Durchschnitte, der im obigen Code beschrieben ist

ExtLineBuffer2[i] versucht, verschiedene Werte einschließlich Konstanten zuzuweisen - immer Null