如何将指标代码添加到 expertadvisor 代码中? - 页 4 12345678910 新评论 [删除] 2012.05.17 07:31 #31 如何写出只有一个方向的开仓? 因为我的EA同时开了两个方向的仓位,买入和卖出。 我只是编辑了代码并在上面添加了else;。 它是正确的吗? 这里是代码。 if ((diClose0<diMA1))&&(ZigZagLow){ OpenBuy(); return(0); } else; if ((diClose2>diMA3))&&(ZigZagHigh){ OpenSell(); return(0); } Simon Gniadkowski 2012.05.17 08:05 #32 albert_lim83: 终于解决了变量问题。 现在只有 ( - 函数定义出乎意料 )--不平衡的右括号...... 它是我的代码上的左放(和)吗? 你有这个 . . . double zag, zig; b=0; while(a<2) { . . . 你的结束语} 在哪里? ? [删除] 2012.05.17 08:30 #33 if (!ExistPositions()){ if ((diClose0<diMA1))&&(ZigZagLow){ OpenBuy(); return(0); } else; if ((diClose2>diMA3))&&(ZigZagHigh){ OpenSell(); return(0); } } return (0); } bool ExistPositions() { for (int i=100; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { return(True); } } } return(false); } void OpenBuy() { double ldLot, ldStop, ldTake; string lsComm; ldLot = GetSizeLot(); ldStop = GetStopLossBuy(); ldTake = GetTakeProfitBuy(); lsComm = GetCommentForOrder(); OrderSend(Symbol (),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,0,0,clOpenBuy); } void OpenSell() { double ldLot, ldStop, ldTake; string lsComm; ldLot = GetSizeLot(); ldStop = GetStopLossSell(); ldTake = GetTakeProfitSell(); lsComm = GetCommentForOrder(); OrderSend(Symbol (),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,0,0,clOpenSell); } string GetCommentForOrder() { return(Name_Expert); } double GetSizeLot() { return(Lots); } double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); } double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); } double GetStopLossBuy() { return(Bid-lStopLoss*Point); } double GetStopLossSell() { return(Ask+sStopLoss*Point); } 错误是 ExistPositions - 不允许在全局范围的表达式 和 } - 不平衡的括号。 [删除] 2012.05.17 08:35 #34 只是不知道为什么错误总是变化? 在我修复了这个之后。 然后在那里出错。 在那里修复后。 这里出错。 Simon Gniadkowski 2012.05.17 08:45 #35 albert_lim83:错误是ExistPositions - 不允许在全局范围的表达式和 } - 不平衡的括号。好的,你已经声明了 这个函数. .我调整了缩进方式,使我更容易阅读 . . bool ExistPositions() { for (int i=100; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { return(True); } } } return(false); } 这段代码 .......这个函数声明......必须在 任何其他函数之外,所以它必须在start、init、deinit等之外。 Simon Gniadkowski 2012.05.17 08:47 #36 albert_lim83: 只是不知道为什么错误总是变化? 在我修复了这个之后。 然后在那里出错。 在那里修复后。 这里出错。 因为一个错误掩盖了另一个错误 ......解决了一个错误,另一个错误就会被编译器发现 ......例如,你可能有正确的大括号数量,但可能在错误的地方 ......或者你可能漏掉了闭合大括号和开放大括号 ......所以数量相符,但却是错误的。......或者你可能漏掉了一个闭合大括号和一个开放大括号......所以数字相符但却是错误的。 [删除] 2012.05.17 09:11 #37 RaptorUK: 好了,你已经声明了 这个函数 . . . 我已经调整了缩进,以使我更容易阅读 . . 这段代码 .......这个函数声明......必须在 任何其他函数之外,所以它必须在start、init、deinit等的外面。 仍然是同样的错误... ExistPositions - 不允许在全局范围内的表达式 和 } - 不平衡的括号。 我应该改哪里? Simon Gniadkowski 2012.05.17 09:18 #38 albert_lim83: 我应该在哪里改变? 我不知道......给你看完整的代码。 onewithzachy 2012.05.17 09:27 #39 RaptorUK: 我不知道...给你看完整的代码。同意!。没有完整的代码,我们也帮不上什么忙,所以不要期望更多。 用MetaEditor 5编译的。 if(!ExistPositions()) { if((diClose0<diMA1)) && (ZigZagLow) // <<== ??? { OpenBuy(); return(0); } else; // <<=== ??? if((diClose2>diMA3)) && (ZigZagHigh) // <<=== ??? { OpenSell(); return(0); } } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool ExistPositions() { for(int i=100; i<OrdersTotal(); i++) // <<=== strange calculation { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol()) { return(True); } } } return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenBuy() { double ldLot,ldStop,ldTake; string lsComm; ldLot=GetSizeLot(); ldStop = GetStopLossBuy(); ldTake = GetTakeProfitBuy(); lsComm = GetCommentForOrder(); OrderSend(Symbol (),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,0,0,clOpenBuy); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenSell() { double ldLot,ldStop,ldTake; string lsComm; ldLot=GetSizeLot(); ldStop = GetStopLossSell(); ldTake = GetTakeProfitSell(); lsComm = GetCommentForOrder(); OrderSend(Symbol (),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,0,0,clOpenSell); } string GetCommentForOrder() { return(Name_Expert); } double GetSizeLot() { return(Lots); } double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); } double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); } double GetStopLossBuy() { return(Bid-lStopLoss*Point); } double GetStopLossSell() { return(Ask+sStopLoss*Point); } onewithzachy 2012.05.17 09:31 #40 也许这应该这样写? if(!ExistPositions()) { if(diClose0 < diMA1 && (ZigZagLow)) // <<== ??? { OpenBuy(); return(0); } else // <<=== ??? { if(diClose2 > diMA3 && (ZigZagHigh)) // <<=== ??? { OpenSell(); return(0); } } } 12345678910 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如何写出只有一个方向的开仓?
因为我的EA同时开了两个方向的仓位,买入和卖出。
我只是编辑了代码并在上面添加了else;。
它是正确的吗?
这里是代码。
终于解决了变量问题。
现在只有
( - 函数定义出乎意料
)--不平衡的右括号......
它是我的代码上的左放(和)吗?
你有这个 . . .
. . . 你的结束语} 在哪里? ?
错误是
ExistPositions - 不允许在全局范围的表达式
和 } - 不平衡的括号。
只是不知道为什么错误总是变化?
在我修复了这个之后。
然后在那里出错。
在那里修复后。
这里出错。
错误是
ExistPositions - 不允许在全局范围的表达式
和 } - 不平衡的括号。
好的,你已经声明了 这个函数. .我调整了缩进方式,使我更容易阅读 . .
这段代码 .......这个函数声明......必须在 任何其他函数之外,所以它必须在start、init、deinit等之外。
只是不知道为什么错误总是变化?
在我修复了这个之后。
然后在那里出错。
在那里修复后。
这里出错。
好了,你已经声明了 这个函数 . . . 我已经调整了缩进,以使我更容易阅读 . .
这段代码 .......这个函数声明......必须在 任何其他函数之外,所以它必须在start、init、deinit等的外面。
仍然是同样的错误...
ExistPositions - 不允许在全局范围内的表达式
和 } - 不平衡的括号。
我应该改哪里?
我应该在哪里改变?
我不知道...给你看完整的代码。
同意!。没有完整的代码,我们也帮不上什么忙,所以不要期望更多。
用MetaEditor 5编译的。
也许这应该这样写?