[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 198 1...191192193194195196197198199200201202203204205...652 新评论 [Deleted] 2011.09.20 11:53 #1971 mmmmm....我个人认为它写得很好--唯一的问题是代码片段的位置....。你能正确地放置它吗? 我不清楚如何做到这一点。 Виктор 2011.09.20 11:53 #1972 splxgf: 说实话,我不知道你是否可以在另一个功能中描述一个功能,我从来没有遇到过。 不要迷惑我们这些黑衣人。在这个分支的层面上,只需说明所有的用户函数必须位于启动函数之外。 Всеволод 2011.09.20 12:01 #1973 CLAIN: mmmmm....就我个人而言,我认为它写得很正确--唯一的问题是代码片断的位置....。我不知道该怎么做。 好吧,我不会准确地发布它,但正如已经写过的那样,所有的自定义功能都无法启动。 在概念层面 开始(){}。 MACD{} AnalyzeSignal(){}。 将自定义函数的描述删除到一个单独的文件中,确保程序的其余部分在编译时没有错误括号信息,并将每个函数停靠在结果代码的最末端。 [Deleted] 2011.09.20 12:32 #1974 谢谢你,它起作用了=)只是交易没有打开,但这是件小事=)没有你就做不到了 ) //+------------------------------------------------------------------+ //| MACD ^^^.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern int TP = 100; extern int TS = 100; extern double lots = 0.1; int slip = 3; int Magic = 1; int total; int ticket = 0; //объявил тотал и тикет //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int signal = signal_MACD(); AnalyzeSignal(signal); //---- return(0); } //+------------------------------------------------------------------+ int signal_MACD() { int MACD[8] = {0,1,2,3,4,5,6,7}; MACD[0] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,7); MACD[1] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,6); MACD[2] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,5); MACD[3] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,4); MACD[4] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,3); MACD[5] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,2); MACD[6] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,1); MACD[7] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,0); total = OrdersTotal(); if(total<1) { if(MACD[0]<0) { if(MACD[1]>0) { if(MACD[2]>0) { if(MACD[3]>0) { if(MACD[4]>0) { if(MACD[5]>0) { if(MACD[6]>0) { if(MACD[7]<0) { return(-100); } } } } } } } } if(MACD[0]>0) { if(MACD[1]<0) { if(MACD[2]<0) { if(MACD[3]<0) { if(MACD[4]<0) { if(MACD[5]<0) { if(MACD[6]<0) { if(MACD[7]>0) { return(100); } } } } } } } } } } void AnalyzeSignal(int signal) { if(signal == 100) { ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"покупаем",Magic,0,Green); if(ticket>0) { OrderSelect(ticket,SELECT_BY_TICKET); Print("открылись на покупку по цене:", OrderOpenPrice()); } else { Print("открыться не удалось по причине:", GetLastError()); return(0); } } if(signal == -100) { ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продаем",Magic,0,Green); if(ticket>0) { OrderSelect(ticket,SELECT_BY_TICKET); Print("открылись на продажу по цене:", OrderOpenPrice()); } else { Print("открыться не удалось по причине:", GetLastError()); return(0); } } } --- 2011.09.20 12:38 #1975 向程序员请教 1 Metamql 20.09.2011 14:31 亲爱的专业人士,请给予一些建议。有两条移动平均线,周期为5和60。当快速MA从底部向上越过慢速MA+过滤器时,就会开启一个买入交易。问题是,如何使一笔交易只开一次,当它关闭时,不开新的交易,即使有合适的条件可以开,直到有一个反向交叉点? [Deleted] 2011.09.20 12:38 #1976 你好。 请帮助--请回复我在第196页的帖子。(关于int MAGIC的问题;) 预先感谢你。 Victor Nikolaev 2011.09.20 12:42 #1977 nemo811:你好。请帮助--请回复我在第196页的帖子。(关于int MAGIC的问题;)预先感谢你。 你是否尝试过制作带参数的函数?因此,为了不使用外部全局变量(每个人都可以用自己的名字来称呼它们)。 Sergey Guliaev 2011.09.20 12:47 #1978 sergeev: 向程序员请教 1 Metamql 20.09.2011 14:31 亲爱的专业人士,请给予一些建议。有两条移动平均线,周期为5和60。当快速MA从下往上越过慢速MA+过滤器时,交易在买入时开启。问题是,如何使一笔交易只开一次,当它关闭时,不开新的交易,即使有合适的条件可以开,直到出现反向交叉? 设置一个标志,禁止进一步打开,并在穿越回来时移除标志,可以延迟几个小节以避免反弹。 [Deleted] 2011.09.20 12:47 #1979 Vinin: 你有没有试过制作带参数的函数?因此,为了不使用外部全局变量(每个人都可以用自己的方式称呼它们)我的意思是,像。 int OrdTicket_b(int MAGIC) { string SMB=Symbol(); int OrdTicket; int i; for(i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true) { if(OrderSymbol()==SMB) { if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { OrdTicket=OrderTicket(); } } } } } return(OrdTicket); } ??? ...和条件 if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777) 将被正确地跟踪? Victor Nikolaev 2011.09.20 13:05 #1980 nemo811:我的意思是,像。???...和条件 将被正确地跟踪?int OrdTicket_b(int lMAGIC) { string SMB=Symbol(); int OrdTicket=0; int i; for(i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true) { if(OrderSymbol()==SMB) { if(OrderMagicNumber()==lMAGIC) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { OrdTicket=OrderTicket(); } } } } } return(OrdTicket); } 像这样,变量OrdTicket应该被赋予一些默认值。否则就没有空缺职位,函数将返回一些东西 1...191192193194195196197198199200201202203204205...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
说实话,我不知道你是否可以在另一个功能中描述一个功能,我从来没有遇到过。
mmmmm....就我个人而言,我认为它写得很正确--唯一的问题是代码片断的位置....。我不知道该怎么做。
好吧,我不会准确地发布它,但正如已经写过的那样,所有的自定义功能都无法启动。
在概念层面
开始(){}。
MACD{}
AnalyzeSignal(){}。
将自定义函数的描述删除到一个单独的文件中,确保程序的其余部分在编译时没有错误括号信息,并将每个函数停靠在结果代码的最末端。
谢谢你,它起作用了=)只是交易没有打开,但这是件小事=)没有你就做不到了 )
向程序员请教
你好。
请帮助--请回复我在第196页的帖子。(关于int MAGIC的问题;)
预先感谢你。
你好。
请帮助--请回复我在第196页的帖子。(关于int MAGIC的问题;)
预先感谢你。
你是否尝试过制作带参数的函数?因此,为了不使用外部全局变量(每个人都可以用自己的名字来称呼它们)。
向程序员请教
设置一个标志,禁止进一步打开,并在穿越回来时移除标志,可以延迟几个小节以避免反弹。
你有没有试过制作带参数的函数?因此,为了不使用外部全局变量(每个人都可以用自己的方式称呼它们)
我的意思是,像。
???
...和条件
将被正确地跟踪?
我的意思是,像。
???
...和条件
将被正确地跟踪?
像这样,变量OrdTicket应该被赋予一些默认值。否则就没有空缺职位,函数将返回一些东西