新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 434 1...427428429430431432433434435436437438439440441...1953 新评论 Vladislav Andruschenko 2018.01.24 16:37 #4331 WinProject:请告诉我如何删除一个图形对象。有一些垂直线,其名称是由变量值构建的。 string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); 我怎样才能只删除名称为test1的垂直线?你可能会发现这个功能很有用。删除子窗口中按名称前缀指定类型的所有对象。intObjectsDeleteAll( longchart_id,// 图表IDconst stringprefix,// object name prefix intsub_window=EMPTY,// 窗口的索引。intobject_type=EMPTY//要删除的对象的类型); WinProject 2018.01.24 16:48 #4332 Vladislav Andruschenko:你可能会发现这个功能很有用。删除图表子窗口中按名称前缀指定类型的所有对象。intObjectsDeleteAll( longchart_id,//图表标识符 const stringprefix,// prefix对象名称 intsub_window=EMPTY,// 窗口索引 intobject_type=EMPTY// 要删除的对象类型 )。谢谢,根据我的理解,这个函数将前缀理解为对象名称中的第一个子串,但如何通过对象名称中的第二个子串来删除?是否有办法使用StringSubstr 和StringFind来实现这个目的的对象名称? Vladislav Andruschenko 2018.01.24 17:14 #4333 WinProject: 谢谢,据我所知,这个函数通过前缀可以理解对象名称中的第一个子串,但是如何通过对象名称中的第二个子串来删除?是否有办法使用StringSubstr和StringFind来实现这个目的的对象名称?等待。你已经指定了代码。string Vertline="линия_"+name; 在你有前缀的地方。这是每个人都会做的事情。这就是为什么我建议你使用按前缀删除对象的功能。"линия_"如果你需要按后缀删除一行,你可以使用StringFind 来搜索所有对象例如:void ObjectsDelete() { string NameEA="суффикс"; for(int i=ObjectsTotal();i>=0;i--) { if(StringFind(ObjectName(i),NameEA)!=-1)ObjectDelete(ObjectName(i)); } } WinProject 2018.01.24 17:48 #4334 谢谢你,Vladislav,一切都很好,有了论坛成员的这种帮助,MQL就更有趣了。你的网站很有趣,谢谢你! mila.com 2018.01.24 19:17 #4335 你好。请帮助我找出为什么它在出现头寸后停止了拖网。 重点是这样的:开设两个仓位1、2。在一个价格上,第一个仓位被拖网关闭,第二个拖网被激活,条件是在仓位的开盘价 上,仓位为1。 一切运作正常,位置1被关闭,位置2被拖网,但当再有两个位置3和4以不同的价格打开时,拖网就不会转到位置2。 为什么它会停止拖网? void Tral_SL_one(int _TrailingStop=0,int _TrailingStep=0) { if(_TrailingStop<=0) return; for(int i=0; i<OrdersTotal(); i++) { if(!(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=_MagicNumber) continue; if(OrderType()==OP_BUY) { if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1) { if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(_TrailingStop *Point,Digits)) { if(NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid -(_TrailingStop+_TrailingStep-1)*Point,Digits) || OrderStopLoss()==0) { if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-_TrailingStop*Point,Digits),OrderTakeProfit(),OrderExpiration())); } } } } if(OrderType()==OP_SELL) { if(NumPosByPrice(Symbol(),OP_SELL,OrderOpenPrice(),_MagicNumber)==1) { if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(_TrailingStop *Point,Digits)) { if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Ask+(_TrailingStop+_TrailingStep-1)*Point,Digits) || OrderStopLoss()==0) { if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+_TrailingStop*Point,Digits),OrderTakeProfit(),OrderExpiration())); } } } } } } //=== int NumPosByPrice(string sy="",int op=-1,double pp=0,int mn=-1) { double px,py; int d,i,k=OrdersTotal(),num=0; if(sy=="0") sy=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(mn<0 || OrderMagicNumber()==mn) { d=MarketInfo(OrderSymbol(),MODE_DIGITS); px=NormalizeDouble(pp, d); py=NormalizeDouble(OrderOpenPrice(), d); if(pp<=0 || px==py) num++; } } } } } return(num); } Vladislav Andruschenko 2018.01.24 19:26 #4336 mila.com:你好。请帮助我找出为什么它在出现头寸后停止了拖网。重点是这样的:开设两个仓位1、2。在一个价格上,第一个仓位被拖网关闭,第二个拖网被激活,条件是在仓位的开盘价 上,仓位为1。一切运作正常,位置1被关闭,位置2被拖网,但当再有两个位置3和4以不同的价格打开时,拖网就不会转到位置2。 为什么它会停止拖网? 我只想指出一个严重的错误。 for(int i=0; i<OrdersTotal(); i++) { if(!(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=_MagicNumber) continue; if(OrderType()==OP_BUY) { if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1)你通过订单,然后运行计算仓位数量的函数,从而在NumPosByPrice 函数中选择另一个仓位因此,进一步的建设 if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(_TrailingStop *Point,Digits))将无法正常工作。有很多方法来解决这个问题。比如说。void Tral_SL_one(int _TrailingStop=0,int _TrailingStep=0) { if(_TrailingStop<=0) return; for(int i=0; i<OrdersTotal(); i++) { if(!(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=_MagicNumber) continue; if(OrderType()==OP_BUY) { if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(_TrailingStop *Point,Digits))虽然这从根本上说是错误的,但为了快速理解,这也可以做到。后。if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1)添加 :OrderSelect(i,SELECT_BY_POS,MODE_TRADES); mila.com 2018.01.24 20:19 #4337 Vladislav Andruschenko:我只想指出这个严重的错误。有许多方法 来解决这个问题。谢谢你,我明白了,trawl) amenrazp 2018.01.26 11:27 #4338 你能告诉我如何在mt4中重新打开警报窗口吗? 我以前有一个脚本,可以创建一个假信号并打开警报窗口,现在重新安装系统后,我在网上找不到它。也许有人有一个? Vladislav Andruschenko 2018.01.26 11:47 #4339 amenrazp:你能告诉我如何在mt4中重新打开警报窗口吗? 我以前有一个脚本,可以创建一个假信号并打开警报窗口,现在重新安装系统后,我在网上找不到它。也许有人有一个?Alert(""); 这样的脚本? amenrazp 2018.01.26 12:01 #4340 Vladislav Andruschenko: Alert(""); 这样的脚本?看起来是这样的。你有办法把它附在这里吗? 1...427428429430431432433434435436437438439440441...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
请告诉我如何删除一个图形对象。有一些垂直线,其名称是由变量值构建的。
string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); 我怎样才能只删除名称为test1的垂直线?
你可能会发现这个功能很有用。
删除子窗口中按名称前缀指定类型的所有对象。
intObjectsDeleteAll(
longchart_id,// 图表ID
const stringprefix,// object name prefix
intsub_window=EMPTY,// 窗口的索引。
intobject_type=EMPTY//要删除的对象的类型
);
你可能会发现这个功能很有用。
删除图表子窗口中按名称前缀指定类型的所有对象。
intObjectsDeleteAll(
longchart_id,//图表标识符
const stringprefix,// prefix对象名称
intsub_window=EMPTY,// 窗口索引
intobject_type=EMPTY// 要删除的对象类型
)。
谢谢,根据我的理解,这个函数将前缀理解为对象名称中的第一个子串,但如何通过对象名称中的第二个子串来删除?是否有办法使用StringSubstr 和StringFind来实现这个目的的对象名称?
谢谢,据我所知,这个函数通过前缀可以理解对象名称中的第一个子串,但是如何通过对象名称中的第二个子串来删除?是否有办法使用StringSubstr和StringFind来实现这个目的的对象名称?
等待。
你已经指定了代码。
在你有前缀的地方。
这是每个人都会做的事情。
这就是为什么我建议你使用按前缀删除对象的功能。
"линия_"
如果你需要按后缀删除一行,你可以使用StringFind 来搜索所有对象
例如:
谢谢你,Vladislav,一切都很好,有了论坛成员的这种帮助,MQL就更有趣了。你的网站很有趣,谢谢你!
你好。请帮助我找出为什么它在出现头寸后停止了拖网。
重点是这样的:开设两个仓位1、2。在一个价格上,第一个仓位被拖网关闭,第二个拖网被激活,条件是在仓位的开盘价 上,仓位为1。
一切运作正常,位置1被关闭,位置2被拖网,但当再有两个位置3和4以不同的价格打开时,拖网就不会转到位置2。
为什么它会停止拖网?
你好。请帮助我找出为什么它在出现头寸后停止了拖网。
重点是这样的:开设两个仓位1、2。在一个价格上,第一个仓位被拖网关闭,第二个拖网被激活,条件是在仓位的开盘价 上,仓位为1。
一切运作正常,位置1被关闭,位置2被拖网,但当再有两个位置3和4以不同的价格打开时,拖网就不会转到位置2。
为什么它会停止拖网?
我只想指出一个严重的错误。
你通过订单,然后运行计算仓位数量的函数,从而在NumPosByPrice 函数中选择另一个仓位
因此,进一步的建设
将无法正常工作。
有很多方法来解决这个问题。
比如说。
虽然这从根本上说是错误的,但为了快速理解,这也可以做到。
后。
添加 :
我只想指出这个严重的错误。
有许多方法 来解决这个问题。
谢谢你,我明白了,trawl)
你能告诉我如何在mt4中重新打开警报窗口吗? 我以前有一个脚本,可以创建一个假信号并打开警报窗口,现在重新安装系统后,我在网上找不到它。也许有人有一个?
你能告诉我如何在mt4中重新打开警报窗口吗? 我以前有一个脚本,可以创建一个假信号并打开警报窗口,现在重新安装系统后,我在网上找不到它。也许有人有一个?
Alert(""); 这样的脚本?
看起来是这样的。你有办法把它附在这里吗?