inputstring ds;//Параметры заднего фона панелиinputint x_offset_anchor=100;
inputint y_offset_anchor=100;
int anchor_width=150;
int anchor_height=20;
int back_height=100;
inputcolor anchor_color=clrBlue, back_color=clrAquamarine, clrBorder=clrAliceBlue;
inputstring ds2;////+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mapping
RectLabelCreate(0,"Back_panel_anchor_point",0,x_offset_anchor,y_offset_anchor,anchor_width,anchor_height,anchor_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,2,false,true,true,0);
RectLabelCreate(0,"Back_panel",0,x_offset_anchor,y_offset_anchor+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason){
ObjectsDeleteAll(0,-1,-1);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
if(id == CHARTEVENT_OBJECT_DRAG && sparam == "Back_panel_anchor_point")
{
ObjectDelete(0,"Back_panel");
RectLabelCreate(0,"Back_panel",0,ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_XDISTANCE),ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_YDISTANCE)+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+ //| Создает прямоугольную метку | //+------------------------------------------------------------------+ bool RectLabelCreate(constlong chart_ID=0, // ID графика conststring name="RectLabel", // имя метки constint sub_window=0, // номер подокна constint x=0, // координата по оси X constint y=0, // координата по оси Y constint width=50, // ширина constint height=18, // высота constcolor back_clr=C'236,233,216', // цвет фона constENUM_BORDER_TYPE border=BORDER_SUNKEN, // тип границы constENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки constcolor clr=clrRed, // цвет плоской границы (Flat) constENUM_LINE_STYLE style=STYLE_SOLID, // стиль плоской границы constint line_width=1, // толщина плоской границы constbool back=false, // на заднем плане constbool selection=false, // выделить для перемещений constbool hidden=true, // скрыт в списке объектов constlong z_order=0) // приоритет на нажатие мышью
{
//--- сбросим значение ошибки ResetLastError();
//--- создадим прямоугольную метку if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": не удалось создать прямоугольную метку! Код ошибки = ",GetLastError());
return(false);
}
//--- установим координаты метки ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- установим размеры метки ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- установим цвет фона ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- установим тип границы ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- установим цвет плоской рамки (в режиме Flat) ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии плоской рамки ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину плоской границы ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения метки мышью 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);
}
大家下午好。亲爱的程序员,请帮我插入一行,可以指定一个声音文件,对于每个Alert3.Lv1;2;3,触发你指定的不同声音。
大家下午好。亲爱的程序员,请帮助我在Alert3.Lv1;2;3的声音文件中插入一个字符串来触发不同的声音。
大家下午好。亲爱的程序员,请帮助我在Alert3.Lv1;2;3的声音文件中插入一个字符串来触发不同的声音。
开始制作,你会得到帮助。
开始制作,你会得到帮助。
开始制作,你会得到帮助。
帮助,溜冰鞋没有滑倒。
试图学习如何使用图形面板 并创建我自己的图形面板。
我创建了2个矩形,1个主矩形,当移动面板时,面板上的所有对象都应该面向它的坐标。
我在ChartEvent中做了这样一个条件,现在当我移动主矩形时,第二个矩形在2-3秒后才移动,如何解决这个问题?
我还在条件中尝试了CHARTEVENT_MOUSE_MOVE,效果相同
帮助,溜冰鞋不滑了。
试图学习如何使用图形面板并创建我自己的图形面板。
我创建了2个矩形,1个主矩形,当移动它时,所有的面板对象都应该面向这个坐标。
我在ChartEvent中做了这样一个条件,现在当我移动主矩形时,第二个矩形在2-3秒后才移动,怎么做?
也试过在条件中使用CHARTEVENT_MOUSE_MOVE,效果相同。
在创建一个对象 和它的移动之后,我需要做ChartRedraw()。
在创建一个对象 并移动它之后,你必须做ChartRedraw()。
是的,这就好了。所以不可能让它顺利地滑行,对吗?
更新了一个条件,只有当这个主矩形被选中时才会重绘,现在可以了,谢谢你的帮助!)
从另一个主题转帖。也许我会摇身一变,得到一些帮助。
<当地的专家让我想起了我的同学(哦,那是多久以前的事了)--他知道所有的规则,所有的公式,但是什么时候应用哪些,他不能马上想到,几乎所有的东西都要过一遍,这样他就永远跟不上分配的时间。这里也是如此:他们知道很多,但他们看不到解决方案,他们只是凭 "直觉 "工作。在学院里,我们被教导要在没有数字和公式的情况下解决问题,只有这样你才会清楚地知道要应用哪些公式。新加入MKL4的人不了解语言的微妙之处,而这正是他们需要帮助的地方(不是指 "阅读教科书")。但没有人可以告诉你开仓/平仓的陷阱。也许他们不知道?所以他们对我的问题听之任之......>。
问候,帮助把当前的价格 写进文件。
请看这里。
开始做,你会得到帮助。
开始做,你会得到帮助。
开始做,你会得到帮助。
我欣赏你的讽刺,只是不是好的方式。我应该开始做什么?如果我知道从哪里开始,从哪里开始,从哪里结束,我可能就不会对这个论坛上更有经验的坐家们的帮助感兴趣。我只是觉得一个精通这种活动的人,也就是编程,对我来说,在一些特定的地方放上一些字符串不是问题,这样我就可以在指示器中指出某个声音文件。你让我 "开始",我应该从哪些基础知识开始掌握这门伟大而不可捉摸的编码艺术,这样我就会知道我需要把这些相同的字符串正确地放在哪里? 以下是我的意思....
我很欣赏你的讽刺,只是没有理由。我应该开始做什么?如果我知道从哪里开始,从哪里开始,从哪里结束,我可能就不会对这个论坛中更有经验的成员的帮助表现出兴趣。我只是觉得一个精通这种活动的人,也就是编程,对我来说,在一些特定的地方放上一些字符串不是问题,这样我就可以在指示器中指出某个声音文件。你让我 "开始",我应该从哪些基础知识开始掌握这门伟大而不可捉摸的编码艺术,这样我就会知道我需要把这些相同的字符串正确地放在哪里? 这就是我的意思....
请看这里。
谢谢你,那里的数值来自一个文件和一个时间,但我的任务是有时间限制的。
在每天开始的30分钟内,每120秒记录一次当前价格和时间。
不要覆盖以前的条目。