[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 366 1...359360361362363364365366367368369370371372373...537 新评论 [删除] 2011.05.02 20:37 #3651 abolk: 你有 但你必须(比较) 以任何OEM指标的代码为例,看看代码是如何格式化的 我看不出有什么不同。例如,这是一个标准的学科。只是因为复杂,所以才这样。然而,除了括号本身,它可能是一个";"的问题,例如... //+------------------------------------------------------------------+ //| Discipline | //| Copyright © 1999-2008, MetaQuotes Software Corp. | //| FX_FISH | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Kiko Segui" #property link "webtecnic@terra.es" //---- #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red //---- double buffer1[]; double buffer2[]; //---- extern int period=10; extern int price=0; // 0 or other = (H+L)/2 // 1 = Open // 2 = Close // 3 = High // 4 = Low // 5 = (H+L+C)/3 // 6 = (O+C+H+L)/4 // 7 = (O+C)/2 extern bool Mode_Fast=false; extern bool Signals =true; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Lime); SetIndexBuffer(0,buffer1); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Red); SetIndexBuffer(1,buffer2); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { int i; double tmp; //---- for(i=0;i<Bars;i++) { ObjectDelete("Sel"+DoubleToStr(i,0)); ObjectDelete("Buy"+DoubleToStr(i,0)); ObjectDelete("Exit"+DoubleToStr(i,0)); } return(0); } double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0; int buy=0,sell=0; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i; int barras; double _price; double tmp; double MinL=0; double MaxH=0; double Threshold=1.2; //---- barras=Bars; if(Mode_Fast) barras=100; i=barras-period-1; while(i>=0) { MaxH=High[Highest(NULL,0,MODE_HIGH,period,i)]; MinL= Low[ Lowest(NULL,0,MODE_LOW, period,i)]; switch(price) { case 0: _price=(High[i]+Low[i])/2; break; case 1: _price= Open[i]; break; case 2: _price= Close[i]; break; case 3: _price= High[i]; break; case 4: _price= Low[i]; break; case 5: _price=(High[i]+Low[i]+Close[i])/3; break; case 6: _price=(Open[i]+High[i]+Low[i]+Close[i])/4; break; case 7: _price=(Open[i]+Close[i])/2; break; default: _price=(High[i]+Low[i])/2; break; } Value=0.33*2*((_price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1; Value=MathMin(MathMax(Value,-0.999),0.999); Fish =0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1; buffer1[i]=0; buffer2[i]=0; //---- if((Fish<0) && (Fish1>0)) { if(Signals) { ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],_price); ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251); ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red); } buy=0; } if((Fish>0) && (Fish1<0)) { if(Signals) { ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],_price); ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251); ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red); } sell=0; } if(Fish>=0) { buffer1[i]=Fish; } else { buffer2[i]=Fish; } tmp=i; if((Fish<-Threshold) && (Fish>Fish1) && (Fish1<=Fish2)) { if (Signals) { ObjectCreate("Sel"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],High[i]+5*Point); ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_ARROWCODE,226); ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_COLOR,Red); } sell=1; } if((Fish>Threshold) && (Fish<Fish1) && (Fish1>=Fish2)) { if (Signals) { ObjectCreate("Buy"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],Low[i]-5*Point); ObjectSet("Buy"+DoubleToStr(i,0),OBJPROP_ARROWCODE,225); ObjectSet("Buy"+DoubleToStr(i,0),OBJPROP_COLOR,Aqua); } buy=1; } Value1=Value; Fish2=Fish1; Fish1=Fish; i--; } return(0); } //+------------------------------------------------------------------+ [删除] 2011.05.02 20:44 #3652 KONDOR: 更加注意括号内的内容 )))) 符号() 比如说,这就是你的意思吗? 如果(OrderSymbol()==Symbol()) 修正了它,但错误仍然存在。 [删除] 2011.05.02 20:56 #3653 这也是如果吗?还是什么? 那我就重做吧...... 应该是这样的: if(OrderSymbol()==Symbol() ? 所有的符号都被定义。 删除括号--没有任何变化。 [删除] 2011.05.02 21:08 #3654 KONDOR: 倒数第二个括号是不必要的 都是一样的=() Andrey F. Zelinsky 2011.05.02 21:12 #3655 frxmax: 错在哪里a,在括号方面,一切似乎都是直的? //+------------------------------------------------------------------+ //| Beta2.mq4 | //| | //| | //+------------------------------------------------------------------+ extern int StopLoss=100; extern int TakeProfit=20; extern double Lot=0.01; extern int cnt, ticket, total; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double LoCurent=iCustom(NULL, 0, "LO",0,0); double LoPrevious=iCustom(NULL, 0, "LO",1,1); double FtCurent=iCustom(NULL, 0, "FT",0,0); double FtPrevious=iCustom(NULL, 0, "FT",1,1); //---- if (total==0) { if (LoCurent>LoPrevious && FtCurent>FtPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Buy",1111,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); }else Print("Error opening BUY order : ",GetLastError()); return(0); }else if(LoCurent<LoPrevious && FtCurent<FtPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Sell",2222,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); }else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } else if(LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<-30 || LoPrevious<-30) { if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)==false) //break; { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position } return(0); } } } else if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent>30 || LoPrevious>30) { if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)==false) //break; { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position } return(0); } } } //} return(0); } //+------------------------------------------------------------------+ KONDOR 2011.05.02 21:13 #3656 frxmax: 没有错误。 else if(LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<-30 || LoPrevious<-30) { if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)) //break ругается { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position } return(0); } } } else if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent>30 || LoPrevious>30) { if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)) //break ругается { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position } return(0); } } } return(0); } [删除] 2011.05.02 21:16 #3657 非常感谢您的帮助。KONDOR [删除] 2011.05.02 21:24 #3658 唯一的问题是,结果并不那么好。 请帮助我理解如何使它只在先前收到的信号方向上开出一个订单,当其中一个指标将显示一个反向信号时关闭它。 [删除] 2011.05.02 21:34 #3659 检查NumberOfBarOpenLastPos()函数,它检查订单打开时的条数。 [删除] 2011.05.02 21:44 #3660 我宁愿是这样。(例如,在欧元图表上,有一个买入信号) 如果总数>1 如果货币对=欧元兑美元 如果该订单是卖出 关闭订单 开立买入订单 一般的视图应该是这样的 如果(买入信号) 如果总数==0 购买 否则(总数>1) 检查哪个货币对打开了交易 如果我们的 如果打折的话 关闭它,继续购买 or else (total = 0, open a buy) .... 1...359360361362363364365366367368369370371372373...537 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你有
但你必须(比较)
以任何OEM指标的代码为例,看看代码是如何格式化的
我看不出有什么不同。例如,这是一个标准的学科。只是因为复杂,所以才这样。然而,除了括号本身,它可能是一个";"的问题,例如...
更加注意括号内的内容 ))))
符号()
比如说,这就是你的意思吗?
如果(OrderSymbol()==Symbol())
修正了它,但错误仍然存在。
这也是如果吗?还是什么?
那我就重做吧......
应该是这样的: if(OrderSymbol()==Symbol() ?
所有的符号都被定义。
删除括号--没有任何变化。
倒数第二个括号是不必要的
错在哪里a,在括号方面,一切似乎都是直的?
没有错误。
唯一的问题是,结果并不那么好。
请帮助我理解如何使它只在先前收到的信号方向上开出一个订单,当其中一个指标将显示一个反向信号时关闭它。
我宁愿是这样。(例如,在欧元图表上,有一个买入信号)
如果总数>1
如果货币对=欧元兑美元
如果该订单是卖出
关闭订单
开立买入订单
一般的视图应该是这样的
如果(买入信号)
如果总数==0
购买
否则(总数>1)
检查哪个货币对打开了交易
如果我们的
如果打折的话
关闭它,继续购买
or else (total = 0, open a buy) ....