[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 118 1...111112113114115116117118119120121122123124125...432 新评论 Artyom Trishkin 2013.01.25 19:00 #1171 Shixan:下午。我写了代码,在a=true和b=true的条件下打开两个挂单(BuyStop和SellStop),一段时间后,EA关闭这两个订单,直到出现新的信号,但有时EA会在同一方向上打开两个挂单。为什么会发生这种情况,如何避免这种 "错误"?如果(a=true &&b=true){ int OrderCount = OrdersTotal()。 如果(OrderCount>1)返回(0)。 ticket1=OrderSend(Symbol(), OP_BUYSTOP, getLot(), PriceOpen_Buy, slippage, PriceOpen_Sell,0,0,Green) 。 睡眠(1000)。 ticket2=OrderSend(Symbol(), OP_SELLSTOP, getLot(), PriceOpen_Sell, slippage, PriceOpen_Buy,0,0,Green) 。Sleep(1000*59*TimeFrame);for (int i=OrdersTotal()-1; i>=0; i--){ if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break; 如果(OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket())。 如果(OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket())。 如果(OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask, slippage); 如果(OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slipage)。}return(0); }你能给我一个提示吗?预先谢谢你 我没有看你的代码,但是......为了不在一个信号上下两个或更多的订单,在下订单之前先检查一下:这个信号上是否已经有订单?如果没有--把它放上去,如果有--抽烟。 Vadim Zhunko 2013.01.25 21:37 #1172 mario065:你好。 是否可以在设置中输入一个固定权重为1:1的时间表? 如果有可能的话,请告诉我如何做。 提前感谢。 这个图书馆 可以。"3.3 设置图表属性的函数 "章节中的ServiceSetScaleFix1To1()。该图书馆只适用于俄罗斯和英语的本地化。它也可能在你那里起作用。 ANTON777 2013.01.26 05:42 #1173 嗨,你能告诉我为什么在MetaEditor的新版本451中,当你编译时,第二个ex 4文件没有出现在mq 4文件旁边的专家文件夹中。 Viktar Dzemikhau 2013.01.26 08:23 #1174 这里是订单开放功能。//+-------------------------------------------------------------------------------------+ //| Открытие короткой позиции | //+-------------------------------------------------------------------------------------+ bool OpenSell(double price) { int ticket = -1; double SL = OrderOpenPrice() + i_sl * pt; double TP = OrderOpenPrice() - i_tp * pt; if (price < Bid) ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(price), 3, 0, 0, NULL, i_magic, 0); if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true)) { if (i_sl > 0 && OrderStopLoss() == 0) { if (!OrderModify(ticket, OrderOpenPrice(), ND(SL), ND(TP), 0, Red)) { Print ("Ошибка установки первичного стопа для шортов ", OrderType(), " - ", GetLastError()); Print("pt = ", pt); Print("Ask = ", Ask); Print("Bid = ", Bid); Print("SL_s = ", OrderOpenPrice() + i_sl * pt); Print("TP_s = ", OrderOpenPrice() - i_tp * pt); } } } return (true); }下面是参数打印结果。2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: TP_s = 1.4499 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: SL_s = 1.4519 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: Bid = 1.4513 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: Ask = 1.4515 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: pt = 0.0001 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: Ошибка установки первичного стопа для шортов 5 - 4051 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: OrderModify error 4051 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: invalid takeprofit for OrderModify function 2013.01.26 11:02:56 2010.01.12 00:00 Phillip_Nel's_TS_for_M5 EURUSD,M5: open #1 sell stop 0.10 EURUSD at 1.45091 ok 在这里你可以清楚地看到,TP和SL价格分别低于和高于Ask和Bid,也就是说,一切都很正确。但由于某些原因,我得到了一个修改错误,因为停止是错误的。怎么说呢? Artyom Trishkin 2013.01.26 08:37 #1175 hoz:这里是订单开放功能。下面是参数打印结果。在这里你可以清楚地看到,TP和SL价格分别低于和高于Ask和Bid,也就是说,一切都很正确。但由于某些原因,我得到了一个修改错误,因为停止是错误的。怎么说呢?你甚至读过被骂的内容吗?错误的函数值 4051 无效的函数参数值如果你有什么不明白的地方,我们会和其他人一起解决......。当你下一个挂单 时,字符串if (price < Bid)当你下一个挂单时,这个字符串应该不大相关。应该检查它与MarketInfo(Symbol(), MODE_STOPLEVEL)中设置的最小允许距离是否对应。第一件事是立即引起我的注意。第二是打印订单的价格。止损和止盈不应该相对于卖出价和买入价设置,而应该相对于订单设置价格设置。 mario 2013.01.26 08:51 #1176 Zhunko: 这个图书馆 可以。 "3.3 图形属性设置函数 "章节中的ServiceSetScaleFix1To1()函数。 该图书馆只适用于俄罗斯和英语的本地化。它也可能在你那里起作用。 谢谢Zhunko。 Viktar Dzemikhau 2013.01.26 09:10 #1177 artmedia70:你甚至读过被骂的内容吗? 错误的函数值 4051 函数参数的无效值看看传递给被调用函数的参数。 当什么都不清楚的时候,我们就安安静静地把它整理出来... 我当然在读,所以我很好奇。 我解除了所有输入参数的链接。这就是我得到的东西。bool OpenSell(double price) { int ticket = -1; double SL = OrderOpenPrice() + i_sl * pt; double TP = OrderOpenPrice() - i_tp * pt; if (price < Bid) ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(price), 3, 0, 0, NULL, i_magic, 0); if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true)) { if (i_sl > 0 && OrderStopLoss() == 0) { Print("ND(price) = ", DoubleToStr(ND(price),Digits)); Print("ND(SL) = ", DoubleToStr(ND(SL),Digits)); Print("ND(TP) = ", DoubleToStr(ND(TP),Digits)); Print("ND(OOP) = ", DoubleToStr(ND(OrderOpenPrice()),Digits)); if (!OrderModify(ticket, ND(OrderOpenPrice()), ND(SL), ND(TP), 0, Red)) { Print ("Ошибка установки первичного стопа для шортов ", OrderType(), " - ", GetLastError()); Print("pt = ", pt); Print("Ask = ", Ask); Print("Bid = ", Bid); Print("SL_s = ", OrderOpenPrice() + i_sl * pt); Print("TP_s = ", OrderOpenPrice() - i_tp * pt); } } } return (true); }以下是日志中的内容。2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: TP_s = 1.4485 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: SL_s = 1.4505 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: Bid = 1.4496 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: Ask = 1.4497 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: pt = 0.0001 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: Ошибка установки первичного стопа для шортов 5 - 4051 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: OrderModify error 4051 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: invalid takeprofit for OrderModify function 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: ND(OOP) = 1.44946 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: ND(TP) = -0.00100 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: ND(SL) = 0.00100 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: ND(price) = 1.44946 2013.01.26 12:16:22 2010.01.12 01:45 Phillip_Nel's_TS_for_M5 EURUSD,M5: open #4 sell stop 0.10 EURUSD at 1.44946 ok 有些命令被修改,有些则没有。开始时ND(TP)、ND(SL) 的值被恢复为随机值。为什么?顺便说一下,正常化功能是我的。//+-------------------------------------------------------------------------------------+ //| Функция нормализации | //+-------------------------------------------------------------------------------------+ double ND(double A) { return (NormalizeDouble(A, Digits)); } Viktar Dzemikhau 2013.01.26 09:24 #1178 artmedia70:你甚至读过被骂的内容吗? 错误的函数值 4051 函数参数的无效值请看传递给要调用的函数的参数。当什么都不清楚的时候,我们会和世界一起解决这个问题......ZS.当你下达一个挂单时,该行 if (price < Bid)这并不十分恰当。你应该检查最小允许距离是否与MarketInfo(Symbol(), MODE_STOPLEVEL)中指定的距离相一致。第一件事马上吸引了我的注意。 我通常在修改订单时遇到这样的检查,但在打开订单时没有遇到。我已经看到了,如果我把待价而沽设置为bystop,那将是一个错误。而如果我设置10个点的止损,它肯定会高于StopLoss值。我不在蜱虫上交易 :) Viktar Dzemikhau 2013.01.26 09:25 #1179 artmedia70:第二,打印订单的价格。止损和止盈不应相对于卖出价和买入价,而应相对于设置订单的价格。 我想这是为了修改?毕竟,当我们开单时,对我们来说重要的是买入和卖出。我已经用上面的帖子理顺了一切。 [删除] 2013.01.26 10:23 #1180 下午好。我想让一个EA同时在几个窗口工作。但每个工具只能开一个订单。因此,现在有一个条件。int total = OrdersTotal();如果(总数<1){分析和开仓块},否则{分析和平仓块}。现在,如果它同时在两个符号上打开,在一个符号上打开就会在另一个符号上受阻。这就是为什么我编造了类似的东西。int total = OrdersTotal();int cnt; if(total>0){ for(cnt=0;cnt<total;cnt++){OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol(){ Symbol_FLAG = true;}}} 如果(total<1 || total>0 && Symbol_FLAG == false) { 分析并打开ptposition块}。但它在测试器上不起作用...也许你能告诉我,也许我在做一些无法实现的事情? [ARCHIVE]Any rookie question, so [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. 1...111112113114115116117118119120121122123124125...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午。
我写了代码,在a=true和b=true的条件下打开两个挂单(BuyStop和SellStop),一段时间后,EA关闭这两个订单,直到出现新的信号,但有时EA会在同一方向上打开两个挂单。为什么会发生这种情况,如何避免这种 "错误"?
如果(a=true &&b=true)
{
int OrderCount = OrdersTotal()。
如果(OrderCount>1)返回(0)。
ticket1=OrderSend(Symbol(), OP_BUYSTOP, getLot(), PriceOpen_Buy, slippage, PriceOpen_Sell,0,0,Green) 。
睡眠(1000)。
ticket2=OrderSend(Symbol(), OP_SELLSTOP, getLot(), PriceOpen_Sell, slippage, PriceOpen_Buy,0,0,Green) 。
Sleep(1000*59*TimeFrame);
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket())。
如果(OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket())。
如果(OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask, slippage);
如果(OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slipage)。
}
return(0);
}
你能给我一个提示吗?
预先谢谢你
你好。
是否可以在设置中输入一个固定权重为1:1的时间表?
如果有可能的话,请告诉我如何做。
提前感谢。
这个图书馆 可以。
"3.3 设置图表属性的函数 "章节中的ServiceSetScaleFix1To1()。
该图书馆只适用于俄罗斯和英语的本地化。它也可能在你那里起作用。
这里是订单开放功能。
下面是参数打印结果。
在这里你可以清楚地看到,TP和SL价格分别低于和高于Ask和Bid,也就是说,一切都很正确。但由于某些原因,我得到了一个修改错误,因为停止是错误的。怎么说呢?
这里是订单开放功能。
下面是参数打印结果。
在这里你可以清楚地看到,TP和SL价格分别低于和高于Ask和Bid,也就是说,一切都很正确。但由于某些原因,我得到了一个修改错误,因为停止是错误的。怎么说呢?
你甚至读过被骂的内容吗?
如果你有什么不明白的地方,我们会和其他人一起解决......。
当你下一个挂单 时,字符串
if (price < Bid)
当你下一个挂单时,这个字符串应该不大相关。应该检查它与MarketInfo(Symbol(), MODE_STOPLEVEL)中设置的最小允许距离是否对应。第一件事是立即引起我的注意。
第二是打印订单的价格。止损和止盈不应该相对于卖出价和买入价设置,而应该相对于订单设置价格设置。
这个图书馆 可以。
"3.3 图形属性设置函数 "章节中的ServiceSetScaleFix1To1()函数。
该图书馆只适用于俄罗斯和英语的本地化。它也可能在你那里起作用。
你甚至读过被骂的内容吗?
看看传递给被调用函数的参数。 当什么都不清楚的时候,我们就安安静静地把它整理出来...
我当然在读,所以我很好奇。 我解除了所有输入参数的链接。
这就是我得到的东西。
以下是日志中的内容。
有些命令被修改,有些则没有。开始时ND(TP)、ND(SL) 的值被恢复为随机值。为什么?
顺便说一下,正常化功能是我的。
你甚至读过被骂的内容吗?
请看传递给要调用的函数的参数。当什么都不清楚的时候,我们会和世界一起解决这个问题......
ZS.当你下达一个挂单时,该行
if (price < Bid)
这并不十分恰当。你应该检查最小允许距离是否与MarketInfo(Symbol(), MODE_STOPLEVEL)中指定的距离相一致。第一件事马上吸引了我的注意。
我通常在修改订单时遇到这样的检查,但在打开订单时没有遇到。我已经看到了,如果我把待价而沽设置为bystop,那将是一个错误。而如果我设置10个点的止损,它肯定会高于StopLoss值。我不在蜱虫上交易 :)
第二,打印订单的价格。止损和止盈不应相对于卖出价和买入价,而应相对于设置订单的价格。
我想这是为了修改?毕竟,当我们开单时,对我们来说重要的是买入和卖出。我已经用上面的帖子理顺了一切。
下午好。
我想让一个EA同时在几个窗口工作。但每个工具只能开一个订单。因此,现在有一个条件。
int total = OrdersTotal();
如果(总数<1){分析和开仓块},否则{分析和平仓块}。
现在,如果它同时在两个符号上打开,在一个符号上打开就会在另一个符号上受阻。这就是为什么我编造了类似的东西。
int total = OrdersTotal();
int cnt;
if(total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()
{
Symbol_FLAG = true;
}
}
}
如果(total<1 || total>0 && Symbol_FLAG == false) { 分析并打开ptposition块}。
但它在测试器上不起作用...
也许你能告诉我,也许我在做一些无法实现的事情?