为什么画不出矩形
可能是日期和价格的参数不对
那为什么
bool RectangleCreate(const long chart_ID=0, // 图表 ID
const string name="Rectangle", // 矩形名称
const int sub_window=0, // 子窗口指数
datetime time1=0, // 第一个点的时间
double price1=0, // 第一个点的价格
datetime time2=0, // 第二个点的时间
double price2=0, // 第二个点的价格
const color clr=clrRed, // 矩形颜色
const ENUM_LINE_STYLE style=STYLE_SOLID, // 矩形线的风格
const int width=1, // 矩形线的宽度
const bool fill=false, // 填充矩形颜色
const bool back=false, // 在背景中
const bool selection=true, // 突出移动
const bool hidden=false, // 隐藏在对象列表
const long z_order=0) // 鼠标单击优先
这段代码中的time1,time2,price1,price2都必须赋值为0呢?我修改成不赋值只定义,比如datetime time1,datetime time2。调试就报错,提示time1time2没赋值。这是为什么?
为什么我这个代码画不出来矩形?
//+------------------------------------------------------------------+
//| 调试EA2.mq5 |
//| Copyright 2022, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
input string InpName="Rectangle"; // 矩形名称
input int InpDate1=40; // 第1个点的日期,%
input int InpPrice1=40; // 第1个点的价格,%
input int InpDate2=60; // 第2个点的日期,%
input int InpPrice2=60; // 第2个点的价格,%
input color InpColor=clrRed; // 矩形颜色
input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // 矩形线的风格
input int InpWidth=5; // 矩形线的宽度
input bool InpFill=true; // 填充矩形颜色
input bool InpBack=false; // 背景矩形
input bool InpSelection=true; // 突出移动
input bool InpHidden=false; // 隐藏在对象列表
input long InpZOrder=0; // 鼠标单击优先
//+------------------------------------------------------------------+
//| EA初始化函数 |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectsDeleteAll(0,"",0,-1);//删除当前图表所有对象
EventKillTimer();//反初始化销毁计时器
Comment("");//清除左上角注释
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(RectangleCreate(0,InpName,0,InpDate1,InpPrice1,InpDate2,InpPrice2,InpColor,
InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
}
bool RectangleCreate(const long chart_ID=0, // 图表 ID
const string name="Rectangle", // 矩形名称
const int sub_window=0, // 子窗口指数
datetime time1=0, // 第一个点的时间
double price1=0, // 第一个点的价格
datetime time2=0, // 第二个点的时间
double price2=0, // 第二个点的价格
const color clr=clrRed, // 矩形颜色
const ENUM_LINE_STYLE style=STYLE_SOLID, // 矩形线的风格
const int width=1, // 矩形线的宽度
const bool fill=false, // 填充矩形颜色
const bool back=false, // 在背景中
const bool selection=true, // 突出移动
const bool hidden=false, // 隐藏在对象列表
const long z_order=0) // 鼠标单击优先
{
//--- 若未设置则设置定位点的坐标
//--- 重置错误的值
ResetLastError();
//--- 通过已给的坐标创建矩形 1
if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": failed to create a rectangle! Error code = ",GetLastError());
return(false);
}
//--- 设置矩形颜色
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- 设置矩形线的风格
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- 设置矩形线的宽度
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- 启用 (true) 或禁用 (false) 填充矩形的模式
ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- 显示前景 (false) 或背景 (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- 启用 (true) 或禁用 (false) 突出矩形移动的模式
//--- 当使用ObjectCreate函数创建图形对象时,对象不能
//--- 默认下突出并移动。在这个方法中,默认选择参数
//--- true 可以突出移动对象
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- 在对象列表隐藏(true) 或显示 (false) 图形对象名称
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- 设置在图表中优先接收鼠标点击事件
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- 成功执行
return(true);
}
//+------------------------------------------------------------------+