任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 451 1...444445446447448449450451452453454455456457458...1178 新评论 Vitek2010v 2014.01.29 16:47 #4501 //+------------------------------------------------------------------+//| 删除和/或关闭一个订单,按数量过滤。//---------------------------------------------------------------------#property show_inputs//--------------------------------------------------------------------外部双倍MinLot = 0.01; //将被删除/关闭的最小手数extern double MaxLot = 0.1; //被删除/绕过的最大手数外部 bool Buy = false; //删除/关闭买入订单的方向。外部 bool Sell = false; //删除/关闭卖出订单的方向。 外部 bool pending = true; //删除未决订单外部 bool market = true; //关闭市场头寸extern int slippage = 2; //关闭市场头寸时的价格浮动幅度//--------------------------------------------------------------------int start(){ 双重SL,TP。 string txt=StringConcatenate("Script remove or close order, start",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); RefreshRates()。 bool error=true。 int Error,OT,Ticket,nn; 双层OOP,OL。 while(true) { for (int j = OrdersTotal()-1; j >= 0; j--) { 如果(OrderSelect(j, SELECT_BY_POS)) { 如果((OrderSymbol() == Symbol() { OL = OrderLots()。 如果(OL<MinLot || OL>MaxLot)继续。 OT = OrderType()。 如果(!市场&&OT<2)继续。 if (!pending && OT>1) 继续。 Ticket = OrderTicket()。 OOP = OrderOpenPrice()。 如果(OT==OP_BUY) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slipage,Red); 如果(错误)txt = StringConcatenate(txt,"\nClosed BUY Order",Ticket)。 else txt = StringConcatenate(txt,"\nClosing error",GetLastError())。 } 如果(OT==OP_SELL) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),slipage,Blue)。 如果(错误) txt = StringConcatenate(txt, "卖出订单关闭",Ticket;) else txt = StringConcatenate(txt,"\nError",GetLastError()," close",Ticket)。 } 如果(OT>1) { error=OrderDelete(Ticket); 如果(错误)txt = StringConcatenate(txt,"\nOrderDeleted",StrOrdersType(OT)," ",Ticket)。 else txt = StringConcatenate(txt,"\nError",GetLastError()," removal",StrOrdersType(OT)," " Ticket)。 } if (!error) { Error = GetLastError()。 如果(Error<2)继续。 如果(Error==129) { Comment("Incorrect price",TimeToStr(TimeCurrent(),TIME_SECONDS))。 睡眠(5000)。 RefreshRates()。 继续。 } 如果(Error==146) { j++; 如果(IsTradeContextBusy())睡眠(2000)。 继续。 } Comment("Error",Error," closing order N",OrderTicket(), ",TimeToStr(TimeCurrent(),TIME_SECONDS))。 } } } } int n=0。 for (j = 0; j < OrdersTotal(); j++) { 如果(OrderSelect(j, SELECT_BY_POS)) { 如果(OrderSymbol() == Symbol() { OL = OrderLots()。 如果(OL<MinLot || OL>MaxLot)继续。 OT = OrderType()。 如果(!市场&&OT<2)继续。 if (!pending && OT>1) 继续。 n++; } } } 如果(n==0)打破。 nn++。 如果(nn>10){Comment("未能关闭所有交易,仍有",n);break;}。 睡眠(1000)。 RefreshRates()。 } Comment(txt, "nScript已经完成了它的工作",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS))。 return(0);}//--------------------------------------------------------------------string StrOrdersType(int t) { 如果(t==OP_BUY)返回("买入")。 如果(t==OP_SELL)返回("卖出")。 如果(t==OP_BUYLIMIT)返回("BuyLimit")。 如果(t==OP_SELLLIMIT)返回("SellLimit")。 如果(t==OP_BUYSTOP)返回("BuyStop")。 如果(t==OP_SELLSTOP)返回("SellStop")。} //-------------------------------------------------------------------- 我应该在脚本中添加或修改什么,以按手数关闭所有货币对的所有未结订单。 Any rookie question, so How can i convert [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. Boris 2014.01.29 18:49 #4502 维特克,使用SRC 按钮来插入代码!谁需要去翻阅无法阅读的涂鸦? Evgeniy Khaynatskas 2014.01.29 19:13 #4503 pu6ka: 是的,询问价格是不可见的,但它们是:) 在可视化工具中,你可以按下暂停键,在图表属性中选择 "显示询问线 "并继续测试。MT4中的价格图通常是按Bid绘制的。 测试的质量取决于什么,如何才能将其提高到最大程度? [删除] 2014.01.29 19:25 #4504 Zver4991: 以及测试的质量取决于什么,如何才能将其提高到最大程度? 老实说,我不知道。我还不需要,在网站上查一查。 [删除] 2014.01.30 05:54 #4505 亲爱的专业人士。 你能告诉我如何在不使用周期的情况下打开挂单 的网格吗? 如果不难,请至少展示一个这样的代码的粗略例子, ,能够改变每一个后续订单的网格的步长和手数。 Alexey Subbotin 2014.01.30 10:08 #4506 Forexman77: 我把线而不是int Ticket;错误就出来了。 '=' - 左侧方括号,预计为数组('=' - 左侧方括号,预计为数组) '>' - 左方小括号,预计为数组 ('=' - 左方括号,预计为数组) '>' - 意外的令牌('>' - 意外的令牌) ')'- 预期分配('' - 预期分配) 'continue' - 'break' 或 'continue' 仅在某些循环内使用 ) 以及更多。 因此,Ticket仍然在旧版本中的某个地方被使用。我们需要对代码进行清理... Alexey Subbotin 2014.01.30 10:12 #4507 1mql: 亲爱的专业人士。 你能告诉我如何在不使用循环的情况下打开一个挂单的网格吗? 如果不难,请至少展示一个这样的代码的粗略例子。 如果你能改变网格中每个后续订单的步骤和手数。 是的,实际上,它和在一个循环中是一样的......但没有循环。向我们展示你是如何在循环中打开的,并解释你为什么不想使用循环,因为不清楚你想达到什么目的。 Vitek2010v 2014.01.30 10:56 #4508 borilunad: 维特克,使用SRC 按钮来粘贴代码!谁需要翻阅无法阅读的涂鸦呢!? //+------------------------------------------------------------------+ //| удаления и/или закрытие ордера, с фильтрацией его по объему | //--------------------------------------------------------------------- #property show_inputs //-------------------------------------------------------------------- extern double MinLot = 0.01; //минимальный лот который удаляем/закываем extern double MaxLot = 0.1; //максимальный лот который удаляем/закываем extern bool Buy = false; //удалять/закрывать направление buy ордеров extern bool Sell = false; //удалять/закрывать направление sell ордеров extern bool pending = true; //удалить отложенные ордера extern bool market = true ; //закрыть рыночные позиции extern int slippage = 2; //проскальзывание цены при закрытии рыночных позиций //-------------------------------------------------------------------- int start() { double SL,TP; string txt=StringConcatenate("Скрипт удаления или закрытие ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); RefreshRates(); bool error=true; int Error,OT,Ticket,nn; double OOP,OL; while(true) { for (int j = OrdersTotal()-1; j >= 0; j--) { if (OrderSelect(j, SELECT_BY_POS)) { if ((OrderSymbol() == Symbol())) { OL = OrderLots(); if (OL<MinLot || OL>MaxLot) continue; OT = OrderType(); if (!market && OT<2) continue; if (!pending && OT>1) continue; Ticket = OrderTicket(); OOP = OrderOpenPrice(); if (OT==OP_BUY) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,Red); if (error) txt = StringConcatenate(txt,"\nЗакрыт ордер BUY ",Ticket); else txt = StringConcatenate(txt,"\nОшибка закрытия ",GetLastError()); } if (OT==OP_SELL) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),slippage,Blue); if (error) txt = StringConcatenate(txt,"\nЗакрыт ордер SELL ",Ticket); else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," закрытия ",Ticket); } if (OT>1) { error=OrderDelete(Ticket); if (error) txt = StringConcatenate(txt,"\nУдален ордер ",StrOrdersType(OT)," ",Ticket); else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," удаления ",StrOrdersType(OT)," ",Ticket); } if (!error) { Error = GetLastError(); if (Error<2) continue; if (Error==129) { Comment("Неправильная цена ",TimeToStr(TimeCurrent(),TIME_SECONDS)); Sleep(5000); RefreshRates(); continue; } if (Error==146) { j++; if (IsTradeContextBusy()) Sleep(2000); continue; } Comment("Ошибка ",Error," закрытия ордера N ",OrderTicket(), " ",TimeToStr(TimeCurrent(),TIME_SECONDS)); } } } } int n=0; for (j = 0; j < OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS)) { if (OrderSymbol() == Symbol()) { OL = OrderLots(); if (OL<MinLot || OL>MaxLot) continue; OT = OrderType(); if (!market && OT<2) continue; if (!pending && OT>1) continue; n++; } } } if (n==0) break; nn++; if (nn>10) {Comment("Не удалось закрыть все сделки, осталось еще ",n);break;} Sleep(1000); RefreshRates(); } Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); return(0); } //-------------------------------------------------------------------- string StrOrdersType(int t) { if (t==OP_BUY) return("Buy"); if (t==OP_SELL) return("Sell"); if (t==OP_BUYLIMIT) return("BuyLimit"); if (t==OP_SELLLIMIT) return("SellLimit"); if (t==OP_BUYSTOP) return("BuyStop"); if (t==OP_SELLSTOP) return("SellStop"); } //-------------------------------------------------------------------- 我应该增加或改变什么,以按手数关闭所有货币对的所有未结订单。 回复|删除|编辑 [删除] 2014.01.30 19:12 #4509 Vitek2010: 我应该增加或改变什么,以按手数关闭所有货币对的所有未结订单。 回复|删除|编辑 在最后一个extern下面。 extern int slippage = 2; // 关闭市场头寸时的价格滑点 再插入一个。 extern bool total_symb = true; //在所有对上 并在每条线上。 如果((OrderSymbol() ==Symbol() и 如果(OrderSymbol() ==Symbol()) 用这个来代替。 如果(OrderSymbol() ==Symbol() || total_symb) 理论上应该可以,请检查。 [删除] 2014.01.31 06:08 #4510 问题出现了,是否有可能写一个专家顾问 或脚本,这将是为了实现例如2%的损失在当天将关闭所有交易? 1...444445446447448449450451452453454455456457458...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
//--------------------------------------------------------------------
我应该在脚本中添加或修改什么,以按手数关闭所有货币对的所有未结订单。
是的,询问价格是不可见的,但它们是:)
在可视化工具中,你可以按下暂停键,在图表属性中选择 "显示询问线 "并继续测试。MT4中的价格图通常是按Bid绘制的。
测试的质量取决于什么,如何才能将其提高到最大程度?
以及测试的质量取决于什么,如何才能将其提高到最大程度?
亲爱的专业人士。
你能告诉我如何在不使用周期的情况下打开挂单 的网格吗?
如果不难,请至少展示一个这样的代码的粗略例子,
,能够改变每一个后续订单的网格的步长和手数。
我把线
而不是int Ticket;错误就出来了。
'=' - 左侧方括号,预计为数组('=' - 左侧方括号,预计为数组)
'>' - 左方小括号,预计为数组 ('=' - 左方括号,预计为数组)
'>' - 意外的令牌('>' - 意外的令牌)
')'- 预期分配('' - 预期分配)
'continue' - 'break' 或 'continue' 仅在某些循环内使用 )
以及更多。
因此,Ticket仍然在旧版本中的某个地方被使用。我们需要对代码进行清理...
亲爱的专业人士。
你能告诉我如何在不使用循环的情况下打开一个挂单的网格吗?
如果不难,请至少展示一个这样的代码的粗略例子。
如果你能改变网格中每个后续订单的步骤和手数。
维特克,使用SRC 按钮来粘贴代码!谁需要翻阅无法阅读的涂鸦呢!?
我应该增加或改变什么,以按手数关闭所有货币对的所有未结订单。
我应该增加或改变什么,以按手数关闭所有货币对的所有未结订单。
在最后一个extern下面。
extern int slippage = 2; // 关闭市场头寸时的价格滑点
再插入一个。
extern bool total_symb = true; //在所有对上
并在每条线上。
如果((OrderSymbol() ==Symbol()
и
如果(OrderSymbol() ==Symbol())
用这个来代替。
如果(OrderSymbol() ==Symbol() || total_symb)
理论上应该可以,请检查。