初学者的问题 MQL5 MT5 MetaTrader 5 - 页 456 1...449450451452453454455456457458459460461462463...1503 新评论 Artyom Trishkin 2015.10.08 02:44 #4551 E_Ghazaryan: 是的,没错 =D ))))已经附上。)所有这些参数都应列在iCustom()中指标名称后的逗号之后,在它们之后还有两个参数:缓冲区编号和条形图编号,数据是从那里获取的。I.e:iCustom(Symbol(),Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number) 。所有列出的值都可以由EA的外部变量设置,这些变量的名称可以写入iCustom()中,而不是硬编码的值。 pusheax 2015.10.08 14:28 #4552 你能告诉我为什么吗。双重d=0.07。d =NormalizeDouble(d,2);在这两种情况下,d==0.07000000000000001如何留下2位小数? Vladimir Karputov 2015.10.08 14:36 #4553 pusheax:你能告诉我为什么吗。双重d=0.07。d = NormalizeDouble(d,2);在这两种情况下,d==0.07000000000000001如何留下2位小数?请注意,当使用Print()输出到Journal时,一个规范化的数字可能包含比你预期的更多的小数位。比如说。 double a=76.671; // нормализованное число с 3 знаками после запятой Print("Print(76.671)=",a); // выведем его как есть Print("DoubleToString(a,8)=",DoubleToString(a,8)); // выведем с заданной точностью将被输出到终端。 DoubleToString(a,8)=76.67100000 Print(76.671)=76.67100000000001也就是说,对于打印来说,输出额外的数值并不是一个问题。 Документация по MQL5: Преобразование данных / NormalizeDouble www.mql5.com Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 pusheax 2015.10.08 14:46 #4554 Karputov Vladimir:请注意,当使用Print()输出到期刊时,一个规范化的数字可能比你预期的包含更多的小数位。比如说。将被输出到终端。因此,对于打印来说,输出额外的值不是问题。 谢谢你,只是当我试图用0.07手开仓时,产生了错误(我以为是这个问题),可能是其他原因,我将尝试找出更多。 Vladimir Karputov 2015.10.08 14:53 #4555 pusheax: 谢谢你,只是当我试图用0.07手开仓时,它给出了一个错误(我以为这就是问题所在),这一定是其他原因,我会进一步研究。 首先要做的是看一下错误号码的描述。这将缩短搜索路径。 pr0gre5 2015.10.09 15:16 #4556 晚上好我已经声明了一个动态数组double all_order[][10];我在OnInit中重新定义了ArrayResize(all_order, 20)。我在函数中输入数据void OR_spisok(double a0, double a1, double a2, double a3, double a4, double a5){int a10=int(a0)。all_order[a10][0]=a0;all_order[a10][1]=a1;all_order[a10][2]=a2;all_order[a10][3]=a3;all_order[a10][4]=a4;all_order[a10][5]=a5;}三条线工作正常,在四条线上就会出现问题。2015.10.09 20:13:47.908 3102 EURUSD,H1: array out of range in '3102.mq4' (393,10)393,10它是。all_order[a10][0]=a0;什么是错的?删除了#属性严格#一行 脚本可以使用,没有这一行我可以继续吗? 测试日志 - 算法交易, 交易机器人 [删除] 2015.10.09 15:52 #4557 pr0gre5:晚上好声明了一个动态数组删除了#属性严格 行 脚本可以使用,没有这一行我可以继续吗?是 E_Ghazaryan 2015.10.09 16:17 #4558 Artyom Trishkin:所有这些参数都应列在iCustom()中指标名称后的逗号之后,在它们之后还有两个参数:缓冲区编号和条形图编号,数据是从那里获取的。I.e:iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number) 。所有列出的值都可以由外部EA变量设置,并将这些变量的名称写入iCustom(),而不是硬编码值。 谢谢你的答复。但事实是,我一开始是这样做的,但当我收到错误的数值时,我决定从iCustom中删除参数,以便专家顾问使用指标的标准参数。然而,在这两种情况下,EA得到了错误的数值。例如,Alert给出的蓝线是30.32362,但当我看指标图时,它在同一个地方有22.3320。而其他线路也是如此。 Artyom Trishkin 2015.10.09 17:36 #4559 E_Ghazaryan: 谢谢你的答复。但问题是,我一开始是这样做的,但当我得到错误的数值时,我决定从iCustom中删除这些参数,这样EA就会使用标准的指标参数。然而,在这两种情况下,专家顾问都会收到错误的数值。例如,Alert给出的蓝线是30.32362,但当我看指标图时,它在同一个地方有22.3320。而其他线路也是如此。 给我看看你从指标中获取数据的代码。 E_Ghazaryan 2015.10.09 19:44 #4560 Artyom Trishkin: 给我看看你从指标中获取数据的代码。代码是很大的。但为了找出问题所在,专家顾问不按规则工作,我把这部分切成一个单独的部分并开始测试。double Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0)。double Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0)。Alert(" Ind_Blue= " , Ind_Blue , " Ind_Red= " , Ind_Red)。 我还附上了专家顾问文件。我不想浪费你的时间,但我找不到问题所在。还有一个类似的指标,也有同样的问题(Adx mtf)。我有一个mq4的文件。但代码中似乎没有问题。 附加的文件: _MTF_ADX3.ex4 5 kb Adx_mtf.ex4 21 kb Adx_mtf.mq4 6 kb 1...449450451452453454455456457458459460461462463...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,没错 =D ))))已经附上。)
所有这些参数都应列在iCustom()中指标名称后的逗号之后,在它们之后还有两个参数:缓冲区编号和条形图编号,数据是从那里获取的。I.e:
iCustom(Symbol(),Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number) 。
所有列出的值都可以由EA的外部变量设置,这些变量的名称可以写入iCustom()中,而不是硬编码的值。
你能告诉我为什么吗。
双重d=0.07。
d =NormalizeDouble(d,2);
在这两种情况下,d==0.07000000000000001
如何留下2位小数?
你能告诉我为什么吗。
双重d=0.07。
d = NormalizeDouble(d,2);
在这两种情况下,d==0.07000000000000001
如何留下2位小数?
请注意,当使用Print()输出到Journal时,一个规范化的数字可能包含比你预期的更多的小数位。比如说。
将被输出到终端。
也就是说,对于打印来说,输出额外的数值并不是一个问题。
请注意,当使用Print()输出到期刊时,一个规范化的数字可能比你预期的包含更多的小数位。比如说。
将被输出到终端。
因此,对于打印来说,输出额外的值不是问题。
谢谢你,只是当我试图用0.07手开仓时,它给出了一个错误(我以为这就是问题所在),这一定是其他原因,我会进一步研究。
晚上好
我已经声明了一个动态数组
double all_order[][10];
我在OnInit中重新定义了
ArrayResize(all_order, 20)。
我在函数中输入数据
void OR_spisok(double a0, double a1, double a2, double a3, double a4, double a5)
{
int a10=int(a0)。
all_order[a10][0]=a0;
all_order[a10][1]=a1;
all_order[a10][2]=a2;
all_order[a10][3]=a3;
all_order[a10][4]=a4;
all_order[a10][5]=a5;
}
三条线工作正常,在四条线上就会出现问题。
2015.10.09 20:13:47.908 3102 EURUSD,H1: array out of range in '3102.mq4' (393,10)
393,10它是。
all_order[a10][0]=a0;
什么是错的?
删除了#属性严格#一行
脚本可以使用,没有这一行我可以继续吗?
晚上好
声明了一个动态数组
删除了#属性严格 行
脚本可以使用,没有这一行我可以继续吗?
所有这些参数都应列在iCustom()中指标名称后的逗号之后,在它们之后还有两个参数:缓冲区编号和条形图编号,数据是从那里获取的。I.e:
iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number) 。
所有列出的值都可以由外部EA变量设置,并将这些变量的名称写入iCustom(),而不是硬编码值。
谢谢你的答复。但问题是,我一开始是这样做的,但当我得到错误的数值时,我决定从iCustom中删除这些参数,这样EA就会使用标准的指标参数。然而,在这两种情况下,专家顾问都会收到错误的数值。例如,Alert给出的蓝线是30.32362,但当我看指标图时,它在同一个地方有22.3320。而其他线路也是如此。
给我看看你从指标中获取数据的代码。
代码是很大的。但为了找出问题所在,专家顾问不按规则工作,我把这部分切成一个单独的部分并开始测试。
double Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0)。
double Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0)。
Alert(" Ind_Blue= " , Ind_Blue , " Ind_Red= " , Ind_Red)。
我还附上了专家顾问文件。我不想浪费你的时间,但我找不到问题所在。
还有一个类似的指标,也有同样的问题(Adx mtf)。我有一个mq4的文件。但代码中似乎没有问题。