[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 750 1...743744745746747748749750751752753754755756757...1145 新评论 [删除] 2010.07.24 19:44 #7491 ToLik_SRGV: 这是正确的,我认为鲁斯塔姆暗示了这一点。 是的,我在发帖后看了一下 :) [删除] 2010.07.24 19:45 #7492 谢谢大家,我这就回去工作 :) FoxUA 2010.07.24 20:19 #7493 我不明白为什么有全局变量 #property copyright "Copyright © 2010, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" bool b,s, bs, ss, bt, st; double bl,sl; //+------------------------------------------------------------------+ 它们被用来打开订单 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(bs==1&&bl==1) { NewOrder1(OP_BUYLIMIT,Lot); Today=TimeDay(TimeCurrent()) ;} return(0);} //+------------------------------------------------------------------+ int NewOrder1(int Cmd,double Lot) {double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена double LT=0; //Лот while(!IsTradeAllowed()) Sleep(100); if(Cmd==OP_BUYLIMIT) {PR=Ask-Point*h; if(TakeProfit>0) TP=PR+TakeProfit*Point; if(StopLoss>0) SL=PR-StopLoss*Point; if(Lot>0) LT=3*Lot; } int tic=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE); if(tic<0) {Print(GetLastError()); }else { b=0;s=0; bs=0; ss=0; bt=0; st=0; bl=0;sl=0; } return(tic);} 如果一个订单的票数大于0,这个函数应该工作 else { b=0;s=0; bs=0; ss=0; bt=0; st=0; bl=0;sl=0; } 这应该把所有全局变量的值 改为0,并且不再打开一个新的订单。 但它却不知不觉地回到了开单状态,并在每一个新的tick上打开新的订单。 这种奇怪现象的原因是什么? 在关闭市场订单时,全局变量从这里开始设置 for(int cnt=OrdersHistoryTotal();cnt>0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); {if(OrderMagicNumber()== mag && OrderSymbol()==Symbol()) { if (OrderType() == OP_BUY ) {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;} if (OrderType() == OP_SELL) {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;} } } } 这里也是完整的专家顾问 附加的文件: test8_2.mq4 7 kb [删除] 2010.07.24 20:33 #7494 FoxUA: 人们,帮助我,我不明白...... 为这些变量填充数值的块在哪里? 我想看看你的专家顾问的确切代码,以它被编译和测试的形式。 不是零碎的,因为这个问题已经存在了相当长的时间,而且已经不止一次得到了回答,但是因为这些零碎的东西,没有人能够完全理解问题的全貌。因此,请展示整个画面,这样就不会有任何混淆了。 FoxUA 2010.07.24 20:37 #7495 ToLik_SRGV: 为这些变量填充数值的块在哪里? 我想看看你的EA的确切代码,以它被编译和测试的形式。 不是零碎的,因为这个问题已经存在了相当长的时间,而且已经被回答了很多次,但由于这些零碎的问题,没有人能够完全理解问题的全貌。 因此,请展示整个画面,这样就不会有任何混淆了。 这里是整个Ea 附加的文件: test8_1.mq4 7 kb [删除] 2010.07.24 20:57 #7496 在 "我可以免费写一个EA "的主题中询问,并不总是得到回应? [删除] 2010.07.24 21:15 #7497 diaspar: 在 "我可以免费写一个EA "的主题中询问,并不总是得到回应? 让我问你,你有多少次是免费去工作的? 这就是他们回应的频率。 Sceptic Philozoff 2010.07.24 21:22 #7498 diaspar: 在 "我可以免费写一个EA "的主题中询问,并不总是得到回应? 该话题是由话题发起人发起的。然而,他收到的请求远比他能够消化的要多。从逻辑上讲,他应该做出回应--他是要求的一方。你期待什么? [删除] 2010.07.24 21:24 #7499 FoxUA: 我不知道我的EA出了什么问题,我已经尝试了所有的方法,唯一的结果是每一个tick+1个挂单,唯一的问题是当我关闭另一个市场时,一个变量会打开另一个,并在每一个tick上打开一个新的市场。 正在进行中... 最有可能的是,错误出在为这些变量填充数值的区块中(在for 循环中),我已经在那里发现了一个错误(在OrderSelect() 中),但结果还没有改变。这似乎是区块逻辑中的某个地方出现了错误。 P.S. 请改成正常符号大小写。 [删除] 2010.07.24 21:31 #7500 FoxUA: 当然,错误是显而易见的,它在每一个tick 上开仓,因为历史上的亏损订单没有去任何地方,所以它在每一个tick上找到它,并将控制变量的值填充为相同的值,然后开仓交易的块就会触发。 1...743744745746747748749750751752753754755756757...1145 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是正确的,我认为鲁斯塔姆暗示了这一点。
我不明白为什么有全局变量
它们被用来打开订单
如果一个订单的票数大于0,这个函数应该工作
这应该把所有全局变量的值 改为0,并且不再打开一个新的订单。
但它却不知不觉地回到了开单状态,并在每一个新的tick上打开新的订单。
这种奇怪现象的原因是什么?
在关闭市场订单时,全局变量从这里开始设置
这里也是完整的专家顾问
人们,帮助我,我不明白......
为这些变量填充数值的块在哪里?
我想看看你的专家顾问的确切代码,以它被编译和测试的形式。
不是零碎的,因为这个问题已经存在了相当长的时间,而且已经不止一次得到了回答,但是因为这些零碎的东西,没有人能够完全理解问题的全貌。
因此,请展示整个画面,这样就不会有任何混淆了。
为这些变量填充数值的块在哪里?
我想看看你的EA的确切代码,以它被编译和测试的形式。
不是零碎的,因为这个问题已经存在了相当长的时间,而且已经被回答了很多次,但由于这些零碎的问题,没有人能够完全理解问题的全貌。
因此,请展示整个画面,这样就不会有任何混淆了。
这里是整个Ea
在 "我可以免费写一个EA "的主题中询问,并不总是得到回应?
在 "我可以免费写一个EA "的主题中询问,并不总是得到回应?
这就是他们回应的频率。
在 "我可以免费写一个EA "的主题中询问,并不总是得到回应?
我不知道我的EA出了什么问题,我已经尝试了所有的方法,唯一的结果是每一个tick+1个挂单,唯一的问题是当我关闭另一个市场时,一个变量会打开另一个,并在每一个tick上打开一个新的市场。
正在进行中...
最有可能的是,错误出在为这些变量填充数值的区块中(在for 循环中),我已经在那里发现了一个错误(在OrderSelect() 中),但结果还没有改变。这似乎是区块逻辑中的某个地方出现了错误。
P.S.
请改成正常符号大小写。
当然,错误是显而易见的,它在每一个tick 上开仓,因为历史上的亏损订单没有去任何地方,所以它在每一个tick上找到它,并将控制变量的值填充为相同的值,然后开仓交易的块就会触发。