//+------------------------------------------------------------------+//| Создаем трендовую линию на чарте |//+------------------------------------------------------------------+void DrawTrendLine(conststring id,// Строковый идентификаторconstdatetime t1, // Время первой точки линииconstdatetime t2, // Время второй точки линииconstdouble price,// Цена обеих точек линииconstcolor clr // Цвет линии
)
{
//--- Формируем имя линииconststring name=_prefix+id+TimeToString(t1)+"_"+TimeToString(t2);
//--- Сбрасываем код последней ошибкиResetLastError();
//---//Print( __FUNCTION__,": Создаем тренд-линию "+name+": t1 = "+TimeToString( t1 )+", t2 = "+TimeToString( t2 )+", price = "+DoubleToString( price ) );//--- Создаем объект, проверяем созданиеif(ObjectCreate(0,name,OBJ_TREND,0,t1,price,t2,price)) // Если объект создан
{
//--- Меняем свойства линийObjectSetInteger(0,name,OBJPROP_COLOR,clr);
ObjectSetInteger(0,name,OBJPROP_BACK,true);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,name,OBJPROP_RAY_LEFT,false);
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
}
else// Если объект не созданPrint(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(t1)+", t2 = "+TimeToString(t2)+", price = "+DoubleToString(price));
}
//+------------------------------------------------------------------+//| Создаем вертикальную линию на чарте |//+------------------------------------------------------------------+void DrawVLine( conststring id, // Строковый идентификаторconstdatetime time // Время
)
{
//--- Формируем имя линииconststring name=_prefix+id+TimeToString(time);
//--- Сбрасываем код последней ошибкиResetLastError();
//--- Создаем объект, проверяем созданиеif(ObjectCreate(0,name,OBJ_VLINE,0,time,0)) // Если объект создан
{
//--- Меняем свойства линийObjectSetInteger(0,name,OBJPROP_COLOR,_vLineClr);
ObjectSetInteger(0,name,OBJPROP_BACK,true);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
}
else// Если объект не созданPrint(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(time));
}
已经存在的逻辑被打破了。
这就更有意思了。
如果我们不改变调用,注释将像以前一样被覆盖。
如果我们明确地传递NULL,我们会复制现有的注释
已经存在的逻辑被违反了。
没有人使用这种逻辑。更有理由使用它。
已经存在的逻辑被打破了。
这就更有意思了。
如果你不改变挑战,评论将像以前一样被覆盖。
如果明确传递NULL,则复制现有的注释
请看一下并
它尝试了10次(!!!)平仓:(我在调试时遇到了这种情况(净值、实值、开仓)。
突出显示的一行是第二次尝试平仓 :)你可以从日志中看到,它并不完全成功
目前,我正在使用它。
已经有一次试图通过代码来关闭位置。让用户控制位置关闭的事实似乎是正确的。10次尝试并不是万能的。
已经存在的逻辑被打破了。
这就更有意思了。
如果我们不改变调用,注释将像以前一样被覆盖。
如果我们明确地传递NULL,我们会复制现有的注释
或者说,这将是更方便的。
然后不管谁需要它,都会用一个空值来覆盖它。默认值将被复制。
亲爱的开发者们!
该航站楼已更新至1983年。在创建图形对象(我正在创建垂直线和趋势线)时,测试器中出现了一些奇怪的错误。1981年,一切都很正常。
现在我得到了错误4001。
创建代码。
给开发者的问题。
标准库的mytrade.PositionClose(conststring symbol,ulong deviation=ULONG_MAX)函数缺少一个注释参数:conststring comment=""。
这是一个疏忽吗?
在这里写似乎更合适。
https://www.mql5.com/ru/forum/302709#comment_10570043