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

 
Infinity:

太清楚了,看书不看人,干活不干活,谢谢你!继续前进)与问题。所有关于相同的全局变量。我在该指标中加入了以下条件。

我想定义哪个全局变量应该被分配一个值,这取决于指标以什么货币为基础。

我理解在全局变量GlobalVariableSet(valuta,param)中,名称(valuta)应该包含上面分配给它的值

在专家顾问代码中再次调用全局变量

string valuta="valuta"。

int i= GlobalVariableGet(valuta); // 但我没有得到这个值,....也许这样就无法改变全局变量的名称?

如果EA检查指标保存的值,那么合乎逻辑的是,参数valuta的值应该对应于符号名称,即EURUSD或GBPUSD。

因此,如果顾问检查当前符号的值,那么

string valuta = Symbol();

int i=GlobalVariableGet(valuta)。
 
zhuki:

首先,从帮助

doubleGlobalVariableGet(string name)

返回现有全局变量的值,如果有错误,则返回0。调用GetLastError()来获取错误信息。


你能看到GV的内容,但不能检索它?


那么,全局变量同时显示名称和值,....我只是不能在我的代码中通过(参数名)全局变量获得全局变量的值,我必须指定字符串名称,然后没有问题,它可以找到所有的东西。
 
Infinity:

那么全局变量同时显示名称和值,.....我只是不能通过全局变量的(参数名)在我的代码中获得全局变量的值,我必须指定字符串名称,然后它发现没有问题。


替换

如果(symb==EUR){valuta=EUR;}。

如果(symb=="EURUSD") {valuta="EUR";}

 
keekkenen:

如果EA检查指标保存的值,那么合乎逻辑的是,参数valuta的值应该对应于工具的名称,即EURUSD或GBPUSD...

因此,如果顾问检查当前符号的值,那么

string valuta = Symbol();

int i= GlobalVariableGet(valuta)。


这就是它的工作原理))这比看起来更容易 )

非常感谢每一个访问和帮助的人!

 

朋友们,告诉我,我哪里搞砸了...。我搞不清楚。该指标读取数据,但随后就不工作了。我找不到它。也许有人能告诉我我不明白的地方。

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
// Поиск экстремумов
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
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]);
            }
      }            
         

}   

日志总是输出指标值数组的数据,但再往前走--停止......。
...只有一个零细胞...并且只有零...请帮助我...


 
odiseif:
对不起,有一个错误.....,这里是原文

奥德赛,如果你没有,你应该添加它们:))

附加的文件:
 
artmedia70:

朋友们,告诉我,我哪里搞砸了...。我搞不清楚。该指标读取数据,但随后就不工作了。我找不到它。也许有人能告诉我我不明白的地方。

日志总是显示指标值数组的数据,但随后停止了...
...只有一个零细胞...并且只有零...请帮助我...

Artyom,到目前为止发现了第一个错误。

数组PeakUP[]和PeakDN[],在声明时没有指定元素数量,也就是说,你创建它们时根本没有单元格,然后在代码中试图在其中写入一些东西,但由于它们本身不包含元素,自然在其中没有写入任何东西,而且在打印机中一直为零。由于你不知道到底会有多少个高峰和低谷,我建议你在新数据到来时动态增加这些数组中的元素数量,修正的区域被标记为红色。

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]);
            }
      }    

ArraySize() 返回数组元素的 总数,但由于索引从零开始,实际的元素数是 ArraySize() -1

 
我这里又有问题了)现在的问题是以下性质的。(感谢之前帮助过我的人),现在我的专家顾问从指标上接收全局变量的数据,通过检测从哪个符号接收数据。在这些数据的基础上,我在专家顾问中对我收到的全局变量 数据的货币开了一个订单。 我把EA附在一个图表上,把指标附在所有其他图表上。它得到了数据,但只对它所处的货币(EA本身)开出了订单...我认为它应该是一个多专家的...我不知道如何做,或者至少应该在其中加入什么,以便在其他货币对上打开订单(...)我不想运行多个EA(...)。
 
Infinity:
...如何制作,或者至少应该在其中指定什么,以便在其他货币对上开立订单。 我不想运行几个EA((
OrderSend(货币对名称.... 和其他参数......)
 
ToLik_SRGV:

Artyom,到目前为止,我已经发现了第一个错误。

数组PeakUP[]和PeakDN[],在声明时没有指定元素的数量,也就是说你在创建它们时根本没有单元格,然后在代码中试图在其中写入一些东西,但由于它们本身不包含元素,自然没有写入任何东西,而且在打印机中一直为零。由于你不知道到底会有多少个高峰和低谷,我建议你在新数据到来时动态增加这些数组中的元素数量,修正的区域被标记为红色。

ArraySize() 返回数组元素的总数,但由于索引从零开始,实际的元素数是 ArraySize() -1

阿纳托利!应该为你树立一座纪念碑--在你的祖国树立一座半身塑像!最有趣的是,我为TempIND阵列做的,但我忘记了他们,在他们身上工作了半个晚上......:))
原因: