//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж// Поиск экстремумов//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжvoid SaveDataIND(double &TempIND[], int nBars)
{
ArrayResize(TempIND,nBars); // Размер массива под переданный в ф-цию размерfor (int j=0; j<=nBars-1; j++)
{
TempIND[j]=iAD(NULL,PERIOD_M5,j); // Запишем данные инд. в цикле в массивPrint("TempIND[",j,"] = ",TempIND[j]);
}
//------------------------------------------------------------------// Заполнение массивов данными о пичках и донышках//------------------------------------------------------------------double PeakUP[], PeakDN[]; // Объявляем массивы пичков/донышковint i, k, l, asize;
if (TempIND[nBars-1]<TempIND[1]) // Если последний бар массива ниже первого - тенденция вверх
{
k=0; // Инициализируем индекс массива донышковfor (i=3; i<=nBars-1; i++) // Пробежимся по массиву значений
{
if (TempIND[i]>TempIND[i-1] &&
TempIND[i-1]<TempIND[i-2]) // Нашли донышко
{
PeakDN[k]=TempIND[i-1]; // Заносим его значение в массив донышек
k++; // Увеличиваем индекс массива донышков
}
}
asize=ArraySize(PeakDN);
for (l=0; l<=asize; l++)
{
Print("PeakDN[",l,"] = ",PeakDN[l]);
}
}
if (TempIND[nBars-1]>TempIND[1]) // Если последний бар массива выше первого - тенденция вниз
{
k=0; // Инициализируем индекс массива пичковfor (i=3; i<=nBars-1; i++) // Пробежимся по массиву значений
{
if (TempIND[i]<TempIND[i-1] &&
TempIND[i-1]>TempIND[i-2]) // Нашли пичёк
{
PeakUP[k]=TempIND[i-1]; // Заносим его значение в массив пичков
k++; // Увеличиваем индекс массива пичков
}
}
asize=ArraySize(PeakUP);
for (l=0; l<=asize; l++)
{
Print("PeakUP[",l,"] = ",PeakUP[l]);
}
}
}
if (TempIND[nBars-1]<TempIND[1]) // Если последний бар массива ниже первого - тенденция вверх
{
k=0; // Инициализируем индекс массива донышковfor (i=3; i<=nBars-1; i++) // Пробежимся по массиву значений
{
if (TempIND[i]>TempIND[i-1] &&
TempIND[i-1]<TempIND[i-2]) // Нашли донышко
{
ArrayResize(PeakDN, k + 1);
PeakDN[k]=TempIND[i-1]; // Заносим его значение в массив донышек
k++; // Увеличиваем индекс массива донышков
}
}
asize=ArraySize(PeakDN);
for (l=0; l< asize; l++)
{
Print("PeakDN[",l,"] = ",PeakDN[l]);
}
}
if (TempIND[nBars-1]>TempIND[1]) // Если последний бар массива выше первого - тенденция вниз
{
k=0; // Инициализируем индекс массива пичковfor (i=3; i<=nBars-1; i++) // Пробежимся по массиву значений
{
if (TempIND[i]<TempIND[i-1] &&
TempIND[i-1]>TempIND[i-2]) // Нашли пичёк
{
ArrayResize(PeakUP, k + 1);
PeakUP[k]=TempIND[i-1]; // Заносим его значение в массив пичков
k++; // Увеличиваем индекс массива пичков
}
}
asize=ArraySize(PeakUP);
for (l=0; l< asize; l++)
{
Print("PeakUP[",l,"] = ",PeakUP[l]);
}
}
太清楚了,看书不看人,干活不干活,谢谢你!继续前进)与问题。所有关于相同的全局变量。我在该指标中加入了以下条件。
我想定义哪个全局变量应该被分配一个值,这取决于指标以什么货币为基础。
我理解在全局变量GlobalVariableSet(valuta,param)中,名称(valuta)应该包含上面分配给它的值
在专家顾问代码中再次调用全局变量
string valuta="valuta"。
int i= GlobalVariableGet(valuta); // 但我没有得到这个值,....也许这样就无法改变全局变量的名称?
如果EA检查指标保存的值,那么合乎逻辑的是,参数valuta的值应该对应于符号名称,即EURUSD或GBPUSD。
因此,如果顾问检查当前符号的值,那么
string valuta = Symbol();
int i=GlobalVariableGet(valuta)。首先,从帮助
返回现有全局变量的值,如果有错误,则返回0。调用GetLastError()来获取错误信息。
你能看到GV的内容,但不能检索它?
那么,全局变量同时显示名称和值,....我只是不能在我的代码中通过(参数名)全局变量获得全局变量的值,我必须指定字符串名称,然后没有问题,它可以找到所有的东西。
那么全局变量同时显示名称和值,.....我只是不能通过全局变量的(参数名)在我的代码中获得全局变量的值,我必须指定字符串名称,然后它发现没有问题。
替换
如果(symb==EUR){valuta=EUR;}。
至
如果(symb=="EURUSD") {valuta="EUR";}
如果EA检查指标保存的值,那么合乎逻辑的是,参数valuta的值应该对应于工具的名称,即EURUSD或GBPUSD...
因此,如果顾问检查当前符号的值,那么
string valuta = Symbol();
int i= GlobalVariableGet(valuta)。这就是它的工作原理))这比看起来更容易 )
非常感谢每一个访问和帮助的人!
朋友们,告诉我,我哪里搞砸了...。我搞不清楚。该指标读取数据,但随后就不工作了。我找不到它。也许有人能告诉我我不明白的地方。
日志总是输出指标值数组的数据,但再往前走--停止......。
...只有一个零细胞...并且只有零...请帮助我...
对不起,有一个错误.....,这里是原文
奥德赛,如果你没有,你应该添加它们:))
朋友们,告诉我,我哪里搞砸了...。我搞不清楚。该指标读取数据,但随后就不工作了。我找不到它。也许有人能告诉我我不明白的地方。
日志总是显示指标值数组的数据,但随后停止了...
...只有一个零细胞...并且只有零...请帮助我...
Artyom,到目前为止发现了第一个错误。
数组PeakUP[]和PeakDN[],在声明时没有指定元素数量,也就是说,你创建它们时根本没有单元格,然后在代码中试图在其中写入一些东西,但由于它们本身不包含元素,自然在其中没有写入任何东西,而且在打印机中一直为零。由于你不知道到底会有多少个高峰和低谷,我建议你在新数据到来时动态增加这些数组中的元素数量,修正的区域被标记为红色。
ArraySize() 返回数组元素的 总数,但由于索引从零开始,实际的元素数是 ArraySize() -1。
...如何制作,或者至少应该在其中指定什么,以便在其他货币对上开立订单。 我不想运行几个EA((
Artyom,到目前为止,我已经发现了第一个错误。
数组PeakUP[]和PeakDN[],在声明时没有指定元素的数量,也就是说你在创建它们时根本没有单元格,然后在代码中试图在其中写入一些东西,但由于它们本身不包含元素,自然没有写入任何东西,而且在打印机中一直为零。由于你不知道到底会有多少个高峰和低谷,我建议你在新数据到来时动态增加这些数组中的元素数量,修正的区域被标记为红色。
ArraySize() 返回数组元素的总数,但由于索引从零开始,实际的元素数是 ArraySize() -1。