初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1121 1...111411151116111711181119112011211122112311241125112611271128...1503 新评论 MrBrooklin 2019.09.09 07:50 #11201 大家好,利润丰厚! 我用VQL5向导生成了一个简单的专家顾问,代码如下。请帮助我找出 "挂单过期(以条为单位)"功能不工作的原因。我设置了从1到1000的任何Signal_Expiration值,但挂单仍然只存在于一个条形内。我还附上了参数设置。 为了测试,我在Metatrader 5终端中使用模拟账户,构建2136。 真诚的,弗拉基米尔。 //+------------------------------------------------------------------+ //| EA_MasterMQL5.mq5 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //--- available signals #include <Expert\Signal\SignalITF.mqh> //--- available trailing #include <Expert\Trailing\TrailingNone.mqh> //--- available money management #include <Expert\Money\MoneyFixedRisk.mqh> //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="EA_MB_MasterMQL5"; // Document name ulong Expert_MagicNumber =1473; // bool Expert_EveryTick =false; // //--- inputs for main signal input int Signal_ThresholdOpen =0; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =0; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0; // Take Profit level (in points) input int Signal_Expiration =4; // Expiration of pending orders (in bars) input int Signal_ITF_GoodHourOfDay=-1; // IntradayTimeFilter(-1,...) Good hour input int Signal_ITF_BadHoursOfDay=8389119; // IntradayTimeFilter(-1,...) Bad hours (bit-map) input int Signal_ITF_GoodDayOfWeek=-1; // IntradayTimeFilter(-1,...) Good day of week input int Signal_ITF_BadDaysOfWeek=0; // IntradayTimeFilter(-1,...) Bad days of week (bit-map) input double Signal_ITF_Weight =1.0; // IntradayTimeFilter(-1,...) Weight [0...1.0] //--- inputs for money input double Money_FixRisk_Percent =10.0; // Risk percentage //+------------------------------------------------------------------+ //| Global expert object | //+------------------------------------------------------------------+ CExpert ExtExpert; //+------------------------------------------------------------------+ //| Initialization function of the expert | //+------------------------------------------------------------------+ int OnInit() { //--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- ExtExpert.InitSignal(signal); signal.ThresholdOpen(Signal_ThresholdOpen); signal.ThresholdClose(Signal_ThresholdClose); signal.PriceLevel(Signal_PriceLevel); signal.StopLevel(Signal_StopLevel); signal.TakeLevel(Signal_TakeLevel); signal.Expiration(Signal_Expiration); //--- Creating filter CSignalITF CSignalITF *filter0=new CSignalITF; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(INIT_FAILED); } signal.AddFilter(filter0); //--- Set filter parameters filter0.GoodHourOfDay(Signal_ITF_GoodHourOfDay); filter0.BadHoursOfDay(Signal_ITF_BadHoursOfDay); filter0.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek); filter0.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek); filter0.Weight(Signal_ITF_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedRisk *money=new CMoneyFixedRisk; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Set money parameters money.Percent(Money_FixRisk_Percent); //--- Check all trading objects parameters if(!ExtExpert.ValidationSettings()) { //--- failed ExtExpert.Deinit(); return(INIT_FAILED); } //--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- ok return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Deinitialization function of the expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| "Tick" event handler function | //+------------------------------------------------------------------+ void OnTick() { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| "Trade" event handler function | //+------------------------------------------------------------------+ void OnTrade() { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| "Timer" event handler function | //+------------------------------------------------------------------+ void OnTimer() { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+ Martingeil 2019.09.09 12:12 #11202 它能代替OrderCloseTime()吗? 我在MQL5的经历是第四天,但我已经吃饱了!我在MQL5的经历是第四天。 带回OrderCloseTime()函数,这个位置可以通过某种程序完成....。- 订单--然后是交易--然后是头寸,还是说用机器计算头寸这么难? //+------------------------------------------------------------------+ //| Check for close position conditions | //+------------------------------------------------------------------+ //fxsaber datetime TimCloseHisPos(){ datetime timCloseHisPos = 0; if (!ticket1) ticket1 = TradeClose.PositionOpen(_Symbol, ORDER_TYPE_BUY, 0.1, Ask_, Ask_ - 100 * Point_, Ask_ + 100 * Point_) ? TradeClose.ResultOrder() : 0; else if (!PositionSelectByTicket(ticket1) && HistorySelectByPosition(ticket1) && HistoryDealGetString(ticket1,DEAL_SYMBOL)==_Symbol) { ENUM_ORDER_TYPE cmd = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(HistoryOrderGetTicket(HistoryOrdersTotal() - 1), ORDER_TYPE); double open = cmd ? Bid_ : Ask_; double tp = open - (cmd ? 1 : -1) * 100 * Point_; double sl = open + (cmd ? 1 : -1) * 100 * Point_; ticket1 = TradeClose.PositionOpen(_Symbol, cmd, 0.1, open, sl, tp) ? TradeClose.ResultOrder() : 0; } //Pul-Adgi Mo-UlStan if(HistoryDealSelect(ticket1)) { //--- время совершения сделки в миллисекундах от 01.01.1970 timCloseHisPos=(datetime)HistoryDealGetInteger(ticket1,DEAL_TIME_MSC); } return(timCloseHisPos); } //+------------------------------------------------------------------+ Leo59 2019.09.09 12:47 #11203 大家下午好! 如果不是太麻烦的话,请纠正MQL4的代码,使其在ML5中工作。 int init() { info_init(); // Вызов функции менеджера инициализации вывода информации на экран Fun_Label(); // Вызов функции вывода информации на экран (чтобы сразу видно было) return(0); // Выход из init() } int deinit() { info_deinit(); // Удаляем вывод информации на экран из блоков 1 - 8 return(0); // Выход из deinit() } int start() { Fun_Label(); // Ввод параметров для вывод информации на экран return(0); // Выход из start() } void info_init() { info_init_1(); info( 0,".",Tan,8); // info( 10,".",Tan,8); info( 20,".",Tan,8); info( 30,".",Tan,8); // Tan - самое короткое название цвета } void info_init_1() { for(int row = 0; row <= 9; row ++) // row - номер текстовой метки (строки сообщения) { info_LabelCreate( StringConcatenate( "InfoLabel_0", row ), 1000, 15 + 15*row ); // Вызов функции _LabelCreate } // Передаются string _Name, int _XDistance, int _YDistance } void info_LabelCreate(string _Name, int _XDist, int _YDist, int _Corner = 0) // Координаты: х = _XDist, у = _YDist, угол = _Corner. { int _GetLastError; if (!ObjectCreate(_Name, OBJ_LABEL, 0, 0, 0)) // Объекты с типом OBJ_LABEL игнорируют координаты, поэтому используем функцию ObjectSet()... { // ... для установки свойств OBJPROP_XDISTANCE, OBJPROP_YDISTANCE и OBJPROP_CORNER _GetLastError = GetLastError(); if (_GetLastError != 4200) // 4200 - Объект уже существует { Print("ObjectCreate(\"", _Name, "\", OBJ_LABEL,0,0,0) - Error #", _GetLastError); } } if (!ObjectSet(_Name, OBJPROP_XDISTANCE, _XDist)) // OBJPROP_XDISTANCE - Дистанция в пикселях по оси X от угла привязки { _GetLastError = GetLastError(); Print("ObjectSet( \"", _Name, "\", OBJPROP_XDISTANCE, ", _XDist, ") - Error #", _GetLastError); } if (!ObjectSet(_Name, OBJPROP_YDISTANCE, _YDist)) // OBJPROP_YDISTANCE - Дистанция в пикселях по оси Y от угла привязки { _GetLastError = GetLastError(); Print("ObjectSet( \"", _Name, "\", OBJPROP_YDISTANCE, ", _YDist, ") - Error #", _GetLastError); } if (!ObjectSet(_Name, OBJPROP_CORNER, _Corner)) // OBJPROP_CORNER - Угол графика для привязки графического объекта { _GetLastError = GetLastError(); Print("ObjectSet( \"", _Name, "\", OBJPROP_CORNER, ", _Corner, ") - Error #", _GetLastError); } if (!ObjectSetText(_Name, "", 10)) // Задаём размер шрифта (font_size) { _GetLastError = GetLastError(); Print("ObjectSetText( \"", _Name, "\", \"\", 10 ) - Error #", _GetLastError); } } void info_deinit() // Удаление объектов, созданных функцией info_init() для блоков 1-8 { int _GetLastError; for ( int row = 0; row <= 9; row ++ ) { if ( !ObjectDelete( StringConcatenate( "InfoLabel_0", row ) ) ) {_GetLastError = GetLastError(); Print( "ObjectDelete( \"", StringConcatenate( "InfoLabel_0", row ), "\" ) - Error #", _GetLastError ); } } } void info(int LabelNumber, string Text, color Color = 17000000, double FontSize = -1.0, string Font = "-1") { //---- определяем имя объекта string LabelName; if ( LabelNumber < 10 ) LabelName = StringConcatenate( "InfoLabel_0", LabelNumber ); // Обязательно "0" впереди перед ОДИНОЧНЫМИ цифрами color lastusedColor = Black; double lastusedFontSize = 9.0; string lastusedFont = "Arial"; //---- если значения дополнительных параметров не задавались, устанавливаем последние используемые значения if(Color == 17000000) Color = lastusedColor; // 0-чёрный, 16 777 215-белый, 17000000-цвета нет if(FontSize < 0) FontSize = lastusedFontSize; if(Font == "-1") Font = lastusedFont; //---- запоминаем последние используемые значения lastusedColor = Color; lastusedFontSize = FontSize; lastusedFont = Font; //---- отображаем новый текст if(!ObjectSetText(LabelName, Text, FontSize, Font, Color)) { int _GetLastError = GetLastError(); Print("ObjectSetText( \"", LabelName,"\", \"", Text, "\", ", FontSize, ", ", Font, ", ", Color, " ) - Error #", _GetLastError); } //---- перерисовываем объекты ObjectsRedraw(); } void Fun_Label() // Ввод параметров для вывод информации на экран { info( 0, "x", Magenta, 8 ); info( 1, "x", Magenta, 8 ); info( 2, "x", Magenta, 8 ); info( 3, "x", Magenta, 8 ); info( 4, "x", Magenta, 8 ); info( 5, "x", Magenta, 8 ); info( 6, "x", Magenta, 8 ); info( 7, "x", Magenta, 8 ); info( 8, "x", Magenta, 8 ); info( 9, "x", Magenta, 8 ); } User_mt5 2019.09.09 12:47 #11204 观察不自然的平台行为。 1.ME5不保留关闭时的界面设置。特别是,设置面板消失了。可以恢复,但必须在每次开机时进行。 2.我正在做一个指标。在MT5中改变指标设置通常会导致失败:线条的形状明显改变,颜色无法改变,等等。 此外,如果你在一个新安装的指标中改变设置,一切都按计划进行。 问题。 1.这只是我的问题,还是一个普遍问题? 2.如果是我遗漏了什么或做错了什么,请告知。 Vladimir Karputov 2019.09.09 13:45 #11205 与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。 Vladimir Karputov 2019.09.09 13:50 #11206 Leo59: 大家下午好! 如果不是太麻烦的话,请纠正MQL4的代码,使其在ML5中工作。 首先,你需要正确编写系统功能。最简单的方法是在MetaEditor 5菜单中的文件-创建-专家顾问(模板)。比较你和我的代码。 //+------------------------------------------------------------------+ //| 1.mq5 | //| Copyright © 2019, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2019, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" //--- input parameters input int Input1=9; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ 当你纠正了它,我们将继续...... Vladimir Karputov 2019.09.09 13:59 #11207 Pul-Adgi Mo-UlStan: 它能代替OrderCloseTime()对开发者起作用吗? 我在MQL5的经历是第四天,但我已经吃饱了!我在MQL5的经历是第四天。 带回OrderCloseTime()函数,这个位置可以通过某种程序完成....。- 订单--然后是交易--然后是头寸,还是说用机器计算头寸如此困难? 你到底想得到什么?你是否需要最后一笔交易的时间(交易类型为"市场退出")?或者你想知道交易历史中某个头寸的平仓时间? Vladimir Karputov 2019.09.09 14:01 #11208 User_mt5: 观察平台的非自然行为。 1.ME5不保留关闭时的界面设置。特别是,设置面板消失了。它可以被恢复,但必须在每次开机时进行。 我是谁?谁是设置小组? User_mt5 2019.09.09 14:42 #11209 Vladimir Karputov: 我是谁?谁是设置小组? ME = MetaEditor. 设置面板,是我的告诫。我指的是带有按钮的工具条,包括编译。 (我说 "设置 "是出于惯性--是我用MT5也在纠结于指标设置面板) 2019年9月6日的Build 2138。 Vladimir Karputov 2019.09.09 14:55 #11210 User_mt5: ME = MetaEditor. 设置面板是我的告诫。我指的是工具条,它有一些按钮,包括编译。 (我说 "设置 "是出于惯性思维--是我用MT5也在纠结于指标参数的设置面板) 2019年9月6日的Build 2138。 请说明这种情况发生在哪个设备上。 关于交易、自动交易系统和交易策略测试的论坛 虫子,虫子,问题 Vladimir Karputov, 2019.07.31 12:12 指定此类数据。 从 "日志 "标签中复制三行(选择三行 -> 鼠标右键 -> 复制)。 并将其粘贴到你的信息中。你应该得到这样的东西。 2019.07.31 11:53:10.681 MetaTrader 5 x64 build 2093 started (MetaQuotes Software Corp.) 2019.07.31 11:53:10.685 Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i3-3120 M @ 2.50 GHz, Memory: 3188 / 8077 Mb, Disk: 99 / 415 Gb, GMT+2 2019.07.31 11:53:10.685 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075 然后一步一步地描述,并附上截图--你到底发生了什么。 1...111411151116111711181119112011211122112311241125112611271128...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好,利润丰厚!
我用VQL5向导生成了一个简单的专家顾问,代码如下。请帮助我找出 "挂单过期(以条为单位)"功能不工作的原因。我设置了从1到1000的任何Signal_Expiration值,但挂单仍然只存在于一个条形内。我还附上了参数设置。
为了测试,我在Metatrader 5终端中使用模拟账户,构建2136。
真诚的,弗拉基米尔。
它能代替OrderCloseTime()吗?
我在MQL5的经历是第四天,但我已经吃饱了!我在MQL5的经历是第四天。
带回OrderCloseTime()函数,这个位置可以通过某种程序完成....。- 订单--然后是交易--然后是头寸,还是说用机器计算头寸这么难?
大家下午好!
如果不是太麻烦的话,请纠正MQL4的代码,使其在ML5中工作。
观察不自然的平台行为。
1.ME5不保留关闭时的界面设置。特别是,设置面板消失了。可以恢复,但必须在每次开机时进行。
2.我正在做一个指标。在MT5中改变指标设置通常会导致失败:线条的形状明显改变,颜色无法改变,等等。
此外,如果你在一个新安装的指标中改变设置,一切都按计划进行。
问题。
1.这只是我的问题,还是一个普遍问题?
2.如果是我遗漏了什么或做错了什么,请告知。
大家下午好!
如果不是太麻烦的话,请纠正MQL4的代码,使其在ML5中工作。
首先,你需要正确编写系统功能。最简单的方法是在MetaEditor 5菜单中的文件-创建-专家顾问(模板)。比较你和我的代码。
当你纠正了它,我们将继续......它能代替OrderCloseTime()对开发者起作用吗?
我在MQL5的经历是第四天,但我已经吃饱了!我在MQL5的经历是第四天。
带回OrderCloseTime()函数,这个位置可以通过某种程序完成....。- 订单--然后是交易--然后是头寸,还是说用机器计算头寸如此困难?
你到底想得到什么?你是否需要最后一笔交易的时间(交易类型为"市场退出")?或者你想知道交易历史中某个头寸的平仓时间?
观察平台的非自然行为。
1.ME5不保留关闭时的界面设置。特别是,设置面板消失了。它可以被恢复,但必须在每次开机时进行。
我是谁?谁是设置小组?
我是谁?谁是设置小组?
ME = MetaEditor.
设置面板,是我的告诫。我指的是带有按钮的工具条,包括编译。
2019年9月6日的Build 2138。(我说 "设置 "是出于惯性--是我用MT5也在纠结于指标设置面板)
ME = MetaEditor.
设置面板是我的告诫。我指的是工具条,它有一些按钮,包括编译。
2019年9月6日的Build 2138。(我说 "设置 "是出于惯性思维--是我用MT5也在纠结于指标参数的设置面板)
请说明这种情况发生在哪个设备上。
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
Vladimir Karputov, 2019.07.31 12:12
指定此类数据。
从 "日志 "标签中复制三行(选择三行 -> 鼠标右键 -> 复制)。
并将其粘贴到你的信息中。你应该得到这样的东西。