[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 674

 

谢谢你。
 

这样的问题。

我开始修改教程中的专家顾问 - strings.mq4(链接到专家http://c.mql4.com/book/mq4/experts/strings.mq4)。

我已经添加了几行,但并不奏效。很明显,我犯了一个错误,但我找不到这个错误。

所以。所有的变化都集中在第10块。

这里是原文。

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Custom function...
{ // ...创建对象
Color; // 对象颜色
datetime T_Bar=Time [Ind_Bar]; // Bar的打开时间。
double O_Bar=Open [Ind_Bar]; // Bar开盘价
double C_Bar=Close[Ind_Bar]; // 柱状图的收盘价
double H_Bar=High [Ind_Bar]; // Bar最高价格
double L_Bar=Low [Ind_Bar]; // 最低杆价

string Nom_Lin =Line + "_"; // String - line number
// string Nom_Lin = DoubleToStr(Line,0)+"_"; // This is also possible
string Str_Time=TimeToStr(T_Bar); // String - open time.
string His_Name=Prefix+Nom_Lin+Str_Time;//创建对象的名称。
if (O_Bar < C_Bar) Color=Blue; // 颜色选择取决于...
如果(O_Bar > C_Bar) 颜色=红色; // ......取决于条形图的特征
如果(O_Bar ==C_Bar)颜色=绿色。

switch(Line) // 细线或粗线
{
例1://细线
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar) 。
break; // 退出开关
情况2://粗线
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar)。
ObjectSet( His_Name, OBJPROP_WIDTH, 3); // Style
}
ObjectSet( His_Name,OBJPROP_COLOR,Color); // Color
ObjectSet( His_Name, OBJPROP_RAY, false); // Beam
ObjectSetText(His_Name, "对象是由专家顾问创建的",10); // 说明
return; // 从函数中退出

}

这是我所做的(编译时没有错误):(也见附件)。

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Custom function...
{ // ...创建对象
Color; // 对象颜色
datetime T_Bar=Time [Ind_Bar]; // Bar的打开时间。
double O_Bar=Open [Ind_Bar]; // Bar开盘价
double C_Bar=Close[Ind_Bar]; // 柱状图的收盘价
double H_Bar=High [Ind_Bar]; // Bar最高价格
double L_Bar=Low [Ind_Bar]; // 最低杆价
//-------------------изменения---------------------------------------
double Macd_M_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,0) 。
//顶部--进入主线天的MAACD计算中
double Macd_S_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0) 。
// 这是对MACD的参考,并计算出这几天的信号线。
double Macd_M_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) 。
// 这是对MACD的参考,并计算当前时间框架上的主线
double Macd_S_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0) 。
// 这是对MACD的参考,并计算出当前时间框架的信号线

string Nom_Lin =Line + "_"; // String - number of the line.
// string Nom_Lin = DoubleToStr(Line,0)+"_"; // You can do it this way
string Str_Time=TimeToStr(T_Bar); // String - open time.
string His_Name=Prefix+Nom_Lin+Str_Time;//创建对象的名称。
如果((Macd_M_D1 < Macd_S_D1)&&(Macd_M_H4 < Macd_S_H4))颜色=蓝色。
如果((Macd_M_D1 > Macd_S_D1)&&(Macd_M_H4 > Macd_S_H4))颜色=红色。
//
//if (O_Bar < C_Bar) Color=Blue; //Colour selection depending on...
//if (O_Bar > C_Bar) Color=Red; // ......取决于酒吧的特性
//如果(O_Bar ==C_Bar)颜色=绿色。

//-------------------изменения---------------------------------------

目的是--如果日线和当前时间框架上的MACD读数相似--根据方向,将蜡烛染成红色或蓝色。

附加的文件:
 

你不能像这样声明数组

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

编译器会看到有一个变量而不是数组的大小。它根本不知道应该为未来的阵列分配多少内存。这就是为什么你的代码不能工作

 
drknn:

你不能像这样声明数组

编译器会看到有一个变量而不是数组的大小。它根本不知道应该为未来的阵列分配多少内存。这就是为什么你的代码不工作的原因

问题是,我没有碰过专家顾问的那一部分--它工作得很好--代码的指定部分取自MQL4教程--这里https://c.mql4.com/book/mq4/experts/strings.mq4。

 
victor417:

问题是,我没有碰过专家顾问的这一部分--而且都能正常工作--提到的那部分代码来自MQL4教程--这里https://c.mql4.com/book/mq4/experts/strings.mq4。


如果这就是教程中数组的声明方式,那就相当奇怪了。你会不会用注释来强调你贡献的那部分代码。

我也没有读过那本教科书。那么,作者对阵列宣言 的合法性的推理是什么呢?

 

我注意到一个奇怪的特征--报价量越大,测试器越难减慢......如果我从1999年开始测试,它跑得很快,但越接近现在的时间,刹车就越难。2008年,更接近于 "今天"--根本不可能在可视化模式下进行测试。

你是如何从根本上打击测试者的刹车的?

 

drknn:

你不能像这样声明数组

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

编译器会看到有一个变量,而不是数组的大小。它根本不知道应该为未来的阵列分配多少内存。这就是为什么你的代码不起作用。

如果这就是教程中对数组的定义,那真是太奇怪了。你会不会在你写的那部分代码上加一个注释?

我也没有读过那本教科书。那么,作者对阵列宣言的合法性的推理是什么呢?

我看到变量初始化。阵列在哪里?

时间系列?;)

 
你好,谁能做一个之字形的指标,它弯曲的电流从高低点的最小偏差,但以点为单位......例如,如果你设置一个50点的偏差,任何小于这个,它被认为是噪音......我真的不知道如何在论坛上搜索这么大的kollichestvo东西......提前谢谢。
 

请你告诉我,我的测试器有问题。

报告显示,总损失=863,最大缩水=1427。这怎么可能?

如果你看一下平衡曲线--你可以看到,最大的缩减--863。

这是什么故障,请告诉我,也许这就是它应该有的样子?

预先感谢)

 
嗨!谁能在这里添加一个跟踪止损;而且每次的止损设置都不一样......请修复它。
附加的文件:
a_sidus_1.mq4  5 kb
原因: