[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 45

 
Stells:

下午好。

请帮助我提取ExTrendv2指标(附件)的Up_Line和Down_Line的值到专家顾问中。

我正在尝试以下方式。

对于Up_Line iCustom(NULL, 0, "ExTrendv2", 0, 0,1)

对于Down_Line iCustom(NULL, 0, "ExTrendv2", 0, 1,1)

失败。


有这样一个指标的EA不会挂掉终端吗?
 

它在测试器中似乎没有挂起。

只是我还是不能把数值弄出来,这根本就没有任何意义。

 
嗨,我正试图在一个符号和4个时间段上同时测试专家顾问--我有一个小问题--错误129--开盘和收盘的价格都不对,交易线程似乎在发出指令之前就已经分离了,而while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000;
Print("Trade thread is busy.在 "+DoubleToStr((Interval/1000),0)+"秒内重复检查";
Sleep(Interval);}RefreshRates(); 有谁知道这东西是什么以及如何处理它?
 
Stells:

它在测试器中似乎没有挂起。

只是我还是不能把数值弄出来,这根本就没有任何意义。


这样试试吧,没有参数。

Up_Line iCustom(  NULL, 0, "ExTrendv2", 0,1);
Down_Line iCustom(NULL, 0, "ExTrendv2", 1,1);

尽管该指标在每个刻度 上都会重新计算一切。

 
Dimoncheg:
大家好,我试图在一个符号和4个时间段上同时测试专家顾问--我有一个小问题--错误129--开盘和收盘时都有错误的价格,交易线程似乎在发盘前和收盘后是分开的 while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000; Print("Trade thread is busy.在 "+DoubleToStr((Interval/1000),0)+"秒内重复检查"; Sleep(Interval);}RefreshRates(); 有谁知道这东西是什么以及如何处理它?


错误的价格(Err_invalid_price 129 价格不正确


在向服务器发送请求之前,将价格规范化为数字。

 
Vinin:


这样试一下,没有参数

尽管该指标在每个刻度上都会进行全面的重新计算。

我很后悔把它放在图表上。终端进入深思熟虑,15分钟后,我杀死了它
 
artmedia70:
错误的价格(Err_invalid_price 129 价格不正确


在向服务器发送请求之前,将价格规范化为数字



价格当然是通过NormalizeDouble(Ask,Digits)和NormalizeDouble(Bid,Digits)规范化的,对于发送订单,我也尝试了Igor Kim的函数,在这里--同样的错误发生,因为该函数没有处理,它只是尝试发送订单五次,就这样。该错误并不是在每一个发送订单的命令下都会发生,大多数订单仍然是开放的。我感觉这个问题与交易流程有关,因为在某种情况下,当EA想在一个符号的不同时间段同时发送几个订单时,就会出现错误,通常有一个订单被发送出去,而其余的订单则得不到成功,出现这种错误。
 
Dimoncheg:

价格当然是通过NormalizeDouble(Ask,Digits)和NormalizeDouble(Bid,Digits)规范化的,对于发送订单,我也尝试了Igor Kim的函数,在这里--同样的错误发生,因为该函数没有处理,它只是尝试发送订单五次,就这样。该错误并不是在每一个发送订单的命令下都会发生,大多数订单仍然是开放的。我感觉这个问题与交易流程有关,因为在某种情况下,当EA想在一个符号的不同时间段同时发送几个订单时,就会出现错误,但通常有一个订单被发送,但其他的都失败了。

在使用Ask和Bid之前,立即执行RefreshRates()
 
//-------------------------------------------------------------------+
extern int    TotalOrders    = 1;
//-------------------------------------------------------------------+
// Global variables
int Cnt = 0;              // counter variable, used in for() loops
    // only perform analysis and open new order if we have not reached our TotalOpenOrders max
    if(TotalOpenOrders() < TotalOrders)
    {
//+------------------------------------------------------------------+
//|-----------------------//  Orders Count  //-----------------------|
//+------------------------------------------------------------------+
// This function returns the total amount of orders the expert advisor has open  
int TotalOpenOrders()
{
  Cnt=OrdersTotal();
  int TotalOpenOrders = 0;
  if(Cnt==0)
  {
    return(0);
  }
    else
    {
    for(;Cnt>=0;Cnt--)
    {
      RefreshRates();
      OrderSelect(Cnt,SELECT_BY_POS);
      if(OrderMagicNumber()==Magic)
      {
      TotalOpenOrders++;
      }
    }
  }
  return(TotalOpenOrders);
}
 
artmedia70:
我很后悔把它放在图表上。终端进入深思熟虑状态,大约15分钟后,我把它干掉了。

在你把东西放上去之前,你不看代码。