[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 450 1...443444445446447448449450451452453454455456457...652 新评论 Artyom Trishkin 2011.12.23 18:09 #4491 T-G: 是的,但问题的关键是前一个订单是以负数平仓的,函数没有时间显示这个,首先订单在几个点后被打开,然后函数才显示最后的损失,但订单已经被打开。 我写了一个带检查的代码骨架 T-G 2011.12.23 18:44 #4492 我这样做了,再次说没有时间 检查,首先它通过了,好像没有麋鹿,打开了一个交易,然后它来到了他,有一个麋鹿。 olegarh 2011.12.23 18:47 #4493 artmedia70:为什么不使用 "到期 "挂单参数。当然,也有可能无法使用这个参数。在一些交易服务器上,挂单的到期时间可能被禁止。在这种情况下,当试图在过期 参数中设置一个非零值时,将产生一个错误147(ERR_TRADE_EXPIRATION_DENIED)。这是唯一的办法,当然...我按照你的建议修改了这一行,专家顾问停止了工作......。 ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,TimeCurrent()+10*60,Green) 同时,我知道肯定没有禁令。 请告知错误可能出在哪里。 Artyom Trishkin 2011.12.23 18:47 #4494 T-G: 我这样做了,再次说没有时间 检查,首先它通过了,好像没有麋鹿,打开了一个交易,然后它来到了他,有一个麋鹿。 奇迹不会发生。你应该去见一个心灵感应者... Artyom Trishkin 2011.12.23 19:05 #4495 OlegArH: 我按照你的建议对该行进行了修改,专家顾问停止了工作......。 ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,TimeCurrent()+10*60,Green) 同时,我知道肯定没有禁令。 请告知错误可能出在哪里。 它不太可能停止工作,但你的标准很可能是有缺陷的。没有代码,就很难想出EA不工作的原因。 olegarh 2011.12.24 05:18 #4496 artmedia70: 它不太可能停止工作,但你的标准可能是跛脚。没有代码,很难想到EA不工作的原因... 这是我到目前为止潦草写下的所有内容。 外部双倍TakeProfit = 50;外置双倍止损=100。外来的双倍PriceDistance = 50;外来的双倍Lots = 1;外来的双倍TrailingStop = 50。//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start(){int cnt, ticket, total; total=OrdersTotal()。如果(total<1) {ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,0,Green);睡眠(10000)。ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,Bid-PriceDistance*Point-TakeProfit*Point, "PD",2,0,Red)} for(cnt=0;cnt<total;cnt++){OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。如果(OrderType()<=OP_SELL && // 检查开仓情况 OrderSymbol()==Symbol()) //检查符号{如果(OrderType()==OP_BUY) // 多头头寸被打开。{//应该关闭吗?如果(1!=1){OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 关闭头寸return(0); // 退出}// 检查拖曳式止损如果(TrailingStop>0) { 如果(Bid-OrderOpenPrice()>Point*TrailingStop){如果(OrderStopLoss()<Bid-Point*TrailingStop){OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。return(0);}}}}否则 // 转入空头头寸{//应该关闭吗?如果(1!=1){OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置return(0); // 退出}// 检查拖曳式止损如果(TrailingStop>0) { 如果((OrderOpenPrice()-Ask)>(Point*TrailingStop)){如果((OrderStopLoss()>(Ask+Point*TrailingStop)) ||(OrderStopLoss()==0)){OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。return(0);}}}}}}return(0);}//结束。 它是这样工作的....但是,相应地,开启了无限期的交易,爬行者。 提前感谢! 10点3.mq4 如何编码? 问吧! Роман 2011.12.24 05:26 #4497 OlegArH: 这是我到目前为止潦草写下的所有内容。 外部双倍TakeProfit = 50;外置双倍止损=100。外来的双倍PriceDistance = 50;外来的双倍Lots = 1;外来的双倍TrailingStop = 50。//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start() { int cnt, ticket, total; total=OrdersTotal()。 如果(total<1) { ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,0,Green); 睡眠(10000)。 ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,Bid-PriceDistance*Point-TakeProfit*Point, "PD",2,0,Red) } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 如果(OrderType()<=OP_SELL && // 检查开仓的情况 OrderSymbol()==Symbol()) //检查符号 { 如果(OrderType()==OP_BUY) // 多头头寸被打开。 { //应该关闭吗? 如果(1!=1) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 关闭头寸 return(0); // 退出 } // 检查拖曳式止损 如果(TrailingStop>0) { 如果(Bid-OrderOpenPrice()>Point*TrailingStop) { 如果(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。 return(0); } } } } 否则 // 转入空头头寸 { //应该关闭吗? 如果(1!=1) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭位置 return(0); // 退出 } // 检查拖曳式止损 如果(TrailingStop>0) { 如果((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { 如果((OrderStopLoss()>(Ask+Point*TrailingStop)) ||(OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。 return(0); } } } } } } return(0); }//结束。 它是这样工作的....但是,相应地,开启了无限期的交易,爬行者。 提前感谢! 学习如何插入代码--全部 阅读。 olegarh 2011.12.24 06:02 #4498 Roman.: 学习如何插入代码--全部 阅读。罗曼,谢谢你的回答! 我所要做的是,让机器人从自动开启交易的那一刻起就开启交易的时间。 例如,机器人打开一个TARGET交易,自动设置到期时间为当前时间的+600秒,就是这样....。 在这种情况下,当他自己删除他们的选项不适合,因为TC上,我 "训练 "有限制的修改挂单,如果价格接近10点+点差的开盘价,包括那些尚未打开订单。 此外,重点是,如果一个订单已经打开,它不应该被删除,但我们应该让它 "玩完",泡到它 "死"。而如果我们设置了orderdelite,该函数也将关闭已经触发的订单。(?) 至于教科书--好吧,从气质上讲我不是一个程序员,我是一个出色的人道主义者--我画画、做模型、作曲,不为其他事情磨刀霍霍!) 我一直在努力真诚地进入它。有些是有意义的,有些则是没有意义的。 这就是我在这里的原因..... Artyom Trishkin 2011.12.24 08:02 #4499 OlegArH: 罗曼,谢谢你的答复 这只是一个问题,让机器人从自动开启交易的那一刻起就按时开启交易。 例如,机器人打开一个TARGET交易,自动设置到期时间为当前时间的+600秒,就是这样....。 在这种情况下,当他自己删除他们的选项不适合,因为TC上,我 "训练 "有限制的修改挂单,如果价格接近10点+点差的开盘价,包括那些尚未打开订单。 此外,重点是,如果一个订单已经打开,它不应该被删除,而是应该允许它 "玩完",然后失败。而如果我们设置了orderdelite,该函数也将关闭已经触发的订单。(?) 至于教科书--好吧,从气质上讲我不是一个程序员,我是一个出色的人道主义者--我画画、做模型、作曲,不为其他事情磨刀霍霍!) 我一直在努力真诚地进入它。有些是有意义的,有些则是没有意义的。 这就是我在这里的原因..... 试着用文字描述你在这里写的东西。 extern double TakeProfit = 50; extern double StopLoss=100; extern double PriceDistance = 50; extern double Lots = 1; extern double TrailingStop = 50; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int cnt, ticket, total; total=OrdersTotal(); if(total<1) { ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point, Ask+PriceDistance*Point+TakeProfit*Point,"PD",1,0,Green); Sleep (10000); ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point, Bid-PriceDistance*Point-TakeProfit*Point,"PD",2,0,Red); } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) { // check for symbol if(OrderType()==OP_BUY) { // long position is opened if(1!=1) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else { // go to short position // should it be closed? if(1!=1) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } 就我个人而言,第一眼看到的是一个难题,你的想法是:如果一不等于一,那么就关闭订单...... 之后我没有再看其他的节目... ZS,不要尝试,甚至不要认为有可能在一个周期内编写一个正常的EA...... Роман 2011.12.24 08:31 #4500 OlegArH: ...如果你放了orderdelite,该函数也会关闭已经被触发的订单。(?) ... 不, 仔细看一下。被触发的挂单成为市场订单--这个功能与它无关。 "删除先前设定的待定订单。如果函数成功完成,返回TRUE。返回FALSE 如果该函数没有成功完成,则为调用GetLastError()来获取错误信息。" 1...443444445446447448449450451452453454455456457...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,但问题的关键是前一个订单是以负数平仓的,函数没有时间显示这个,首先订单在几个点后被打开,然后函数才显示最后的损失,但订单已经被打开。
为什么不使用 "到期 "挂单参数。
当然,也有可能无法使用这个参数。
在一些交易服务器上,挂单的到期时间可能被禁止。在这种情况下,当试图在过期 参数中设置一个非零值时,将产生一个错误147(ERR_TRADE_EXPIRATION_DENIED)。
这是唯一的办法,当然...
我按照你的建议修改了这一行,专家顾问停止了工作......。
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,TimeCurrent()+10*60,Green)
同时,我知道肯定没有禁令。
请告知错误可能出在哪里。
我这样做了,再次说没有时间 检查,首先它通过了,好像没有麋鹿,打开了一个交易,然后它来到了他,有一个麋鹿。
我按照你的建议对该行进行了修改,专家顾问停止了工作......。
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,TimeCurrent()+10*60,Green)
同时,我知道肯定没有禁令。
请告知错误可能出在哪里。
它不太可能停止工作,但你的标准可能是跛脚。没有代码,很难想到EA不工作的原因...
这是我到目前为止潦草写下的所有内容。
外部双倍TakeProfit = 50;//结束。
它是这样工作的....但是,相应地,开启了无限期的交易,爬行者。
提前感谢!
这是我到目前为止潦草写下的所有内容。
外部双倍TakeProfit = 50;//结束。
它是这样工作的....但是,相应地,开启了无限期的交易,爬行者。
提前感谢!
学习如何插入代码--全部 阅读。
学习如何插入代码--全部 阅读。
罗曼,谢谢你的回答!
我所要做的是,让机器人从自动开启交易的那一刻起就开启交易的时间。
例如,机器人打开一个TARGET交易,自动设置到期时间为当前时间的+600秒,就是这样....。
在这种情况下,当他自己删除他们的选项不适合,因为TC上,我 "训练 "有限制的修改挂单,如果价格接近10点+点差的开盘价,包括那些尚未打开订单。
此外,重点是,如果一个订单已经打开,它不应该被删除,但我们应该让它 "玩完",泡到它 "死"。而如果我们设置了orderdelite,该函数也将关闭已经触发的订单。(?)
至于教科书--好吧,从气质上讲我不是一个程序员,我是一个出色的人道主义者--我画画、做模型、作曲,不为其他事情磨刀霍霍!)
我一直在努力真诚地进入它。有些是有意义的,有些则是没有意义的。
这就是我在这里的原因.....
罗曼,谢谢你的答复
这只是一个问题,让机器人从自动开启交易的那一刻起就按时开启交易。
例如,机器人打开一个TARGET交易,自动设置到期时间为当前时间的+600秒,就是这样....。
在这种情况下,当他自己删除他们的选项不适合,因为TC上,我 "训练 "有限制的修改挂单,如果价格接近10点+点差的开盘价,包括那些尚未打开订单。
此外,重点是,如果一个订单已经打开,它不应该被删除,而是应该允许它 "玩完",然后失败。而如果我们设置了orderdelite,该函数也将关闭已经触发的订单。(?)
至于教科书--好吧,从气质上讲我不是一个程序员,我是一个出色的人道主义者--我画画、做模型、作曲,不为其他事情磨刀霍霍!)
我一直在努力真诚地进入它。有些是有意义的,有些则是没有意义的。
这就是我在这里的原因.....
试着用文字描述你在这里写的东西。
就我个人而言,第一眼看到的是一个难题,你的想法是:如果一不等于一,那么就关闭订单......
之后我没有再看其他的节目...
ZS,不要尝试,甚至不要认为有可能在一个周期内编写一个正常的EA......
...如果你放了orderdelite,该函数也会关闭已经被触发的订单。(?)
...
不, 仔细看一下。被触发的挂单成为市场订单--这个功能与它无关。
"删除先前设定的待定订单。如果函数成功完成,返回TRUE。返回FALSE
如果该函数没有成功完成,则为调用GetLastError()来获取错误信息。"