错误、漏洞、问题 - 页 648

 
sergeev:
测试仪是否正在调试?
是的,它已被卸下。
 
MoneyJinn:

是的,你搞错了。ChartGetInteger记录的几种形式是允许的。

但无论ChartGetInteger记录形式如何,都无法 获得CHART_BRING_TO_TOP 属性的当前值。

没有一个例子,很难说是什么和如何。请检查文档和构建版本。

如果它没有按照应有的方式工作,请写一个请求CA+代码的例子。

而第二个变体无论如何都应该返回该属性。其中有四个参数。

 

一个原型函数

#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 函数返回 错误?

因为将CHART_BRING_TO_TOP属性设置为 "真",就会给终端一个命令 ,让其在此刻将给定的图表带到前台。这不是通常意义上的属性,而是一个命令。这就是解释。
 

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

这意味着在我们的案例中,参考ChartGetInteger() 函数的 "属性 "命令CHART_BRING_TO_TOP根本不被支持,ChartGetInteger()正确返回错误这是对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
 
关于文件的问题:在µl5中打开的文件 的大小限制是什么?
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
如何获得历史中的ACCOUNT_BALANCE?在查看交易历史 时,你需要知道余额的变化。
原因: