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

 

Добрый день, возможно ли как-то изменить стандартный графический инструмент? Конкретней: добавить вертикальную линию к фибо сетки, построенную с коэффициентом 1.3

 

вопрос с обращением к индикаторам. Точнее к фракталам. написал тестовый код

int Fractals;
double bar_val[];
bool start;
int OnInit()
{
   Fractals = iFractals(_Symbol, _Period);
   if (Fractals == INVALID_HANDLE) return (1);
   if (!ArrayResize(bar_val, 2)) return (1);
   if (!ArraySetAsSeries(bar_val, true)) return (1);
   start = false;
   return(0);
}

void OnTick()
{
   if (start) return; else start = true;
   for (int i = 0; i < 10; i++)
   {
      CopyBuffer(Fractals, UPPER_LINE, i, 2, bar_val);
      if (EMPTY_VALUE != bar_val[0])
         Print("1. i = " + string(i) + ", bar_val = " + string(bar_val[0]));
      CopyBuffer(Fractals, LOWER_LINE, i, 2, bar_val);
      if (EMPTY_VALUE != bar_val[0])
         Print("2. i = " + string(i) + ", bar_val = " + string(bar_val[0]));
   }
}

Он периодически выдает фрактал при i = 2, хотя на экране его нету (от стандартного индикатора Fractals)

Подскажите в чем ошибка

 
Почему то между 2001 и 2006 годом не тестируются эксперты. Смотрел по евро и фунту. Закрыл терминал, удалил историю. Закачалась заново. Всё равно. До 2001 сделки открываются. А начиная с 2001 по 2006 при наличии сигналов пропуск. Почему?
 

 Залипают кнопки таймфреймов на панели терминала. Иногда сразу несколько при частом множественном переключении с ТФ на ТФ. Возможно, это из-за большого числа окон, индикаторов, шаблонов... однако раньше их было не меньше, но такого эффекта не наблюдалось. На скриншоте - пример несоответтвия вжатой кнопки таймфрейма реальному значению, указанному в верхнем левом углу чарта. Больше тянет на долгосрочный эффект, хотя всё-таки рано или поздно отлипает.

 

Иногда бывает вообще ни одна не нажата. 

 

Могу ли я управлять размерами окна средствами mql5?

 

 
ilunga:

вопрос с обращением к индикаторам. Точнее к фракталам. написал тестовый код

Он периодически выдает фрактал при i = 2, хотя на экране его нету (от стандартного индикатора Fractals)

Подскажите в чем ошибка

нужно с кодом советника возиться так на вскидку не скажешь
 
tol64:
Почему то между 2001 и 2006 годом не тестируются эксперты. Смотрел по евро и фунту. Закрыл терминал, удалил историю. Закачалась заново. Всё равно. До 2001 сделки открываются. А начиная с 2001 по 2006 при наличии сигналов пропуск. Почему?
Дополнительная информация. Это происходит только, если в настройках тестера выбран таймфрейм D1. Если выбрать таймфрейм D1  в настройках эксперта, а в настройках тестера меньший ТФ, то пропуска нет. Это баг или есть какое-то этому объяснение?
 

Сделал вроде бы простенький индикатор, почему не хочет работать - не понимаю;(

//+------------------------------------------------------------------+
//|                                                      testind.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot Vol
#property indicator_label1  "UniPrice"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLightSlateGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#include <MovingAverages.mqh>
//--- input parameters
input int      Smooth=50;
//--- indicator buffers
double         SmoothSpreadBuffer[];
double         SpreadBuffer[];
double         UniPriceBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,UniPriceBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SpreadBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,SmoothSpreadBuffer,INDICATOR_CALCULATIONS);
   
//---
   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 i;
   for(i=1;i<rates_total;i++)
     {
      SpreadBuffer[i]=(high[i]-low[i]);
     }  
     
   SmoothedMAOnBuffer(rates_total,prev_calculated,
                         1,  // с какого индекса есть значения в массиве для сглаживания 
                         Smooth,  // период экспроненциальной средней
                         SpreadBuffer,       // буфер для взятия средней
                         SmoothSpreadBuffer);  // в этот буфер помещаем значения средней      
   for(i=1;i<rates_total;i++)
     {
      UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[i];//не показывает
      //UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[rates_total-1];//показывает
      //UniPriceBuffer[i]=close[i];//показывает
      //UniPriceBuffer[i]=SmoothSpreadBuffer[i];//показывает
     }  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

close[i] при подстановке выдает, SmoothSpreadBuffer[i] при подстановке тоже выдает, почему не хочет делить одно на другое и показать результат?

результат, правда иногда дает, но не соответствующий реальности, например на паре EURUSD  на часах должно быть значение в пределах 300-400...

 
Olegts:

Сделал вроде бы простенький индикатор, почему не хочет работать - не понимаю;(

close[i] при подстановке выдает, SmoothSpreadBuffer[i] при подстановке тоже выдает, почему не хочет делить одно на другое и показать результат?

результат, правда иногда дает, но не соответствующий реальности, например на паре EURUSD  на часах должно быть значение в пределах 300-400...

UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[i];

подставь сюда значения EURUSD для тек. времени и получишь:

Ma к примеру с усреднением 16 по ценам закрытия

UniPriceBuffer[i] = 1,33846 / 1.33932 = 0,99935

 а не лучше использовать 

handle=iMA(name,period,ma_period,ma_shift,ma_method,applied_price);
и т.д
 

После последнего билда терминал при загрузке намертво зависает. На окнах пар советник - он не успевает начать работу. Нет доступа ни к меню, ни к контекстным меню. WIn7. Окно обзора символов пустое. Значок соединения красный. Загрузки процессора нет. Что делать и когда уже стабильность будет?

Описание:
  Ошибка привела к остановке взаимодействия программы с Windows.

Сигнатура проблемы:
  Имя события проблемы:    AppHangB1
  Имя приложения:    terminal.exe
  Версия приложения:    5.0.0.514
  Отметка времени приложения:    00343800
  Сигнатура зависания:    86b5
  Тип зависания:    1
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Доп. сигнатура зависания 1:    86b56845a796dcc49c1ed94bca152915
  Доп. сигнатура зависания 2:    4dea
  Доп. сигнатура зависания 3:    4dea45bbcdd37e9fd7bef8af1f8c0d94
  Доп. сигнатура зависания 4:    1df5
  Доп. сигнатура зависания 5:    1df5990b738955081f33bb6a466caece
  Доп. сигнатура зависания 6:    b4e6
  Доп. сигнатура зависания 7:    b4e6e85bfba9e3852328760498392cb4