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

 
lufer:
这并没有解决问题,现在看来,OnTick() 中出了问题--当我在终端窗口加载EA时,什么都没有发生,而当我试图删除它时,终端停滞了很长一段时间,然后在一段时间后删除了它我试着给一些元素手动赋值,一切都很好。关于数组初始化循环的一些东西似乎是错误的。

你说它 "不能解决 "是什么意思?你把低于1的双精度数据塞进Int数组,输出结果自然会包含0。好吧,这个循环也是残缺的。

这段代码应该可以工作。

#property strict

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

double Mas[];                             // Объявление массива
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

int OnInit()
  { 
    ArrayResize(Mas,N);
     return(INIT_SUCCEEDED);
  }

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

void OnDeinit(const int reason)
  {

  }

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

void OnTick()
  {                                       
       for(int i=0; i<N; i++)                     // Цикл записи данных
         {                      
    
              Mas[i]=iATR(NULL,0,5,i+1);           // Вычисление значений          
         }
           Print(DoubleToStr(Mas[0],_Digits),"," ,DoubleToStr(Mas[50],_Digits),"," ,DoubleToStr(Mas[99],_Digits));      // Вывод значений
  }
 
evillive:

你说 "不起作用 "是什么意思?你把小于1的双倍数据塞进int数组,当然输出的结果是零。而这个循环是一个混乱的循环。

这是一种应该工作的代码。

当然你 说的双倍 Mas[]是完全正确的(我考虑到ATP出于某种原因以整数值计算点数)。 关键是我改变了数组类型后也没有出现,但我已经意识到我的错误 非常感谢您的帮助!
 
我不想创建一个单独的主题,所以我就在这里问。OrderSelect函数 的文档指出,所有订单数据都被复制到"程序环境 " 中。它只指当前的图表,还是 指整个终端?我问这个问题是因为我有一个问题,就是在安装了相同EA的不同图表上同时处理几个订单。
 
.roman.:
我不想创建一个单独的主题,所以我就在这里问。OrderSelect函数的文档指出,所有订单数据都被复制到"程序环境 " 中。它只指当前的图表,还是 指整个终端?我问这个问题是因为我有一个问题,即同时处理来自安装有相同EA的不同图表的几个订单。
这些订单对所有运行在该订单的终端的用户应用程序都是可用的。
 
evillive:
这些订单对所有在终端运行的用户程序都是可用的,在那里订单被打开。
那么,我们如何防止将另一个订单的数据错误地复制到软件环境中,而这个数据同时又是从不同的图表中选择的?
 
.roman.:
那么,我们如何防止将另一个订单的数据错误地复制到软件环境中,而这个数据同时又是从不同的图表中选择的?
不同订单的数据没有任何重叠,没有任何需要保护的地方。
 
evillive:
不同订单的数据没有任何重叠,没有任何需要保护的地方。

那么我们谈论的是不同的事情。我最初指的是什么是文件中描述的 "软件环境 "的问题。它是指整个终端吗?

具体来说,我的问题是,尽管在OrderSelect函数 中对OrderSymbol和Symbol进行了排他性比较,但当数据(订单打开时间、打开价格等)可以从一个货币对的图表中出现时,就出现了问题。也就是说,我想知道,是否有可能在EA对欧元兑美元的OrderSelect功能期间,例如,EA也将开始工作于另一个货币对的OrderSelect功能,并且该功能的最后一次调用的订单数据将被加载到 "程序环境"?

 
.roman.:

那么我们谈论的是不同的事情。我最初指的是什么是文件中描述的 "软件环境 "的问题。它是指整个终端吗?

具体来说,我的问题是,尽管在OrderSelect函数中对OrderSymbol和Symbol进行了排他性比较,但当数据(订单打开时间、打开价格等)可以从一个货币对的图表中出现时,就出现了问题。因此,我想知道,是否有可能在EA对欧元兑美元的OrderSelect功能期间,例如,EA也将开始工作于另一个货币对的OrderSelect功能,并且该功能的最后一次调用的订单数据将被加载到 "程序环境"?

我需要代码。这里面有一个错误
 
.roman.:

那么我们谈论的是不同的事情。我最初指的是什么是文件中描述的 "软件环境 "的问题。它是指整个终端吗?

具体来说,我的问题是,尽管在OrderSelect函数中对OrderSymbol和Symbol进行了排他性比较,但当数据(订单打开时间、打开价格等)可以从一个货币对的图表中出现时,就出现了问题。也就是说,我想知道,是否有可能在EA对欧元兑美元的OrderSelect功能期间,例如,EA也将开始工作于另一个货币对的OrderSelect功能,并且该功能的最后一次调用的订单数据将被加载到 "程序环境"?

每个订单都有独特的参数,可以清楚地将其与其他订单区分开来。这些是票据和打开(或关闭,如果你搜索历史)的时间。它们在一个交易账户内就像视网膜图案一样独特。

使用OrderSelect函数 选择订单是不够的,我们必须检查它是否是正确的订单,或者我们是否必须选择下一个订单。

 
Vinin:
你需要一个密码。这里面有一个错误
for(int i=OrdersTotal()-1;i>=0;i--)
        {
            if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
               {
                  if(OrderType()==OP_BUY)
                     {
                        double openPrice = 0;
                        openPrice = OrderOpenPrice();
                        if(Ask>openPrice)
                           {
                              Print("OrderSymbol ",OrderSymbol()," OrderTicket ",OrderTicket()," OrderOpenPrice ",OrderOpenPrice());
                           }
                     }
                  if(OrderType()==OP_SELL)
                     {
                        double openPrice = 0;
                        openPrice = OrderOpenPrice();
                        if(Bid<openPrice)
                           {
                              Print("OrderSymbol ",OrderSymbol()," OrderTicket ",OrderTicket()," OrderOpenPrice ",OrderOpenPrice());
                           }
                     }
               }
        }

不必要的计算(与问题无关)已被删除。打印机被添加到代码中,专门用来显示这个问题。尽管订单符号与符号进行了比较,但在EA开放的情况下,它可以显示这一点(从OSI图表中获取欧元的订单数据,例如,在这种情况下)。