[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 84 1...777879808182838485868788899091...537 新评论 Артур 2011.02.09 01:46 #831 NameLess: 你可能已经注意到了,真正的原因不是为了看代码,而是为了了解它是如何工作的。如果你信任专家顾问,我祝你成功,一切都会好起来的) 我个人发明了一辆自行车,并从头开始写我的猫头鹰,但我知道事情在哪里以及如何运作,并知道为什么它们不工作,以及在哪里寻找错误) 仅此而已) 谢谢你。我已经在正确的轨道上了!))))。我不得不四处挖掘,但我实现了我想要的东西(至少它以某种方式工作:))。). Артур 2011.02.09 02:04 #832 NameLess: 你知道如何设置订单号控制吗?我同意,这个问题可能会带来毫不掩饰的微笑,在某些地方会变成笑声))))。但我在mt-sh代码方面只摸索了大约一个星期。我仍然不知道所有的单词 ))))聪明))) Nameless 2011.02.09 02:15 #833 nemo811: 你知道如何设置订单号控制吗?我同意,这个问题可能会引起毫不掩饰的微笑,在一些地方变成笑声))))。但我在mt-sh代码方面只摸索了大约一个星期。我仍然不知道所有的单词 ))))聪明))) 我不能说自己是专家))))。 我不太清楚数字控制是什么意思? 如果你需要在某些条件下开两次单,你需要创建这个条件。 总的来说,我大约在半年前开始写自己的程序,一个简单的细节帮助了我:想一想你想让EA做什么,或者一个具体的代码。 在这种情况下,举个例子可能更容易,然后我就能更具体地说,如果我知道解决方案,该怎么做,怎么做:) Артур 2011.02.09 02:20 #834 第83页的例子,任务来自sergeev 代码起作用了 - 谢谢你。但是当有经验的人说这样的话时,你就会开始想,到底出了什么问题。 ))) Nameless 2011.02.09 02:24 #835 nemo811: 第83页的例子,任务来自sergeev 代码起作用了 - 谢谢你。但是当有经验的人说这样的话时,你就会开始想,到底出了什么问题。 ))) 如果代码做了它应该做的事--那么就是这样)))我的意思可能是,代码可以不停地打开订单,但我们这样做是为了让所有东西都打开并延期一次。所以它是可以的) Артур 2011.02.09 02:26 #836 NameLess: 如果代码做了它应该做的事,那就没问题))我的意思可能是,代码可以不停地开单,但我们每次开单和延期都做了一次)。 很好。再次感谢你们。 Nameless 2011.02.09 03:12 #837 nemo811: 顺便说一下,我建议把类似于 if ( OrdersTotal()!=0) { BUY = false; BUY_STOP = false; BUY_LIMIT = false; SELL = false; SELL_STOP = false; SELL_LIMIT = false; } 这是在你有未结头寸 的情况下的一种保护,以防你需要重新启动客户端,否则它将重新打开整个订单批。 我还建议问:从逻辑上思考每一条线--什么可以阻止它工作。 Владимир Тезис 2011.02.09 09:22 #838 nemo811: 这是我目前正在做的一个稍微过时的版本。作者drknn 允许我上传。 他不只是允许把它放在那里,他还公开允许随心所欲地改变代码,出售它,甚至把它的版权给你想要的人:) 只是不要在那里为权利而发生争执 :) Vigan 2011.02.09 10:48 #839 sergeev: 通过指标https://docs.mql4.com/ru/indicators/iBandsOnArray 谢谢你 Артур 2011.02.09 11:50 #840 NameLess: 顺便说一下,我建议把类似于 if ( OrdersTotal()!=0) { BUY = false; .... 这是在你有未结头寸的情况下的一种保护措施,以防你需要重新启动客户端,否则,它将重新打开整个订单批次 谢谢你--这是一个重要的观点。我已经解决了这个问题,并添加了计数器(感谢sergeev),用于计算订单。 现在的代码看起来如下(它在重启终端时不会打开不必要的数据)。 //-------------------------------------------------------------------- extern int MAGIC = 0; //уникальный номер ордера extern bool BUY = false; //открыть ордер BUY extern bool BUY_STOP = false; //поставить ордер BUY STOP extern bool BUY_LIMIT = false; //поставить ордер BUY LIMIT extern bool SELL = false; //открыть ордер SELL extern bool SELL_STOP = false; //поставить ордер SELL STOP extern bool SELL_LIMIT = false; //поставить ордер SELL LIMIT extern double Lot = 0.1; //объем ордера extern int takeprofit = 0; //уровень выставления TP, если 0, то TP не выставляется extern int stoploss = 0; //уровень выставления SL, если 0, то SL не выставляется extern int DistanceSet = 40; //расстояние от рынка для отложенника extern int Proskalz = 3; //максимально допустимое отклонение цены для рыночных ордеров //-------------------------------------------------------------------- double SL,TP; //-------------------------------------------------------------------- int start() { if (BUY) { if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy"); BUY=false; } if (SELL) { if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell"); SELL=false; } if (BUY_STOP) { if (takeprofit!=0) TP = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy Stop"); BUY_STOP=false; } if (SELL_STOP) { if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell Stop"); SELL_STOP=false; } if (BUY_LIMIT) { if (takeprofit!=0) TP = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy Limit"); BUY_LIMIT=false; } if (SELL_LIMIT) { if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell Limit"); SELL_LIMIT=false; } return(0); } void OPENORDER(string ord) { int SchBuy=SchBuy_b(MAGIC); int SchSell=SchSell_b(MAGIC); int SchBuyStop=SchBuyStop_b(MAGIC); int SchSellStop=SchSellStop_b(MAGIC); int SchBuyLimit=SchBuyLimit_b(MAGIC); int SchSellLimit=SchSellLimit_b(MAGIC); int ticket = -1; int err; while (ticket<0) { if (SchBuy<1) {if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),Proskalz,SL,TP,"",MAGIC,0);} if (SchSell<1) {if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Proskalz,SL,TP,"",MAGIC,0);} if (SchBuyStop<1) {if (ord=="Buy Stop") ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),Proskalz,SL,TP,"",MAGIC,0);} if (SchSellStop<1) {if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),Proskalz,SL,TP,"",MAGIC,0);} if (SchBuyLimit<1) {if (ord=="Buy Limit") ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),Proskalz,SL,TP,"",MAGIC,0);} if (SchSellLimit<1) {if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),Proskalz,SL,TP,"",MAGIC,0);} if (ticket==-1) //неудачная попытка { ShowERROR(); err++;Sleep(2000);RefreshRates(); } if (ticket || err >10) return; } return; } //-------------------------------------------------------------------- void ShowERROR() { int err=GetLastError(); switch ( err ) { case 1: return; case 2: Alert("Нет связи с торговым сервером ",Symbol());return; case 3: Alert("Error неправильные параметры ",Symbol());return; case 130: Alert("Error близкие стопы Ticket ",Symbol());return; case 134: Alert("Недостаточно денег ",Symbol());return; case 146: Alert("Error Подсистема торговли занята ",Symbol());return; case 129: Alert("Error Неправильная цена ",Symbol());return; case 131: Alert("Error Неправильный объем ",Symbol());return; case 4200:Alert("Error Объект уже существует ",Symbol());return; default: Alert("Error " ,err," ",Symbol());return; } } + 适当的计数器。 谢谢你。 1...777879808182838485868788899091...537 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你可能已经注意到了,真正的原因不是为了看代码,而是为了了解它是如何工作的。如果你信任专家顾问,我祝你成功,一切都会好起来的)
我个人发明了一辆自行车,并从头开始写我的猫头鹰,但我知道事情在哪里以及如何运作,并知道为什么它们不工作,以及在哪里寻找错误)
仅此而已)
谢谢你。我已经在正确的轨道上了!))))。我不得不四处挖掘,但我实现了我想要的东西(至少它以某种方式工作:))。).
你知道如何设置订单号控制吗?我同意,这个问题可能会引起毫不掩饰的微笑,在一些地方变成笑声))))。但我在mt-sh代码方面只摸索了大约一个星期。我仍然不知道所有的单词 ))))聪明)))
我不能说自己是专家))))。
我不太清楚数字控制是什么意思? 如果你需要在某些条件下开两次单,你需要创建这个条件。
总的来说,我大约在半年前开始写自己的程序,一个简单的细节帮助了我:想一想你想让EA做什么,或者一个具体的代码。
在这种情况下,举个例子可能更容易,然后我就能更具体地说,如果我知道解决方案,该怎么做,怎么做:)
第83页的例子,任务来自sergeev
代码起作用了 - 谢谢你。但是当有经验的人说这样的话时,你就会开始想,到底出了什么问题。
)))
第83页的例子,任务来自sergeev
代码起作用了 - 谢谢你。但是当有经验的人说这样的话时,你就会开始想,到底出了什么问题。
)))
如果代码做了它应该做的事--那么就是这样)))我的意思可能是,代码可以不停地打开订单,但我们这样做是为了让所有东西都打开并延期一次。所以它是可以的)
如果代码做了它应该做的事,那就没问题))我的意思可能是,代码可以不停地开单,但我们每次开单和延期都做了一次)。
很好。再次感谢你们。
顺便说一下,我建议把类似于
if ( OrdersTotal()!=0)
{
BUY = false;
BUY_STOP = false;
BUY_LIMIT = false;
SELL = false;
SELL_STOP = false;
SELL_LIMIT = false;
}
这是在你有未结头寸 的情况下的一种保护,以防你需要重新启动客户端,否则它将重新打开整个订单批。
我还建议问:从逻辑上思考每一条线--什么可以阻止它工作。
这是我目前正在做的一个稍微过时的版本。作者drknn 允许我上传。
他不只是允许把它放在那里,他还公开允许随心所欲地改变代码,出售它,甚至把它的版权给你想要的人:)
只是不要在那里为权利而发生争执 :)
通过指标https://docs.mql4.com/ru/indicators/iBandsOnArray
顺便说一下,我建议把类似于
if ( OrdersTotal()!=0)
{
BUY = false;
....
这是在你有未结头寸的情况下的一种保护措施,以防你需要重新启动客户端,否则,它将重新打开整个订单批次
谢谢你--这是一个重要的观点。我已经解决了这个问题,并添加了计数器(感谢sergeev),用于计算订单。
现在的代码看起来如下(它在重启终端时不会打开不必要的数据)。
+ 适当的计数器。
谢谢你。