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

 
sergeev:
а тестер в дебаг выгружается?
Да, выгружается.
 
MoneyJinn:

Да, вы ошибаетесь. Допустимы несколько форм записи ChartGetInteger.

Но независимо от формы записи ChartGetInteger получить текущее значение свойства CHART_BRING_TO_TOP невозможно. 

Без примера трудно сказать что и как. Уточните в документации и сверьтесь с релизами билдов.

если все работает не так как должно пишем заявку в СД + код с примером.

А возвращать свойство по любому должен второй вариант. там где четыре параметра.

 

Есть прототип функции

#import "kernel32.dll"
BOOL WriteFile(
  HANDLE hFile,                    // дескриптор файла
  LPCVOID lpBuffer,                // буфер данных
  DWORD nNumberOfBytesToWrite,     // число байтов для записи
  LPDWORD lpNumberOfBytesWritten,  // число записанных байтов
  LPOVERLAPPED lpOverlapped        // асинхронный буфер

);

Функция вызывается в проге

      op_err=WriteFile(h1,buff,LenPos, Writing,NULL);

как правильно указать что buff и Writing передаются по ссылке?

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
tor30515:

Есть прототип функции


как правильно указать что buff и Writing передаются по ссылке?

buff  -  через массив  например uchar &buff[]

written - можно тоже через массив или же просто одной переменной int &written

 
Yedelkin:

Судя по Справочнику, данное свойство просто не поддерживается:

 Код ошибки говорит о том же. Вопрос о том, почему свойство графика CHART_BRING_TO_TOP не поддерживается - на уровне  разработчиков.. А если свойство фактически  поддерживается, то вопрос опять же на их уровне: почему в таком случае функция ChartGetInteger возвращает  false?

Потому что установка свойства CHART_BRING_TO_TOP в значение true дает терминалу приказ вывести данный чарт на передний план в данный момент. Это не свойство в обычном понимание, а команда. Вот такое объяснение.
 

Rosh:
Потому что установка свойства CHART_BRING_TO_TOP в значение true дает терминалу приказ вывести данный чарт на передний план в данный момент. Это не свойство в обычном понимание, а команда. Вот такое объяснение.

Т.е., в нашем случае, "свойство"-команда  CHART_BRING_TO_TOP применительно к функции ChartGetInteger()  попросту не поддерживается и функция ChartGetInteger() правильно возращает false. Получается такой ответ для MoneyJinn

 
Rosh:
Потому что установка свойства CHART_BRING_TO_TOP в значение true дает терминалу приказ вывести данный чарт на передний план в данный момент. Это не свойство в обычном понимание, а команда. Вот такое объяснение.

Разработчики не оставили возможности определить, видит ли пользователь окно графика или нет, а также каким является взаимное расположение окон.

Это очень плохо. Опять потеря контроля и новые риски.

 

Сразу отмечу что я новичок в программировании в MQL)

Суть проблемы: Хочу реализовать отрисовку уровней (горизонтальные линии) переделав стандартный

индикатор фракталы. То есть вместо стрелок рисовать горизонтальные линии.

В связи с этим вопрос: возможно ли это в рамках индикатора? Ведь необходимо заранее указать

количество линий в индикаторе, которое до вычислений я не знаю. Можно ли в свойстве

#property indicator_plots   указывать переменную. Или это невозможно?

Ниже код немного переделанного фрактала. Рисуется две линии по верхним и нижним фракталам.

Но мне нужны горизонтальные линии, по одной на фрактал.

Может быть в индикаторе можно создавать горизонтальные линии через ObjectCreate? 

#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window 
//Для индикаторов расположение на графике цены (indicator_chart_window)
//или в отдельном окне (indicator_separate_window)
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_color1  clrDeepPink
#property indicator_color2  clrRoyalBlue
#property indicator_label1  "Resistance lvl"
#property indicator_label2  "Support lvl"
#property indicator_style1  STYLE_SOLID
#property indicator_style2  STYLE_SOLID
#property indicator_width1  2
#property indicator_width2  2
//---- indicator buffers
double ExtUpperBuffer[];
double ExtLowerBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtUpperBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);// точность индикатора равна точности графика
//---- sets first bar from what index will be drawn
//  PlotIndexSetInteger(0,PLOT_ARROW,217);
//  PlotIndexSetInteger(1,PLOT_ARROW,218);
//---- arrow shifts when drawing
//  PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift);
//  PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-ExtArrowShift);
//---- sets drawing line empty value--
//  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
// PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
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 &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i,limit;
//---
   if(rates_total<5)
      return(0);
//---
   if(prev_calculated<7)
     {
      limit=2;
      //очистка буферов
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-5;

   for(i=limit;i<rates_total-3 && !IsStopped();i++)//(?условие нач.цикла;усл.оконч.цикла;вычисление)
                                                   //i++ тоже самое что и i=i+1
     {
      //---- Upper Fractal
      if(High[i]>High[i+1] && High[i]>High[i+2] && High[i]>=High[i-1] && High[i]>=High[i-2])
         ExtUpperBuffer[i]=High[i];
      //else ExtBuffer[i]=EMPTY_VALUE;
      else ExtUpperBuffer[i]=ExtUpperBuffer[i-1];
      //else ExtUpperBuffer[i]=ExtUpperBuffer[1];

      //---- Lower Fractal
      if(Low[i]<Low[i+1] && Low[i]<Low[i+2] && Low[i]<=Low[i-1] && Low[i]<=Low[i-2])
         ExtLowerBuffer[i]=Low[i];
      //else ExtBuffer[i]=EMPTY_VALUE;
      else ExtLowerBuffer[i]=ExtLowerBuffer[i-1];
      //else ExtLowerBuffer[i]=ExtLowerBuffer[1];
      
     // ObjectCreate(0,Level_obj,OBJ_HLINE);

     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
вопрос по файлам. какое ограничение накладывается на размер открываемого файла в мкль5
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Подскажите как можно получить значение ACCOUNT_BALANCE в истории? При просмотре истории сделок необходимо знать изменение баланса.
Причина обращения: