初学者的问题 MQL5 MT5 MetaTrader 5 - 页 456

 
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()中,而不是硬编码的值。

 

你能告诉我为什么吗。

双重d=0.07。

d =NormalizeDouble(d,2);

在这两种情况下,d==0.07000000000000001

如何留下2位小数?

 
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
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Karputov Vladimir:


请注意,当使用Print()输出到期刊时,一个规范化的数字可能比你预期的包含更多的小数位。比如说。

将被输出到终端。


因此,对于打印来说,输出额外的值不是问题。

谢谢你,只是当我试图用0.07手开仓时,产生了错误(我以为是这个问题),可能是其他原因,我将尝试找出更多。
 
pusheax:
谢谢你,只是当我试图用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;

什么是错的?

删除了#属性严格#一行

脚本可以使用,没有这一行我可以继续吗?

 
pr0gre5:

晚上好

声明了一个动态数组


删除了#属性严格

脚本可以使用,没有这一行我可以继续吗?

 
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。而其他线路也是如此。
 
E_Ghazaryan:
谢谢你的答复。但问题是,我一开始是这样做的,但当我得到错误的数值时,我决定从iCustom中删除这些参数,这样EA就会使用标准的指标参数。然而,在这两种情况下,专家顾问都会收到错误的数值。例如,Alert给出的蓝线是30.32362,但当我看指标图时,它在同一个地方有22.3320。而其他线路也是如此。
给我看看你从指标中获取数据的代码。
 
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