新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 852 1...845846847848849850851852853854855856857858859...1953 新评论 Вадим Ярош 2019.05.21 07:48 #8511 无法访问网站 jaffer wilson 2019.05.21 08:28 #8512 嗨,开发人员。 用自定义日期或任何日期选项查看任何策略测试器 见图片。 我想在我的程序中通过OnInit()函数获得开始和结束日期的值。 我怎样才能得到它呢? Sergey Voytsekhovsky 2019.05.21 09:19 #8513 Artyom Trishkin:将整个循环形成一个函数,如果找到,则返回酒吧号码,如果没有找到则返回WRONG_VALUE。下午好。我想我已经完成了对昨天有问题的iCustom的工作。我把它全部做成了一个函数的形式,用"评论"和 "打印 "来控制。 这个试用专家顾问的想法是捕捉iCrossAD指标的上/下箭头形式的信号,并将其转换为买入或卖出指令,以便在未来的程序中使用。 我有一点经验,所以请不要评头论足,但希望有理有据的批评和建议。 事实上,为了这个而写了一个帖子。附上EA和指标文件,代码如下。 //+------------------------------------------------------------------+ //| Test_iCusom.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://mql5.com/ru/users/artmedia70" #property version "1.00" #property description "" #property strict //--- includes #include <DoEasy\Engine.mqh> #include <Trade\Trade.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\SymbolInfo.mqh> //--- enum Indicator_Direction { Direction_BUY, Direction_SELL, Direction_FLAT }; //--- input string Inp_param_indi_iCrossAD = "Input parameters indicator iCrossAD";//----- "Внешние параметры индикатора iCrossAD" ----- input uint InpPeriodFind = 400; // Bars for calculate input uint InpUnheckedBars = 2; // Unchecked bars input uint InpPeriodIND = 21; // CCI period //--- global variables CEngine engine; CTrade trade; CPositionInfo apos; CSymbolInfo asymbol; int CrossAD; //Хэндл индикатора iCrossAD double Buf_Arrow_Sell[], //Массив буфера для приема значений последних стрелок ВНИЗ из индикатора iCrossAD Last_Arrow_Sell_volume, //Переменная для записи значения цены последней стрелки ВНИЗ индикатора iCrossAD Last_Arrow_Sell_index; //Переменная для записи значения индекса свечи последней стрелки ВНИЗ индикатора iCrossAD datetime Last_Arrow_Buy_time; //Переменная для записи времени стрелки double Buf_Arrow_Buy[], Last_Arrow_Buy_volume, Last_Arrow_Buy_index; datetime Last_Arrow_Sell_time; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ArraySetAsSeries(Buf_Arrow_Buy, true); ArraySetAsSeries(Buf_Arrow_Sell, true); //--- CrossAD = iCustom(asymbol.Name(), _Period, "iCrossAD",InpPeriodFind,InpUnheckedBars,InpPeriodIND); if (CrossAD == INVALID_HANDLE) { Print("Не удалось создать описатель индикатора iCrossAD!"); return(INIT_FAILED); } else Print("Хендл iCrossAD = ",CrossAD); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- delete objects ObjectsDeleteAll(0,"",-1); Comment(""); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { string direction = "no information"; switch(iCustom_iCrossAD(InpPeriodFind)) { case Direction_BUY: direction = "BUY"; break; case Direction_SELL: direction = "SELL"; break; case Direction_FLAT: direction = "FLAT"; break; case WRONG_VALUE: direction = "no information"; break; } Comment("-------------------------", "\n Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume, "\n Last_Arrow_Buy_index = ",Last_Arrow_Buy_index, "\n Last_Arrow_Buy_time = ",Last_Arrow_Buy_time, "\n ---------------------- ", "\n Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume, "\n Last_Arrow_Sell_index = ",Last_Arrow_Sell_index, "\n Last_Arrow_Sell_time = ",Last_Arrow_Sell_time, "\n ---------------------- ", "\n Indicator_Direction = ",direction ); } //+------------------------------------------------------------------+ int iCustom_iCrossAD(uint PeriodFind) { Indicator_Direction direct = Direction_FLAT; if (CopyBuffer(CrossAD, 1, 0, PeriodFind, Buf_Arrow_Buy) != PeriodFind) { Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError()); return(WRONG_VALUE); } for(int n=0; n<(int)PeriodFind; n++) { if(n==0) Print("Last_Arrow_Buy_index n==",n," Last_Arrow_Buy_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Buy[n]==EMPTY_VALUE) Print("Last_Arrow_Buy_index n==",n," Last_Arrow_Buy_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Buy[n]!=EMPTY_VALUE) { Last_Arrow_Buy_volume = iOpen(_Symbol,_Period,n); Last_Arrow_Buy_time = iTime(_Symbol,0,n); Last_Arrow_Buy_index = n; Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index,", Last_Arrow_Buy_time = ",Last_Arrow_Buy_time); break; } } if (CopyBuffer(CrossAD, 2, 0, PeriodFind, Buf_Arrow_Sell) != PeriodFind) { Print("НЕ удалось правильно скопировать данные из 2-го буфера индикатора iCrossAD, error code %d",GetLastError()); return(WRONG_VALUE); } for(int n=0; n<(int)PeriodFind; n++) { if(n==0) Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Sell[n]==EMPTY_VALUE) Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Sell[n]!=EMPTY_VALUE) { Last_Arrow_Sell_volume = iOpen(_Symbol,_Period,n); Last_Arrow_Sell_time = iTime(_Symbol,0,n); Last_Arrow_Sell_index = n; Print("Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume,", Last_Arrow_Sell_index = ",Last_Arrow_Sell_index,", Last_Arrow_Sell_time = ",Last_Arrow_Sell_time); break; } } if(Last_Arrow_Buy_index < Last_Arrow_Sell_index)direct = Direction_BUY; else if(Last_Arrow_Buy_index > Last_Arrow_Sell_index)direct = Direction_SELL; else direct = Direction_FLAT; return(direct); //return(WRONG_VALUE); } //+------------------------------------------------------------------+ 附加的文件: Test_iCustom.mq5 14 kb iCrossAD.mq5 49 kb Alexandr Spravchikov 2019.05.21 09:48 #8514 你好,我的专家顾问有一个功能, 当另一个订单触发时,删除待定订单。我怎样才能在外部参数中规定能够禁用这一功能?事先非常感谢。 附加的文件: ths42o20.txt 1 kb MaxPick 2019.05.21 13:09 #8515 你好! 我已将该指标从MT4转换到MT5。我想把该指标作为一个额外的过滤器。 我只研究MT5。但我找不到这个错误。我的МТ4和МТ5的反思是不同的。 我有一个请求,请专家帮助我找到*.mql5文件中的错误。 我在此附上源代码。 我非常、非常感谢你的帮助。 附加的文件: ReVoIn.mq4 4 kb ReVoIn.mq5 11 kb Sergey Voytsekhovsky 2019.05.21 21:14 #8516 Priffekt: 你好,我在我的EA中有一个功能, 当另一个订单触发时删除挂单。我怎样才能在外部参数中规定能够禁用这一功能?事先非常感谢。DeleteOppositeOrders(); void DeleteOppositeOrders() { bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { fd=False; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()== Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && OrderMagicNumber()== Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } } } bool ExistPosition(int mn) { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magik) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; break; } } } } return(Exist); } 这是你的代码,最好这样附加。 Sergey Voytsekhovsky 2019.05.21 21:23 #8517 当然,我不太适合担任顾问的角色,但这个任务似乎并不困难。 请注意,我没有进入你的代码本身,有很多争议,甚至对我来说(傻瓜),首先是你的函数是void类型。 这种类型用来表示函数不返回值,或者作为函数的一个参数表示没有参数。而你在代码的结尾处有return(Exist)。 声明一个输入变量,把它写成你的函数的一个参数,如果你把'这个变量设置为False,就退出这个函数。 Sergey Voytsekhovsky 2019.05.21 21:33 #8518 input bool On_Off = true; DeleteOppositeOrders(On_Off); void DeleteOppositeOrders(bool on_off) { if(on_off==false)return; bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { fd=False; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()== Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && OrderMagicNumber()== Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } } } bool ExistPosition(int mn) { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magik) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; break; } } } } return(Exist); } Sergey Voytsekhovsky 2019.05.21 21:38 #8519 Priffekt: 你好,在我的EA中,当另一个订单触发时,我有删除挂单的 功能。我怎样才能在外部参数中规定这个功能可以被禁用。事先非常感谢。在你的代码文本中找到所有的False和True。用false和true代替它们。这种语言是区分大小写的。 Alexandr Spravchikov 2019.05.22 01:06 #8520 Sergey Voytsekhovsky:在你的代码文本中找到所有的False和True。用false和true代替它们。这种语言是区分大小写的。 下午好,我已经改变了所有的数值,但我对在专家顾问设置 中禁用该功能本身的可能性感兴趣。DeleteOppositeOrders(); void DeleteOppositeOrders() { bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i-){ 如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ 如果(OrderSymbol()==Symbol()){ fd=false; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()==Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType() ==OP_SELLSTOP &&OrderMagicNumber()==Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } bool ExistPosition(int mn) { bool Exist=false; for (int i=0; i<OrdersTotal(); i++){ 如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ 如果(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik) { 如果(OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=true; break; } } return(Exist); } } Any questions from newcomers [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 EA不会在多对上运行,需要帮助 1...845846847848849850851852853854855856857858859...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
嗨,开发人员。
用自定义日期或任何日期选项查看任何策略测试器
见图片。
我想在我的程序中通过OnInit()函数获得开始和结束日期的值。
我怎样才能得到它呢?
将整个循环形成一个函数,如果找到,则返回酒吧号码,如果没有找到则返回WRONG_VALUE。
下午好。我想我已经完成了对昨天有问题的iCustom的工作。我把它全部做成了一个函数的形式,用"评论"和 "打印 "来控制。
这个试用专家顾问的想法是捕捉iCrossAD指标的上/下箭头形式的信号,并将其转换为买入或卖出指令,以便在未来的程序中使用。
我有一点经验,所以请不要评头论足,但希望有理有据的批评和建议。
事实上,为了这个而写了一个帖子。附上EA和指标文件,代码如下。
你好!
我已将该指标从MT4转换到MT5。我想把该指标作为一个额外的过滤器。
我只研究MT5。但我找不到这个错误。我的МТ4和МТ5的反思是不同的。
我有一个请求,请专家帮助我找到*.mql5文件中的错误。
我在此附上源代码。
我非常、非常感谢你的帮助。
你好,我在我的EA中有一个功能, 当另一个订单触发时删除挂单。我怎样才能在外部参数中规定能够禁用这一功能?事先非常感谢。
这是你的代码,最好这样附加。
当然,我不太适合担任顾问的角色,但这个任务似乎并不困难。
请注意,我没有进入你的代码本身,有很多争议,甚至对我来说(傻瓜),首先是你的函数是void类型。 这种类型用来表示函数不返回值,或者作为函数的一个参数表示没有参数。而你在代码的结尾处有return(Exist)。
声明一个输入变量,把它写成你的函数的一个参数,如果你把'这个变量设置为False,就退出这个函数。
你好,在我的EA中,当另一个订单触发时,我有删除挂单的 功能。我怎样才能在外部参数中规定这个功能可以被禁用。事先非常感谢。
在你的代码文本中找到所有的False和True。用false和true代替它们。这种语言是区分大小写的。
在你的代码文本中找到所有的False和True。用false和true代替它们。这种语言是区分大小写的。