新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1809 1...180218031804180518061807180818091810181118121813181418151816...1953 新评论 Alexander Avksentyev 2021.12.10 20:04 #18081 Alekseu Fedotov #:不,这是不对的。有了OrderModify,这就更正确了。而且最好是作为一个单独的区块。 好的,谢谢你! Tretyakov Rostyslav 2021.12.10 20:28 #18082 Alexander Avksentyev #:所有的都有。谢谢你的帮助。 #property strict //--- input parameters input int Magic =12345; input int iTakeProfit =10; input int iTrailStart =10; input int iTrailDist =10; input int iTrailStep =10; input int iTrailTakeProfit =10; input int iStep =10; input int iSlippage =5; input double Lot =0.01; int Login = 4950287; datetime time = D'2022.01.01 00:00:00'; string name = "AutoP_v.3.0"; datetime time1 = 0; double price, TP, lastlot, minlot; int Forder; int TakeProfit,TrailStart,TrailDist,TrailStep,TrailTakeProfit,Step,Slippage; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(AccountNumber() != Login) { int close = MessageBox("Неверный номер счёта","Ошибка",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else (AccountNumber() == Login); { int close = MessageBox("Проверка прошла успешно.Экcперт может приступить к работе.","Инициализация",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if (TimeCurrent() > time) { int close = MessageBox("Время работы закончилось!!!","Время работы",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else(TimeCurrent() < time); { int close = MessageBox("Проверка времени работы прошла успешно.Эксперт может приступить к работе!","Время работы",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// TakeProfit =iTakeProfit; TrailStart =iTrailStart; TrailDist =iTrailDist; TrailStep =iTrailStep; TrailTakeProfit=iTrailTakeProfit; Step =iStep; Slippage =iSlippage; if(Digits == 3 || Digits == 5) { TakeProfit *=10; TrailStart *=10; TrailDist *=10; TrailStep *=10; TrailTakeProfit *=10; Step *=10; Slippage *=10; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if (CountTrades() == 0) { double body = Close[1] - Open[1]; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Buy if (body > 0) { Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue)); if(Forder > 0) { Print("Открыта Позиция BUY"); if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } } else Print("Ошибка Открытия Позиции BUY"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Sell if (body < 0) { Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red)); if (Forder > 0) { Print("Открыта Позиция SELL"); if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Bid-TakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован SELL "); else Print("Ошибка Модификации Ордера SELL = ",GetLastError()); } } else Print("Ошибка Открытия Позиции BUY"); } } //--- } //+------------------------------------------------------------------+ //| Подсчет открытых ордеров | //+------------------------------------------------------------------+ int CountTrades() { int count =0; int i=OrdersTotal()-1; for(int pos=i;pos>=0;pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol) { if(OrderMagicNumber()==Magic) count ++; } } } return(count); } //+------------------------------------------------------------------+ Alexander Avksentyev 2021.12.10 21:36 #18083 MakarFX #: 谢谢你 Alexander Avksentyev 2021.12.11 10:15 #18084 MakarFX #: 只有他开始同时开买和卖。我以为 int CountTrades() { int count =0; int i=OrdersTotal()-1; for(int pos=i;pos>=0;pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol) { if(OrderMagicNumber()==Magic) count ++; } } } return(count); } 这一部分将检查魔法的一个开放位置和 if (CountTrades() == 0) { 这个部分不允许双向打开。 Tretyakov Rostyslav 2021.12.11 11:15 #18085 Alexander Avksentyev #:只有他开始同时开买和卖。我以为这一部分将检查魔法的一个开放位置和 这个部分不允许双向打开。 不太可能,请显示日志或写出时间,在哪个对子上,什么时间段,这样我就可以检查。 它是。 如果已经有开放的订单,这部分将不允许打开。 Alexander Avksentyev 2021.12.11 11:46 #18086 MakarFX #:不太可能,请显示日志或写出时间,在哪一对上,什么时间,这样我就可以检查。它是。如果有已开的订单,这部分不会让你打开。 我很抱歉。 我已经制定了这些规则,事实证明,订单在每根蜡烛上打开,方向是前一根蜡烛的收盘。 我的错误。 Alexander Avksentyev 2021.12.11 11:47 #18087 MakarFX #:不太可能,请显示日志或写出时间,在哪一对上,什么时间,这样我就可以检查。它是。如果已经有开放的订单,这部分不允许打开。 我有10个不同的编辑,我到处改东西,我很困惑。 Alexander Avksentyev 2021.12.11 11:52 #18088 MakarFX #:不太可能,请显示日志或写出时间,在哪一对上,什么时间,这样我就可以检查。它是。如果已经有开放的订单,这部分不允许打开。 另一个问题。 我们应该多认真地关注这些警告? Tretyakov Rostyslav 2021.12.11 11:53 #18089 Alexander Avksentyev #:另一个问题。你应该多认真地注意这些警告? 总是这样。许多警告是由于不注意造成的。 Seric29 2021.12.11 15:32 #18090 MakarFX #:检查你的终端的尺寸P.S. 你的 "32位库 "可以在64乙烯基上工作,这不是事实。 在Visual Studio中有这样的设置 是的,那里有一个设置,当你创建一个控制台应用程序时,你选择32版本的程序,它就会运行。本例中的指针是4个字节。 1...180218031804180518061807180818091810181118121813181418151816...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
不,这是不对的。
有了OrderModify,这就更正确了。
而且最好是作为一个单独的区块。
好的,谢谢你!
所有的都有。谢谢你的帮助。
谢谢你
只有他开始同时开买和卖。我以为
这一部分将检查魔法的一个开放位置和
这个部分不允许双向打开。
只有他开始同时开买和卖。我以为
这一部分将检查魔法的一个开放位置和
这个部分不允许双向打开。
不太可能,请显示日志或写出时间,在哪个对子上,什么时间段,这样我就可以检查。
它是。
如果已经有开放的订单,这部分将不允许打开。
不太可能,请显示日志或写出时间,在哪一对上,什么时间,这样我就可以检查。
它是。
如果有已开的订单,这部分不会让你打开。
我很抱歉。
我已经制定了这些规则,事实证明,订单在每根蜡烛上打开,方向是前一根蜡烛的收盘。
我的错误。
不太可能,请显示日志或写出时间,在哪一对上,什么时间,这样我就可以检查。
它是。
如果已经有开放的订单,这部分不允许打开。
我有10个不同的编辑,我到处改东西,我很困惑。
不太可能,请显示日志或写出时间,在哪一对上,什么时间,这样我就可以检查。
它是。
如果已经有开放的订单,这部分不允许打开。
另一个问题。
我们应该多认真地关注这些警告?
另一个问题。
你应该多认真地注意这些警告?
检查你的终端的尺寸
P.S. 你的 "32位库 "可以在64乙烯基上工作,这不是事实。
在Visual Studio中有这样的设置
是的,那里有一个设置,当你创建一个控制台应用程序时,你选择32版本的程序,它就会运行。本例中的指针是4个字节。