Errori, bug, domande - pagina 917

 
Konstantin83:

Quando si salva un file csv, i dati non vengono divisi in colonne. Anche lo script dell'esempio standard emette tutti i dati in una colonna.

Specificare il separatore:

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

Specificare il separatore:

Non ha funzionato. Quando si apre in Excel dice formato di file sconosciuto e non divide nemmeno le colonne. Ma se non si specifica un separatore e non si specifica l'estensione del file, dice anche formato sconosciuto, ma il testo è spezzato in colonne...
 
Konstantin83:
Non ha funzionato. Quando si apre in Excel dice formato di file sconosciuto e non divide nemmeno le colonne. Ma se non si specifica un separatore e non si specifica l'estensione del file, dice anche formato sconosciuto, ma il testo è spezzato in colonne...

Ci sono altre cose da fare così:

filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV|FILE_ANSI,",");
 
C'è un problema con i grafici in Signals. O sono solo io?
 

È possibile creare un indicatore che avrà una linea di buffer, per esempio la linea close[] e un commento in alto a sinistra? Ho provato a fare un semplice esempio, quindi il mio terminale si blocca

#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);
  }
 
Togliete il commento dal ciclo - dovrebbe rendere tutto più facile.
 
Dima_S:
Togliete il commento dal ciclo - dovrebbe rendere tutto più facile.
Grazie, non avevo capito che sarebbe stato un tale peso per il sistema
 
Quando sarà applicata l'opzione #resource ai file indicatori? Qualcuno lo sa? Vorrei davvero combinare l'intero progetto in un unico file .ex5.
 
MoneyJinn:
Quando sarà applicata l'opzione #resource ai file indicatori? Qualcuno lo sa? Mi piacerebbe molto combinare l'intero progetto in un unico file .ex5.
Sembra che abbiano promesso una tale possibilità, ma non hanno detto quando.
 

Spiega perché il secondo buffer (label2) è zero

#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) Per qualche ragione, la funzione OnCalculate non ha problemi con buffer multipli, dove ci sono chiusure, aperture, ecc. separati.

2) Mi piacerebbe usarlo, ma non riesce a utilizzare l'algoritmo per il calcolo delle medie mobili che è descritto nel codice sopra

ExtLineBuffer2[i] ha provato ad assegnare diversi valori, comprese le costanti - sempre zero