Ошибки, баги, вопросы - страница 917

 
Konstantin83:

При сохранение файла в формате csv данные не разбиваются по колонкам. Даже скрипт из стандартного примера выводит все данные в один столбец.

Укажите разделитель:

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

Укажите разделитель:

 

Не помогло. При открытии в Excel написал, что неизвестный формат файла и также не разбил по столбцам. Но если не указывать разделитель и не указывать расширение файла, то также говорит, что неизвестный формат, но текст бъется по столбцам...
 
Konstantin83:
Не помогло. При открытии в Excel написал, что неизвестный формат файла и также не разбил по столбцам. Но если не указывать разделитель и не указывать расширение файла, то также говорит, что неизвестный формат, но текст бъется по столбцам...

Вот так ещё нужно сделать:

filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV|FILE_ANSI,",");
 
какойто глюк с графиками в Сигналах. Или только у меня? 
 

Можно ли создать индикатор в котором будут и буфер линии, напирмер линия close[] и отображался коментарий слева вверху? Я попытался сделать простейший пример так у меня повис терминал

#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);
  }
 
Комментарий вытащите за пределы цикла - должно полегчать.
 
Dima_S:
Комментарий вытащите за пределы цикла - должно полегчать.
Спасибо, не додумался, что это так может нагрузить систему
 
Когда уже опция #resource будет применима к файлам индикаторов? Может кто-нибудь знает? Очень хочется весь проект объединить в один .ex5-файл.
 
MoneyJinn:
Когда уже опция #resource будет применима к файлам индикаторов? Может кто-нибудь знает? Очень хочется весь проект объединить в один .ex5-файл.
Вроде бы обещали такую возможность, но сроки не сказали.
 

Обьясните пожалуйста, почему второй буфер (label2) равен нулю

#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) Почему-то с функцией OnCalculate где есть отдельно close, open и т.д. проблем с несколькими буферами нет

 2) С радостью использовал бы его, но не получается в него всунуть алгоритм расчета скользящей средней, который в коде выше

ExtLineBuffer2[i] пытался присваивать разные значения в том числе константы - всегда ноль