新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 716 1...709710711712713714715716717718719720721722723...1953 新评论 Konstantin Nikitin 2018.12.18 13:28 #7151 Alex Pirate: 大家好,有什么需要检查的吗??在修改和打开....,会有警告。(???)它返回一个值,我需要检查它......如何? EA按照我认为合适的方式打开订单......(((extern string MMM = "MMM"; extern double Lot = 0.1; extern int TakeProfit = 50; extern int StopLoss = 20; extern int Slippage = 3; extern int Magic = 888; // Moving Average 1 extern string Indi_MA1 = "MA1"; extern int MA1_Period = 22; extern int MA1_Shift = 0; extern int MA1_Method = 0; extern int MA1_Price = 0; // Moving Average 2 extern string Indi_MA2 = "MA2"; extern int MA2_Period = 55; extern int MA2_Shift = 0; extern int MA2_Method = 0; extern int MA2_Price = 0; //+------------------------------------------------------------------+ double MA1,MA2,SL,TP; int ticket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { if (Digits == 3 || Digits == 5) { TakeProfit = TakeProfit * 10; StopLoss = StopLoss * 10; Slippage = Slippage * 10; } return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { MA1 = iMA(Symbol(),0,MA1_Period,MA1_Shift,MA1_Method,MA1_Price,0); MA2 = iMA(Symbol(),0,MA2_Period,MA2_Shift,MA2_Method,MA2_Price,0); if (Ask >= MA1 && MA1 >= MA2 && CountBuy() == 0) { SL = NormalizeDouble(Ask - StopLoss * Point,Digits); TP = NormalizeDouble(Ask + TakeProfit * Point,Digits); ticket = OrderSend(Symbol(),OP_BUY ,Lot,Ask,Slippage,0,0,"",Magic,0,Green); if (ticket > 0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) == true) if( !OrderModify(ticket,OrderOpenPrice(),SL,TP,0) ) return; } if (Bid <= MA1 && MA1 <= MA2 && CountSell() == 0) SL = NormalizeDouble(Bid + StopLoss * Point, Digits); TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); ticket = OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,"",Magic,0,Red); if (ticket > 0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) == true) if( !OrderModify(ticket,OrderOpenPrice(),SL,TP,0) ) return; } } } //+------------------------------------------------------------------+ int CountBuy() { int count = 0; for (int trade = OrdersTotal() - 1; trade >= 0; trade--) { if( !OrderSelect(trade,SELECT_BY_POS, MODE_TRADES) ) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) count++; } } return(count); } //+------------------------------------------------------------------+ int CountSell() { int count = 0; for (int trade = OrdersTotal() - 1; trade >= 0; trade--) { if( !OrderSelect(trade,SELECT_BY_POS, MODE_TRADES) ) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_SELL) count++; } } return(count); } //+------------------------------------------------------------------+ Alex Pirate 2018.12.18 13:56 #7152 Konstantin Nikitin: 谢谢你!!!。我会试一试的。 Alex Pirate 2018.12.18 14:12 #7153 错误已经消失...但由于某些原因,不是所有的订单都能打开和升级......看来我们需要以某种方式检查修改? 我一定是在什么地方弄错了...... Konstantin Nikitin 2018.12.18 15:15 #7154 Alex Pirate: 错误已经消失...但不知道为什么,不是所有的订单都能打开和升级......看来我们需要以某种方式检查修改检查? 我一定是在什么地方弄错了......我没有把代码弄乱。我不明白......所以,你是专家,我就交给你了。 Alex Pirate 2018.12.18 15:21 #7155 Konstantin Nikitin:我没有研究出密码。所以你的专家,你的牌在你的手中。明白了,还是谢谢你。 ruzaden 2018.12.18 17:28 #7156 Maxim Kuznetsov:这可以通过终端的全局变量来完成。前提是你有该指标的源代码,并且你能编辑它。 这意味着指标将不通过extern来计算参数,而是通过调用GlobalVariableGet() 来计算。而相应地,专家顾问将通过GlobalVariableSet改变这个变量。 谢谢,马克西姆,至少现在我知道该从哪里开始。 Vladimir Pastushak 2018.12.19 22:33 #7157 如何调用一个父类的虚拟方法? 02031986dima 2018.12.22 21:01 #7158 有一个人字形指标显示了一个极值的价格值,我需要从极值到未来(第二天)画一条趋势线,在不知道第二个点的坐标和第一个点的时间值的情况下,我怎样才能做到呢? Igor Makanu 2018.12.23 05:18 #7159 Vladimir Pastushak: 如何调用父类的虚拟方法?一个虚拟方法之所以是虚拟方法,是因为它只有一个描述,而主体是分别写在每个类中的。 不过,如果你的任务只是从父类中调用一个方法(即方法已经有了主体),那么通过继承,它(该方法)将可以作为一个普通的方法使用--见源代码 Vladimir Pastushak 2018.12.23 08:26 #7160 Igor Makanu:一个虚拟方法之所以是虚拟方法,是因为它只有一个描述,而主体是分别写在每个类中的。 不过,如果你的任务只是从父类中调用一个方法(即方法已经有了主体),那么通过继承,它(该方法)将可以作为一个普通的方法使用--源代码应该可以看到谢谢你。我不能让一个父类方法被调用。 在我的记忆中,它是通过父母::方法完成的。 1...709710711712713714715716717718719720721722723...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好,有什么需要检查的吗??在修改和打开....,会有警告。(???)它返回一个值,我需要检查它......如何? EA按照我认为合适的方式打开订单......(((
谢谢你!!!。我会试一试的。
错误已经消失...但不知道为什么,不是所有的订单都能打开和升级......看来我们需要以某种方式检查修改检查? 我一定是在什么地方弄错了......
我没有把代码弄乱。我不明白......所以,你是专家,我就交给你了。
我没有研究出密码。所以你的专家,你的牌在你的手中。
明白了,还是谢谢你。
这可以通过终端的全局变量来完成。前提是你有该指标的源代码,并且你能编辑它。
这意味着指标将不通过extern来计算参数,而是通过调用GlobalVariableGet() 来计算。而相应地,专家顾问将通过GlobalVariableSet改变这个变量。
如何调用父类的虚拟方法?
一个虚拟方法之所以是虚拟方法,是因为它只有一个描述,而主体是分别写在每个类中的。
不过,如果你的任务只是从父类中调用一个方法(即方法已经有了主体),那么通过继承,它(该方法)将可以作为一个普通的方法使用--见源代码
一个虚拟方法之所以是虚拟方法,是因为它只有一个描述,而主体是分别写在每个类中的。
不过,如果你的任务只是从父类中调用一个方法(即方法已经有了主体),那么通过继承,它(该方法)将可以作为一个普通的方法使用--源代码应该可以看到
谢谢你。我不能让一个父类方法被调用。
在我的记忆中,它是通过父母::方法完成的。