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

 
程序员同志们,有一个非常大的请求,请你们帮助为机器人写一段代码!该机器人的交易对象是两个木翼。当它们交叉时,它打开一个头寸,并在相反的交叉时关闭它。但它需要在相反的交叉点开设另一个位置。因此,当它关闭 "买入 "时,机器人应立即打开 "卖出",反之亦然!
附加的文件:
 
lufer:
谢谢,但在OnInit()中用Mas[N];是行不通的,我已经试过了。
嗯,我很抱歉,我昨天不是很清醒。或者不是很清醒。
 
AlexeyVik:
好吧,我很抱歉,我昨天晚上不是很清醒。或者不是很清醒。
)),它发生了。
 

假设我想让数组填满从第一个形成的柱子(#1)开始的每个柱子的指标(例如ATR)的数据?也就是说,数组已经被声明,并且启动函数已经对其进行了初始化。如何正确操作?

像这样?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1)。

}

或者可以通过以下方式进行。

for(int i=0; i<N; i=i++)

{

ArrayFill(Mas,i,1,iATR(NULL,0,1,i+1))

}

或者完全是其他的东西?,到目前为止,我还没有以任何方式成功(,有什么不对,请指教,提前感谢。

 
lufer:

假设我想让数组填满从第一个形成的柱子(#1)开始的每个柱子的指标(例如ATR)的数据?也就是说,数组已经被声明,并且启动函数已经将其初始化。如何正确操作?

像这样?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1)。

}


第一种情况就足够了。但如果你需要从第一个小节开始的数值,那么从1开始计算循环也是明智的。
 
evillive:
第一个选项就足够了。但如果我们需要从第一根柱子开始的数值,从1开始计算周期会更合理。
我试着用1和0,但还是有问题,数值没有被写入,当我要求输出一些时,它只给出了零。
 
lufer:
我试着用1和0,但还是有问题,没有写出任何数值,当我要求输出一些数值时,只输出了零。
请给我看输出代码。
 
evillive:
显示代码,要求输出。

为了以防万一,我给你看所有的代码。

//+------------------------------------------------------------------+

extern int    N        =100;                       // Количество баров

       int    Mas[];                             // Объявление массива

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

int OnInit()
  { 
     ArrayResize(Mas,N,0);                // Установка размера массива      
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {                                       
   for(int i=0; i<N; i=i++)                     // Цикл записи данных
     {                      

          Mas[i]=iATR(NULL,0,1,i+1);           // Вычисление значений          
     }
       Alert(Mas[0],"," ,Mas[50],"," ,Mas[99]);      // Вывод на экран
   return;                                           // Выход из start
  }
//+------------------------------------------------------------------+

 

使用SRC来插入代码

 
lufer:

为了以防万一,我给你看所有的代码。


制作一个双倍 类型的数组
 
evillive:
制作一个双倍 类型的数组
这并没有解决问题,现在看来,OnTick() 中出了问题--当我在终端窗口加载EA时,什么都没有发生,而当我试图删除它时,终端停滞了很久,过了一会儿又删除了我试着给一些元素手动赋值,一切都很好。关于阵列初始化周期的一些东西似乎是错误的。