初学者的问题 MQL5 MT5 MetaTrader 5 - 页 563 1...556557558559560561562563564565566567568569570...1503 新评论 Vladimir Karputov 2016.04.17 14:55 #5621 Василий: 是的,我问的是MQL 5? 是的,应该访问当前符号的数据。EA代码中需要这些数据。因此,我需要,例如,知道当前酒吧之前的收盘价。 看一下CopyTime的例子 Василий 2016.04.17 15:16 #5622 Karputov Vladimir: 请看CopyTime的例子 知道了,我会努力想办法的。谢谢你! Sergey Gritsay 2016.04.17 15:18 #5623 Василий: 是的,我问的是MQL5? 是的,应该访问当前符号的数据。我们在专家顾问代码中需要的数据。因此,举例来说,我需要知道当前条形图之前的收盘价。你应该多读一下文档。int CopyClose( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период int start_pos, // откуда начнем int count, // сколько копируем double close_array[] // массив для копирования цен закрытия );下面是一个获得收盘价和指标缓冲区的例子ENUM_ORDER_TYPE indicator_01() { double ma[2]; double close[2]; static int h_ma=INVALID_HANDLE; if(Bars(_Symbol,PERIOD_CURRENT)<ma_period+1)return(WRONG_VALUE); if(h_ma==INVALID_HANDLE || h_ma==0) { h_ma=iMA(_Symbol,_Period,ma_period,ma_shift,ma_method,ma_price); return(WRONG_VALUE); } if(CopyBuffer(h_ma,0,1,2,ma)<2) return(WRONG_VALUE); if(CopyClose(_Symbol,PERIOD_CURRENT,1,2,close)<2) return(WRONG_VALUE); if(close[1]>ma[1]&&close[0]<ma[0])return(ORDER_TYPE_BUY); if(close[1]<ma[1]&&close[0]>ma[0])return(ORDER_TYPE_SELL); return(WRONG_VALUE); } Vladimir Karputov 2016.04.17 15:39 #5624 Sergey Gritsay:...下面是一个获得收盘价以及指标缓冲区的例子 坏的例子。在MQL5中存储指标句柄的变量必须在 "头 "中声明--在全局变量 区域,并且句柄应该在OnInit()中获得。只有这样,你才能参考指标句柄,从程序的任何地方获取数据。 Alexey Kravchenko 2016.04.17 17:08 #5625 大家好!我正在使用OnTrade事件在测试器中获得交易历史数据。 for(int i=0;i<HistoryDealsTotal();i++){ ulong deal_ticket=HistoryDealGetTicket(i); Print("ticket=",deal_ticket); Print("price=",HistoryDealGetDouble(deal_ticket,DEAL_PRICE)); Print("time=",TimeToString(HistoryDealGetInteger(deal_ticket,DEAL_TIME)));这就是我在日志中得到的东西。0 22:58:16.487 核心 1 2016.04.01 00:00 目前符号周期GBPUSD的终端历史条数=7729。 JR 0 22:58:16.487 核心 1 2016.04.01 03:00:00 尝试交易 0,手数0.01。 EL 0 22:58:16.487 核心 1 2016.04.01 03:00:00 市场买入 0.01 GBPUSD sl: 1.43033 tp: 1.44034 (1.43646 / 1.43654 / 1.43646) GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 交易#2在1.43654买入0.01英镑兑美元完成(基于订单#2)。 GE 0 22:58:16.487 核心 1 2016.04.01 03:00:00 交易执行 [#2在1.43654买入0.01英镑兑美元] NK 0 22:58:16.487 核心 1 2016.04.01 03:00:00 订单执行 在1.43654买入0.01 [#2在1.43654买入0.01 GBPUSD] HI 0 22:58:16.487 核心 1 2016.04.01 03:00:00 ticket=1 HM 0 22:58:16.487 核心 1 2016.04.01 03:00:00 价格=0.0 HH 0 22:58:16.487 核心 1 2016.04.01 03:00:00 时间=2016.04.01 00:00 CR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ticket=2 ID 0 22:58:16.487 核心 1 2016.04.01 03:00:00 价格=1.43654 OP 0 22:58:16.487 核心 1 2016.04.01 03:00:00 时间=2016.04.01 03:00第一笔零价格的交易从何而来?我不这样做:-)。我不这样做:-) 解释一下吧。Z.P. 我想我明白了。第一笔交易的利润为10K。我不知道该怎么做,但它仍然很奇怪。为什么?这里还有一个问题。该交易(在1.43654买入)还没有被打开。它在历史上是如何出现的?我需要像MQL4那样在数组中只获得已关闭交易的数据。如何做到这一点?P.S. 按DEAL_ENTRY_OUT 过滤? Questions from Beginners MQL5 Bug!!in Tester,some bars are MQL5中使用坐标下降法的弹性网络回归 Sergey Savinkin 2016.04.17 17:19 #5626 Alexandr Saprykin: 你有没有试着重新安装终端? 是的,谢谢你。那是唯一有帮助的事情。 Sergey Gritsay 2016.04.18 09:41 #5627 Karputov Vladimir: 坏的例子。在MQL5中存储指标句柄的变量必须在 "头 "中声明 - 在程序的全局变量 区,在OnInit()中获得句柄。只有这样,你才能参考指标的句柄,从程序的任何地方获取数据。我不太同意你关于获取句柄的说法,因为OnInit()函数只执行一次,而且不能100%保证指标会从第一次就被创建。关于声明变量,你可能是对的,但我想知道下面的文档是否说了一些比用静态变量的变量更糟糕的事情只要函数存在,用static关键字声明的局部变量就会保存其值。在函数的每次后续调用中,这些局部变量包含了它们在前一次调用中的值。 Sergey Gritsay 2016.04.18 09:42 #5628 <br / translate="no">按DEAL_ENTRY_OUT 过滤 Vladimir Karputov 2016.04.18 09:49 #5629 Sergey Gritsay:我不太同意你关于获取句柄的说法,因为OnInit()函数只执行一次,而且不能100%保证指标会从第一次就被创建。关于变量的声明,你可能是对的,但我想知道在文档中,静态变量的选项有多糟糕... 我们将在创建指标句柄 时在OnInit()中检查这一点。如果指标句柄没有被创建,onOnit()我们将返回INIT_FAILED。也就是说,指标句柄只被创建一次,而且只在OnInit()中创建。这不是 "4"--混乱和徘徊,并在程序的各个角落宣布手柄。 Artyom Trishkin 2016.04.18 09:57 #5630 Karputov Vladimir: 为此,OnInit()检查是否创建了指标句柄。如果指标句柄没有被创建,OnOnit()应该返回INIT_FAILED。也就是说,指标句柄只被创建一次,而且只在OnInit()中创建。这不是 "4"--它不是在程序的各个角落里混乱和徘徊并声明句柄。 我不会在我的声明中如此断然。不是衣柜里乱,是脑袋里乱 (c) 1...556557558559560561562563564565566567568569570...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,我问的是MQL 5? 是的,应该访问当前符号的数据。EA代码中需要这些数据。因此,我需要,例如,知道当前酒吧之前的收盘价。
请看CopyTime的例子
是的,我问的是MQL5? 是的,应该访问当前符号的数据。我们在专家顾问代码中需要的数据。因此,举例来说,我需要知道当前条形图之前的收盘价。
你应该多读一下文档。
下面是一个获得收盘价和指标缓冲区的例子
...
下面是一个获得收盘价以及指标缓冲区的例子
大家好!
我正在使用OnTrade事件在测试器中获得交易历史数据。
这就是我在日志中得到的东西。
0 22:58:16.487 核心 1 2016.04.01 00:00 目前符号周期GBPUSD的终端历史条数=7729。
JR 0 22:58:16.487 核心 1 2016.04.01 03:00:00 尝试交易 0,手数0.01。
EL 0 22:58:16.487 核心 1 2016.04.01 03:00:00 市场买入 0.01 GBPUSD sl: 1.43033 tp: 1.44034 (1.43646 / 1.43654 / 1.43646)
GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 交易#2在1.43654买入0.01英镑兑美元完成(基于订单#2)。
GE 0 22:58:16.487 核心 1 2016.04.01 03:00:00 交易执行 [#2在1.43654买入0.01英镑兑美元]
NK 0 22:58:16.487 核心 1 2016.04.01 03:00:00 订单执行 在1.43654买入0.01 [#2在1.43654买入0.01 GBPUSD]
HI 0 22:58:16.487 核心 1 2016.04.01 03:00:00 ticket=1
HM 0 22:58:16.487 核心 1 2016.04.01 03:00:00 价格=0.0
HH 0 22:58:16.487 核心 1 2016.04.01 03:00:00 时间=2016.04.01 00:00
CR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 ticket=2
ID 0 22:58:16.487 核心 1 2016.04.01 03:00:00 价格=1.43654
OP 0 22:58:16.487 核心 1 2016.04.01 03:00:00 时间=2016.04.01 03:00
第一笔零价格的交易从何而来?我不这样做:-)。
我不这样做:-) 解释一下吧。
Z.P. 我想我明白了。第一笔交易的利润为10K。我不知道该怎么做,但它仍然很奇怪。为什么?
这里还有一个问题。该交易(在1.43654买入)还没有被打开。它在历史上是如何出现的?
我需要像MQL4那样在数组中只获得已关闭交易的数据。如何做到这一点?
P.S. 按DEAL_ENTRY_OUT 过滤?
你有没有试着重新安装终端?
坏的例子。在MQL5中存储指标句柄的变量必须在 "头 "中声明 - 在程序的全局变量 区,在OnInit()中获得句柄。只有这样,你才能参考指标的句柄,从程序的任何地方获取数据。
我不太同意你关于获取句柄的说法,因为OnInit()函数只执行一次,而且不能100%保证指标会从第一次就被创建。关于声明变量,你可能是对的,但我想知道下面的文档是否说了一些比用静态变量的变量更糟糕的事情
只要函数存在,用static关键字声明的局部变量就会保存其值。在函数的每次后续调用中,这些局部变量包含了它们在前一次调用中的值。
按DEAL_ENTRY_OUT 过滤
我不太同意你关于获取句柄的说法,因为OnInit()函数只执行一次,而且不能100%保证指标会从第一次就被创建。关于变量的声明,你可能是对的,但我想知道在文档中,静态变量的选项有多糟糕
...
为此,OnInit()检查是否创建了指标句柄。如果指标句柄没有被创建,OnOnit()应该返回INIT_FAILED。也就是说,指标句柄只被创建一次,而且只在OnInit()中创建。这不是 "4"--它不是在程序的各个角落里混乱和徘徊并声明句柄。