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

 
skyjet:

你好!希望在这个函数中寻找错误。

这个想法是,未开盘的挂单应该在下单两天后被删除。

min=1440。

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()!=Symbol()) continue;
         if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
         {  if(TimeCurrent()-OrderOpenTime()>=min)
            {  OrderDelete(OrderTicket());
               return;
         }  }
}  }  }
 
skyjet:

你好!希望在这个函数中寻找错误。

这个想法是,未开盘的挂单应该在下单两天后被删除。

min=1440。


你为什么要跟踪和删除待处理的订单?你应该设置它们的失效时间=TimeCurrent()+min*60+sec;它们将在min*60+sec之后被自行删除。
 
Sepulca:

为什么需要监控和删除挂单?你需要设置datetime expiration=TimeCurrent()+min*60+sec;它们将在min*60+sec后自行删除。
也许,挂单 将根据一些算法关闭,因此,如果有另一个条件,例如2天,它将在1天内关闭。2天。
 
Sepulca paladin80 谢谢!日期时间过期正是我们需要的 :)
 

paladin80:

OrderOpenTime()返回订单打开的时间。

对于一个挂单,该函数返回0。

 
PapaYozh:

OrderOpenTime()返回订单打开的时间。

对于一个挂单,该函数返回0。

嗯,我迅速调整了代码,没有检查函数本身。没错,OrderOpenTime()显示的是经纪人开仓的时间,而不是经纪人接受挂单 的时间。也就是说,可能,最好是在订单中立即指定关闭的时间,或者在魔法号码中记录订单发送的时间(如果反正不用的话),然后将TimeCurrent( )与OrderMagicNumber( )进行比较。
 

下午好。帮助我处理自定义指标的问题。

我正在解决确定与趋势线的距离问题。我需要在绘制 趋势线的时间框架上 准确获得趋势线的距离(不管在终端中打开的时间框架是什么)。趋势线的当前值可以通过函数ObjectGetValueByShift 得到。由于只能通过开盘时间进行计算,我写了一个小指标。我被 iCustom 函数有时间框架参数的事实所吸引,但我想知道在调用指标 时,这个参数被考虑多少。

这里是指标。


#property indicator_chart_window
#property indicator_buffers 1
//--------------------------------------------------------------------   
extern string TL_name = "TL_1";
//--------------------------------------------------------------------   
double valueBuf[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
   //---- indicators
   SetIndexBuffer(0,valueBuf);
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1, White);
   //----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
   //----
   //----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int i;
   int    counted_bars = IndicatorCounted();
   //----
   i = Bars - counted_bars - 1;           // Индекс первого непосчитанного
   
   // Цикл по непосчитанным барам
   while(i>=0) {
      valueBuf[i] = NormalizeDouble(ObjectGetValueByShift(TL_name,i), Digits);
      i--;
   }     
   //----
   return(0);
}

该指标考虑的是趋势的当前值。
我调用指标本身。

TL_price_now = iCustom(NULL,PERIOD_D1,"TL_value",TL_name,0,0);

例如,这里PERIOD_D1 时间作为参数传递给指标,在此基础上绘制趋势图,并应计算其距离。

我简单地计算了与趋势的距离。

dist = NormalizeDouble(TL_price_now - Bid, Digits);
似乎是这样,但并非如此:当切换到其他时序(与D1不同)时,指标返回其他数值(对我切换到的时序来说是正确的)。
这里我们有一个问题:在调用iCustom 函数时,多大程度上会考虑到周期
或者是我把指标弄乱了?
 
pako:


t =OrdersTotal()。

为什么计算?????


所以我做的是通过引用来传递数值。这个逻辑很简单!
 
artmedia70:

在我的版本中,该功能更短...:)



是的,顺便说一句,这种实施方式更聪明。只有在开始时,才有更多的空间被附加功能所占据。结果是这样的。

void FindOrders(int& massive[])
{
   int oType;
   ArrayInitialize(massiveOfOrders, 0);
   for (int i=OrdersTotal() - 1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      
      oType = OrderType();
      massiveOfOrders[oType] = massiveOfOrders[oType] + 1;
   }
}

int start()
{
   int i, oTotal = 0, oPending = 0;
   
   FindOrders(massiveOfOrders);
   
   for (i=0; i<=7; i++)
   {
       if (i > 1 && i < 6)
       {
           oPending += massiveOfOrders[i];
       }
       if (i < 6)
       {
          oTotal += massiveOfOrders[i];
       }
   }
   pr ("FindOrders(): " + "oTotal = " + oTotal);
   pr ("FindOrders(): " + "oPending = " + oPending);

这不像是有什么需要优化的地方,不是吗?

我的意思是,这要方便得多,当开始的时候根本就没有什么。而一切都纯粹是由函数调用。而上次的结果是,开始时在主要功能上有很多各种各样的过度生长,以及额外功能的过度生长......。

 

日安!

请帮助并解释为什么专家顾问不能工作或交易?