任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 635

 
Top2n:

该函数返回数组中的单元格数量,而不是填充单元格的数量。

只有一个循环才能帮助你。翻阅并计算
 

请给一个新手一些建议!

我的任务是在一个专家顾问的图表窗口中创建一个子窗口(sub-windows),该窗口与专家顾问相连。

我找遍了所有的东西,但没有找到如何做。你可以创建/编辑对象

其他指标已经创建的子窗口,但它们没有我需要的东西......。

我怎样才能摆脱这种情况?

 
boroda4:

请给一个新手一些建议!

我的任务是在一个专家顾问的图表窗口中创建一个子窗口(sub-windows),该窗口与专家顾问相连。

我找遍了所有的东西,但没有找到如何做。你可以创建/编辑对象

其他指标已经创建的子窗口,但我没有我需要的东西......

我怎样才能摆脱这种情况?


看一下这篇文章,也许你会发现一些东西
 
Vinin:

只有一个循环才能帮助你。通过和计数。

你能告诉我如何计算一个数组中被填充的单元格的数量吗?

该数组包含趋势线 价格,相对于当前条形图。

 sch=ObjectsTotal(OBJ_TREND);//количество трендовы линий
for(int s=0;s<sch;s++) 
 {
 
// ArraySort(masS,WHOLE_ARRAY,0,MODE_DESCEND);
// ArraySort(masB,WHOLE_ARRAY,0,MODE_DESCEND);
  
   DWnem=ObjectName(s); //Текущее имя объекта
   DW="downtrendline"+IntegerToString(s);//Для фильтрации запроса
   DW2="uptrendline"+IntegerToString(s);//
  if(DWnem="")//если объекта уже нет, то обнуляем ячейку массива
   {
   masS[s]=0;
   masB[s]=0;
   }
 if(DWnem=DW)//если имя совпадает с фильтром, то запоминаем в массив
{
  if(ObjectGet(DWnem,OBJPROP_COLOR)==Goldenrod) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
  if(ObjectGet(DWnem,OBJPROP_COLOR)==Gainsboro) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
  if(ObjectGet(DWnem,OBJPROP_COLOR)==White) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
}   
for(int a=0;a<20;a++)// ну а тут счетчик, чтоб посчитать сколько ячеек записано в масив { if(mas[a]>0) sch++; } Как остановить счетчик?

我搞不清楚。

我这辈子都想不明白,就是这样,请帮助我!!!。

 

你能告诉我如何在终端中获得TerminalTester的终止信号吗?

int start()
   {
    //---------------------------------- Из Терминала запустим ТерминалТестер -------------------------
    Start   = ShellExecuteW(0, "Open", "terminal.exe", "D:\\Alpari_Terminal_Tester\\tester\\optimise.ini", "D:\\Alpari_Terminal_Tester", 3);
    while(STOP)
        {
         //------ Функция запроса проверки состояния ТерминалТестера ------
         // STOP=?????????????????????????????????????????????????;
         Sleep(1000);
        }
    return(0);
   }
 
Top2n:

你能告诉我如何计算一个数组中被填充的单元格的数量吗?

该数组包含趋势线价格,相对于当前条形图。

我搞不清楚。

我这辈子都想不明白,请帮帮我吧!!!。

像这样试试吧。

int limit = ...; //до какого числа нужно
MathMin(sch++,limit); //если это будет работать, не пробовал

也许会有效果。好运!

 
Top2n:

你能告诉我如何计算一个数组中被填充的单元格的数量吗?

该数组包含趋势线价格,相对于当前条形图。

我搞不清楚。


可能需要及时将计数器置空,这样它就不会缠绕更多,并从零开始重新计算?

千米函数不好用,最好是把完成的大块动作放到单独的函数中,即使其中一些只被调用一次。而且,最好从主函数中调用这些独立的函数。

这样算就可以了吗?

#property strict

/******************************************************************************/
uint getFilledCellsNumber(double &array[]) { // Массив принимается по ссылке, то есть, НЕ копируется
  uint cnt = 0;

  for (int i = 0, limit = ArraySize(array); i < limit; i++) {
    if (array[i] > 0) {
      cnt++;
    }
  }

  return cnt;
}

/******************************************************************************/
void OnStart() {
  double a[] = {0, 1.2, 1.3, 0, 1.1};
  uint filledCellsNumber = getFilledCellsNumber(a); // Массив передаётся по ссылке, то есть, НЕ копируется

  Print("Number of filled cells: ", filledCellsNumber);
}

当我启动它时,我得到以下信息。

00:24:46 Script 1 EURUSDm,H1: loaded successfully
00:24:46 1 EURUSDm,H1: initialized
00:24:46 1 EURUSDm,H1: Number of filled cells: 3
00:24:46 1 EURUSDm,H1: uninit reason 0
00:24:46 Script 1 EURUSDm,H1: removed

似乎算对了。

 

你好。

当编译一个2012年编写的程序时,出现了一个警告。

由于类型转换可能导致数据丢失 FinBuy1531.mq4 144 7

这意味着什么,我怎样才能避免它?

P.S. 该程序在测试器中运行正常。

 
simpleton:

也许计数器应该及时清零,这样它就不会再增加,从头再数一遍?

千米函数并不好,完整的动作块最好放在单独的函数中,即使其中一些只被调用一次。并从主函数中调用那些独立的。

这种计算方法是否可行?

当我启动它时,我得到以下信息。

似乎计算正确。


哦,非常感谢你!))。一般来说,它的效果很好。

谢谢大家的帮助!)

 
Shurkin:

你好。

当编译一个2012年编写的程序时,出现了一个警告。

由于类型转换可能导致数据丢失 FinBuy1531.mq4 144 7

这意味着什么,我怎样才能避免它?

P.S. 该程序在测试器中运行正常。

你需要在代码中正确执行类型转换