[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 262

 
dzhini:
你能告诉我如何确定OBJ_LABEL类型的图形对象的价格坐标吗?

使用带有参数OBJPROP_XDISTANCE, OBJPROP_YDISTANCE的ObjectGet。
 

1个问题。如果一个数组的名称的括号里有一个数字10,这意味着该数组中有11个元素

问题2.我应该确保在 数组的 end_set 后面没有 零,但从 Allow_setend_set 所有价格都应该在那里 。我的 ArrayResize 操作正确吗

//global
price[10];
int i =-1;
//-------------------
int start()
{
if(!TF_F_NewBar())return(0);
if(Allow_setting ==true)
{
i++;
ArrayResize(price, i);//我认为price[10]数组将保持price[0](这是否允许?),
//即在数组中的一个地方写入零
。因此,每走一步(bar),我们将

//增加阵列的大小
price[i] = Close[1]; // 我把Close[1]而不是0写进这个一处数组如果允许这样做,
//然后你可以指定最小的数组价格[0]
;
}
if(end_set==true)
{
数组数据处理;

i = -1; //处理后,返回到原来的位置
}
}

为把代码放在错误的地方表示歉意,因为它应该是这样的。

 
gince:

1个问题。如果一个数组的名称的括号里有一个数字10,这意味着该数组中有11个元素


这样的数组包含10个单元,索引从0到9。这意味着第一个元素将在索引为0的单元格1中,这就是为什么for语句 0开头。

问题2.我应该确保在 数组的 end_set 后面没有 零,但从 Allow_setend_set 所有价格都应该在那里 。我的 ArrayResize 操作正确吗

你想在数组中获得过去10个柱状的收盘价吗?

对不起,我没有把代码放在正确的地方。

你可以随时调整你写的东西,只要点击 "编辑"。


 
paladin80:

你想把最后10个价格排列在接近最后10个柱子的地方吗?

你可以随时调整你写的东西,只要点击 "编辑"。


不,不是10,而是Allow_select toend_set。 你必须确保数组中在end_set之后没有零。
 
gince:
不,不是10,而是Allow_selectend_select 之前。可以是40或65,在数组的end_set后面不应该有零。


这很好,只要在开始时将数组设置为动态。

double цена[];

...

int init ()

{

…

ArrayResize (цена,0);

…

}

int start ()

{

…

}

 
gince:
不,不是10,而是Allow_selectend_select 之前。可以是40或65,在数组的end_set后面不应该有零。

double цена[]; // динамический массив
int    начало=2; // 0 (ноль) это текущий, ещё не закрытый бар
int    конец=45;
int    количество;
//---
int init()
  {
   количество=конец-начало; // =43
   ArrayResize(цена, количество); // устанавливается размер массива - 43 ячейки
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)
    {
      for (int i=0; i<=количество-1; i++) // заполнить 43 ячейки с индексом от 0 до 42.
                                          // в ячейке 0 будет цена close для бара 2 и т.д.
      цена[i]=Close[i+начало];   
    }
   return(0);
  }
//---
 
paladin80:

我不知道一个数组应该有多少个元素。它可能是40或65。总而言之,我们需要一个动态数组

double цена[]; // динамический массив

int i = -1;
//---
int init()
  {
   ArrayResize(цена, 0); // устанавливается размер массива минимальным - 1 ячейка
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)                // это сигнал по индюку
    {
      //Пришел новый бар и резрешение есть 
      i++.                                     //увеличиваем индех            
      ArrayResize(цена, i)
      цена[i]=Close[i];   
   }
   if(конец_набора== true)   // это сигнал по индюку
   {
      //----
      //работа с массивом
      //----
      Pазрешить_набор == false; 
      i= -1;
//А тут
надо что нибуть делать с бывшим массивом (уменшить, очистить или еще что то)      
   }
   return(0);
 }
//---
 
gince:

我不知道一个数组应该有多少个元素。它可能是40或65。总而言之,我们需要一个动态数组

让我从另一边问你。为什么要用收盘价填充数组呢?双倍的close[] 本身就已经是一个收盘价数组了。
 
paladin80:
我从另一边问你。为什么要用收盘价填充一个数组呢?双倍的close[] 本身就已经是一个收盘价的数组。
我并不关心它是封闭的还是开放的。最重要的是,他们从现在到现在。然后我过滤它们。从现在开始到现在的这段时间里,应该进行过滤。当我过滤完一个数组后,我用不同的数据重新做另一个数组。而我是用最后一个数组画的。所以,你问的这个数组只是一个中间数组。
 
现在,对于每一个酒吧,它都会在数组中放入一个cloze。如果我不这样做,那么我将不得不计算从哪个条形图中收集数据、循环、过滤。而这只剩下了后者。