初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1149

 
下午好...可能是一个简单的问题,但我不知道该从哪里开始。我需要一个脚本,画出一个 包含创建日期和时间的名字的矩形。也许有人有一个例子,我可以适合我的任务。

提前感谢 :)。
 
svob:
下午好...可能是一个简单的问题,但我不知道该从哪里开始。我需要一个脚本,画出一个 包含创建日期和时间的名字的矩形。也许有人有一个例子,我可以适合我的任务。

提前感谢 :)。

OBJ_RECTANGLE 参考例子为基础。

但要改变这一行

//--- создадим прямоугольник
   if(!RectangleCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,
      InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }

到这一点。

//--- создадим прямоугольник
   if(!RectangleCreate(0,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),0,date[d1],price[p1],date[d2],price[p2],InpColor,
      InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
//| Cоздает прямоугольник по заданным координатам                    |               time1=0,                            price1=0,                         time2=0,                            price2=0,                        width=1,            //| Перемещает точку привязки прямоугольника                         |...
 
Vladimir Karputov:

使用OBJ_RECTANGLE 参考例子作为基础。

只修改这一行

到这一点。

谢谢你!:)明白了...

 
下午好,请问指标中的小数位数(在单独的窗口中)是否取决于工具的_Digits?如果是这样,我怎样才能绕过它?该指标得到的是小数值,而它在刻度上只画整数。
 
VANDER:
你好,指标中的小数位数(在一个单独的窗口中)是否取决于符号的_位数?如果是这样,你怎样才能避免呢?该指标产生分数值,而它在刻度上只显示整数。

示例指标 [data folder]/MQL5\Indicators\Examples\ATR.mq5

OnInit() ->设置显示的准确性

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- check for input value
   if(InpAtrPeriod<=0)
     {
      ExtPeriodATR=14;
      printf("Incorrect input parameter InpAtrPeriod = %d. Indicator will use value %d for calculations.",InpAtrPeriod,ExtPeriodATR);
     }
   else ExtPeriodATR=InpAtrPeriod;
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtATRBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtTRBuffer,INDICATOR_CALCULATIONS);
//---
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- sets first bar from what index will be drawn


例子 #2 -> [data folder]\MQL5\Indicators\Examples\CustomMoving Average.mq5

这里的准确性更高

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);


例子 #3 -> [data folder]\MQL5\Indicators\Examples\ADX.mq5

总是有两个值的精度--不管Digits()是什么。

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- check for input parameters
   if(InpPeriodADX>=100 || InpPeriodADX<=0)
     {
      ExtADXPeriod=14;
      printf("Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations.",InpPeriodADX,ExtADXPeriod);
     }
   else ExtADXPeriod=InpPeriodADX;
//---- indicator buffers
   SetIndexBuffer(0,ExtADXBuffer);
   SetIndexBuffer(1,ExtPDIBuffer);
   SetIndexBuffer(2,ExtNDIBuffer);
   SetIndexBuffer(3,ExtPDBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(4,ExtNDBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,ExtTmpBuffer,INDICATOR_CALCULATIONS);
//--- indicator digits
   IndicatorSetInteger(INDICATOR_DIGITS,2);
 

是否可以在可视化模式下访问策略测试器中 的其他图表(在多货币测试中)。比如说。

int OnInit()
  {
   int bars=iBars("EURUSD",PERIOD_H1);
   bars=iBars("GBPUSD",PERIOD_H1);
   bars=iBars("USDJPY",PERIOD_H1);
   
   return(INIT_SUCCEEDED);
  }
void OnTick()
  {
   long arr[];
   ArrayResize(arr,1);
   arr[0]=ChartFirst();
   long id=arr[0];
   while (!IsStopped()){
      id=ChartNext(id);
      if(id>=0){
         int s=ArraySize(arr);
         ArrayResize(arr,s+1);
         arr[s]=id;
      }
      else break;
   }
   Comment("Total charts: ",ArraySize(arr));   
  }

如果你在策略测试器中运行该EA,可视化器将打开欧元兑美元、英镑兑美元、美元兑日元的图表,但

Comment("Total charts: ",ArraySize(arr));

它将显示只有一个图表。

 

我怎样才能知道标签的字体大小 和文字长度?要将其相对于其他元素定位

ObjectGetInteger(0,"label",OBJPROP_XSIZE,0);

给予0

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д.  Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов...
 
Maksym Mudrakov:

是否可以在可视化模式下访问策略测试器中 的其他图表(在多货币测试中)。比如说。

如果你在策略测试器中启动该EA,那么可视化器将打开欧元兑美元、英镑兑美元、美元兑日元的图表,但

它将显示只有一个图表。

这是在获取渲染器的窗口句柄时出现的问题。而且没有办法打败它。

 
Roman Sharanov:

我怎样才能知道标签的字体大小 和文字长度?要将其相对于其他元素定位

给予0

我使用单一宽度的字体,如 "Courier New",那么每个字符的宽度将与字体的大小差不多。
 
间接通过行长和字体大小