新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1481 1...147414751476147714781479148014811482148314841485148614871488...1953 新评论 Alexey Viktorov 2021.05.25 10:01 #14801 ANDREY:谢谢你提供的宝贵信息。请告知,如何在一个变量中存储表达式恰好为真?更准确地说--在函数中计算出的与什么时间段的蜡烛有关的最小值是什么?如何在一个变量中保存这个时间框架的标识符? 谢谢你 只需声明bool变量 bool variant_H4 = Bid-iLow( NULL ,PERIOD_H4,1) >= 0.0030, variant_H1 = Bid-iLow(NULL ,PERIOD_H1,1) >= 0.0030, variant_M30 = Bid-iLow(NULL ,PERIOD_M30,1) >= 0.0030; if (variant_H4 || variant_H1 || variant_M30) ANDREY 2021.05.25 10:20 #14802 Alexey Viktorov:只需声明bool变量 谢谢你提供的有用信息。 请告诉我,如果在分钟图上进行测试,如何在黄色变量中保存一个5位数的数值? double LoU; void OnTick() { if (Bid - iLow( NULL ,PERIOD_H4,1)>=0.0030||Bid - iLow( NULL ,PERIOD_H1,1)>=0.0030||Bid - iLow( NULL ,PERIOD_M30,1)>=0.0030) { OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0); LoU = (ЛОУ из выражения, которое оказалось истинным); } } 谢谢你。 Oleksandr Nozemtsev 2021.05.25 10:41 #14803 下午好!你能告诉我如何在mql4中把文本绑定到一行上,这样当后者被移动时,铭文也会被移位,就像截图中那样。我知道有两种方法来绑定一个对象:以像素为单位绑定到屏幕的一角,以及以时间/价格坐标为单位。在第一种情况下,我得到的是一个静态文本,而在第二种情况下,它不太符合我的要求。有了价格坐标(垂直绑定)就很清楚了--我把线上的价格加上一个_Point对,所以文字会比线上的价格高一点。但时间呢?我不想绑定到最后一个条形图,因为图表的不同移动会将文本拉到右边--左边。在这里,我想对屏幕的右边缘做一个刚性的水平绑定,但我不明白如何做。 Tretyakov Rostyslav 2021.05.25 11:10 #14804 Oleksandr Nozemtsev: 下午好!你能告诉我如何在mql4中把文本绑定到一行上,这样当后者被移动时,铭文也会被移位,就像截图中那样。我知道有两种方式来绑定一个对象 :以像素为单位绑定到屏幕的一角,以及以时间/价格坐标为单位。在第一种情况下,我得到的是一个静态文本,而在第二种情况下,它不太符合我的要求。有了价格坐标(垂直绑定)就很清楚了--我把线上的价格加上一个_Point对,所以文字会比线上的价格高一点。但时间呢?我不想绑定到最后一个条形图,因为图表的不同移动会将文本拉到右边--左边。在这里,我想对屏幕的右边缘做一个刚性的水平绑定,但我不明白如何做。 你是自己画线还是指标? Oleksandr Nozemtsev 2021.05.25 12:23 #14805 MakarFX: 你是自己画线还是指标? 这条线是由指标 在加载时创建的。需要用文字直接在行上显示这个级别的信息,而不是用Alert显示(Alert有效)。 Tretyakov Rostyslav 2021.05.25 12:51 #14806 Oleksandr Nozemtsev:这条线是由指标 在加载时创建的。需要用文字直接在行上显示这个级别的信息,而不是用Alert显示(Alert有效)。 发布创行代码 Oleksandr Nozemtsev 2021.05.25 12:59 #14807 MakarFX: 发布创行代码 int OnInit() { //创建行 "name_line",如果它还不存在。 如果(ObjectFind(0, name_line) == -1) { //如果没有指定价格,则将其设置为当前的卖价。 if(!price_line) price_line =SymbolInfoDouble(Symbol(), SYMBOL_ASK); //重设错误值 ResetLastError()。 //创建一个行 if(!ObjectCreate(0, name_line, OBJ_HLINE, 0, 0, price_line)) Print("Line 线路。错误",GetLastError())。 // ObjectSet(name_line, OBJPROP_COLOR, color_line); //线条颜色 ObjectSet(name_line, OBJPROP_STYLE, style_line); //线条样式 ObjectSet(name_line, OBJPROP_WIDTH, width_line); //线条厚度 ObjectSet(name_line, OBJPROP_BACK, back_line); //Front/back ObjectSet(name_line, OBJPROP_SELECTABLE, selection_line);//该对象可以用鼠标点击。 ObjectSet(name_line, OBJPROP_SELECTED, selection_line); //该对象被选中。创建时没有选择O } return(INIT_SUCCEEDED)。 } Any questions from newcomers expert advisor - miscellaneous OBJ Chart Tretyakov Rostyslav 2021.05.25 13:23 #14808 Oleksandr Nozemtsev: 接住 //+------------------------------------------------------------------+ //| Line_Text.mq4 | //| Copyright 2020 MakarFX | //| https://www.mql5.com/ru/users/makarfx | //+------------------------------------------------------------------+ #property copyright "Copyright 2020 MakarFX" #property link "https://www.mql5.com/ru/users/makarfx" #property version "1.00" #property strict #property indicator_chart_window double buy,sell; datetime DoTime; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { ObjectsDeleteAll(0,"My_"); //--- indicator buffers mapping if(ObjectFind(0,"My_BuyLine")!=0) { HLineCreate(0,"My_BuyLine",0,Ask+50*Point,clrTeal,2,1,false,true,false); } if(ObjectFind(0,"My_SellLine")!=0) { HLineCreate(0,"My_SellLine",0,Bid-50*Point,clrCrimson,2,1,false,true,false); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,"My_"); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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 &tick_volume[], const long &volume[], const int &spread[]) { //--- DoTime = TimeCurrent()+(Period()*60*7); if(ObjectFind(0,"My_BuyLine")==0) { buy = NormalizeDouble(ObjectGet("My_BuyLine",OBJPROP_PRICE1),Digits); Create_Text(0,"My_BuyText",0,DoTime,buy+5*Point,"BuyText","Arial",10,clrTeal,0,0,false,false,false); } if(ObjectFind(0,"My_SellLine")==0) { sell = NormalizeDouble(ObjectGet("My_SellLine",OBJPROP_PRICE1),Digits); Create_Text(0,"My_SellText",0,DoTime,sell-5*Point,"SellText","Arial",10,clrCrimson,0,0,false,false,false); } if(buy!=ObjectGet("My_BuyLine",OBJPROP_PRICE1)||sell!=ObjectGet("My_SellLine",OBJPROP_PRICE1)) { ObjectMove(0,"My_BuyText",0,DoTime,buy+5*Point); ObjectMove(0,"My_SellText",0,DoTime,sell-5*Point); } //--- return value of prev_calculated for next call return(rates_total); } //+--------------------------------------------------------------------------------------------------------------------+ //| Создает горизонтальную линию | //+--------------------------------------------------------------------------------------------------------------------+ bool HLineCreate(const long chart_ID=0, // ID графика const string name="HLine", // имя линии const int sub_window=0, // номер подокна double price=0, // цена линии const color clr=clrRed, // цвет линии const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии const int width=1, // толщина линии const bool back=false, // на заднем плане const bool selection=true, // выделить для перемещений const bool hidden=true, // скрыт в списке объектов const long z_order=0) // приоритет на нажатие мышью { //--- сбросим значение ошибки ResetLastError(); //--- создадим горизонтальную линию if(!ObjectCreate(chart_ID,name,OBJ_HLINE,sub_window,0,price)) { Print(__FUNCTION__, ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError()); return(false); } //--- установим свойства линии ObjectSetInteger (chart_ID, name, OBJPROP_COLOR, clr); ObjectSetInteger (chart_ID, name, OBJPROP_STYLE, style); ObjectSetInteger (chart_ID, name, OBJPROP_WIDTH, width); ObjectSetInteger (chart_ID, name, OBJPROP_BACK, back); ObjectSetInteger (chart_ID, name, OBJPROP_SELECTABLE, selection); ObjectSetInteger (chart_ID, name, OBJPROP_SELECTED, selection); ObjectSetInteger (chart_ID, name, OBJPROP_HIDDEN, hidden); ObjectSetInteger (chart_ID, name, OBJPROP_ZORDER, z_order); //--- успешное выполнение return(true); } //+--------------------------------------------------------------------------------------------------------------------+ //| Создает объект "Текст" | //+--------------------------------------------------------------------------------------------------------------------+ bool Create_Text(const long chart_ID=0, // ID графика const string name="Text", // имя объекта const int sub_window=0, // номер подокна datetime time=0, // время точки привязки double price=0, // цена точки привязки const string text="Text", // сам текст const string font="Arial", // шрифт const int font_size=10, // размер шрифта const color clr=clrRed, // цвет const double angle=0.0, // наклон текста const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // способ привязки const bool back=false, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=true, // скрыт в списке объектов const long z_order=0) // приоритет на нажатие мышью { //--- сбросим значение ошибки ResetLastError(); //--- создадим объект "Текст" if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price)) { Print(__FUNCTION__,": не удалось создать объект \"Текст\"! Код ошибки = ",GetLastError()); return(false); } //--- установим свойства объектa "Текст" ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); ObjectSetString(chart_ID,name,OBJPROP_FONT,font); ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- успешное выполнение return(true); } //+------------------------------------------------------------------+ Oleksandr Nozemtsev 2021.05.25 14:26 #14809 MakarFX:接住 哇,这可真够多的!我以为这只是几行代码而已。谢谢!(笑)。 ANDREY 2021.05.25 15:24 #14810 Alexey Viktorov:只需声明bool变量你能不能告诉我,如果在1分钟的图表上进行测试,如何在一个黄色的变量中保存5位数的蓝色数值?double LoU; void OnTick() { if (Bid - iLow( NULL ,PERIOD_H4,1)>=0.0030||Bid - iLow( NULL ,PERIOD_H1,1)>=0.0030||Bid - iLow( NULL ,PERIOD_M30,1)>=0.0030) { OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0); LoU = (ЛОУ из выражения, которое оказалось истинным); } } 谢谢你 1...147414751476147714781479148014811482148314841485148614871488...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你提供的宝贵信息。
请告知,如何在一个变量中存储表达式恰好为真?更准确地说--在函数中计算出的与什么时间段的蜡烛有关的最小值是什么?如何在一个变量中保存这个时间框架的标识符?
谢谢你
只需声明bool变量
只需声明bool变量
谢谢你提供的有用信息。
请告诉我,如果在分钟图上进行测试,如何在黄色变量中保存一个5位数的数值?
谢谢你。
下午好!你能告诉我如何在mql4中把文本绑定到一行上,这样当后者被移动时,铭文也会被移位,就像截图中那样。我知道有两种方式来绑定一个对象 :以像素为单位绑定到屏幕的一角,以及以时间/价格坐标为单位。在第一种情况下,我得到的是一个静态文本,而在第二种情况下,它不太符合我的要求。有了价格坐标(垂直绑定)就很清楚了--我把线上的价格加上一个_Point对,所以文字会比线上的价格高一点。但时间呢?我不想绑定到最后一个条形图,因为图表的不同移动会将文本拉到右边--左边。在这里,我想对屏幕的右边缘做一个刚性的水平绑定,但我不明白如何做。
你是自己画线还是指标?
这条线是由指标 在加载时创建的。需要用文字直接在行上显示这个级别的信息,而不是用Alert显示(Alert有效)。
这条线是由指标 在加载时创建的。需要用文字直接在行上显示这个级别的信息,而不是用Alert显示(Alert有效)。
发布创行代码
int OnInit()
{
//创建行 "name_line",如果它还不存在。
如果(ObjectFind(0, name_line) == -1)
{
//如果没有指定价格,则将其设置为当前的卖价。
if(!price_line)
price_line =SymbolInfoDouble(Symbol(), SYMBOL_ASK);
//重设错误值
ResetLastError()。
//创建一个行
if(!ObjectCreate(0, name_line, OBJ_HLINE, 0, 0, price_line))
Print("Line 线路。错误",GetLastError())。
//
ObjectSet(name_line, OBJPROP_COLOR, color_line); //线条颜色
ObjectSet(name_line, OBJPROP_STYLE, style_line); //线条样式
ObjectSet(name_line, OBJPROP_WIDTH, width_line); //线条厚度
ObjectSet(name_line, OBJPROP_BACK, back_line); //Front/back
ObjectSet(name_line, OBJPROP_SELECTABLE, selection_line);//该对象可以用鼠标点击。
ObjectSet(name_line, OBJPROP_SELECTED, selection_line); //该对象被选中。创建时没有选择O
}
return(INIT_SUCCEEDED)。
}
接住
接住
哇,这可真够多的!我以为这只是几行代码而已。谢谢!(笑)。
只需声明bool变量
你能不能告诉我,如果在1分钟的图表上进行测试,如何在一个黄色的变量中保存5位数的蓝色数值?
谢谢你