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

 
hoz:

我将重复我昨天提出的问题。我不想把它贴在一个单独的主题里。如果有什么不清楚的地方,我将回答所有问题。

我仍然很难关闭所需的位置。情况是这样的。

1.正在跟踪关闭职位的情况。

2.一旦最后一个头寸在取款线处关闭......所有未结头寸和待结头寸都应立即关闭。所有的东西都是按批次分类封闭的,也就是说,大批次的东西一次过,然后是小的。这只是为了获得订单方面的经验。

实施情况如下。

start() 中的每一个刻度上。

我们对关闭市场订单感兴趣,因为待定的订单已按要求删除。下面是我们的情况。

由于某些原因,一些订单没有被关闭。我看到一些片段就打印出来,我什么都不懂。下面是一个例子。

在评论中,你可以看到lastOOTHist = 01:30:00,尽管这实际上并不正确。如果我们在结果窗口检查lastOOTHist,我们会看到

他们的关门时间是不同的...

这里有什么问题吗?

你把这一切都搞混了...

就在这里。

for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES)) // выделенное красным лишнее, тут pool не имеет значения
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }

在循环之前取消打印数组中所有单元格的值--也许那里有一只狗?

 
Forexman77:
你能告诉我如何在交易开始时找出点差的大小,或者更好的是,如何让它显示在日志中?

在开盘后立即进行交易。

ticket=OrderSend(......);
if(ticket>=0)Print("ticket #",ticket," Spread=",doubleToStr(Ask-Bid,Digits)); 
你的传播在日志中。
 
Sepulca:

交易开始后,立即进行。

你的传播在日志中。



非常感谢您!做了一个EA,在测试器上能赚钱,在演示器上则更糟。它在现实中的表现可能会更差。我没有看到我看了多少次的视觉效果。

当我在视觉上观察点差时,我没有看到超过三个点。我的想法是,在最强的动作中,它根本没有显示,或者它扩大了,所以我没有足够的时间注意到它。

Alpari的点差很低,但我猜测在强势移动时点差会明显增加。在DucasCopi,点差甚至更小,但大的佣金,如果账户是几百万美元,他们会变得更小。

你是否对点差大小 做过研究,每分钟变动超过50点?随着这些变动,平均价差增加到什么数值?

我问Alpari,他们没有说。

 
FAQ:


当你把一个变量(数组)按值传入一个函数时,一个局部变量在函数中被创建,你在标题中声明它:myFunct(int my_var)。这样一来,这个变量的变化就不能在函数之外看到。而在数组的情况下,编译器会提醒你这一点。

如果你想让变量值的变化在外部可见(在函数之外),可以通过引用传递变量:myFunct(int& my_var)


但是,是的。毕竟,数组是全局 声明的。 但函数内部的变化是局部的。这就是为什么有作为微观结构的功能。为了在当地实施微型问题。
 

祝大家好运!请告诉我如何使OrderOpenPrice()返回带有五位小数的价格。如果终端返回4位数,如果是5位数,还是返回4,四舍五入。

 
ivan180976:

祝大家好运!请告诉我如何使OrderOpenPrice()返回带有五位小数的价格。如果终端返回4位数,如果是5位数,还是返回4,四舍五入。


DoubleToStr(number, precision)
 

Forexman77:
Forexman77:



非常感谢您!做了一个EA,它在测试器上赚钱,在演示器上更糟糕。它在现实中的表现可能会更差。我已经看了三次视觉效果了。

当我在视觉上观察点差时,我没有看到超过三个点。我的想法是,在最强的动作中,它根本没有显示,或者它扩大了,所以我没有足够的时间注意到它。

Alpari的点差很低,但我猜测在强势移动时点差会明显增加。在DukasCopi,点差甚至更低,但大额佣金,如果账户是几百万美元,他们会变得更小。

你是否对点差大小做过研究,每分钟变动超过50点?随着这些变动,平均价差增加到什么数值?

我问Alpari,他们没有说。


我在分析周五的价差,顺便说一下,就在Alpari上。

黄色的细条代表每条的最大差价(我用的是一分钟)。红色粗体字--每条的最小差价。正如你所看到的,白天的点差从5到14点不等,为五位数。但在21:00服务器时间点差不会低于10点,在一天结束时一般会上升到52点。我在价格急剧变化前抓住了一个有趣的时机,价差急剧上升。

 
artmedia70:

这是一个有点堆积的问题...

就在那里。

for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES)) // выделенное красным лишнее, тут pool не имеет значения
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }

这只是为了便于感知。当我在写作时,但除此之外,是的,你不必如此。但它也不会干扰我。

它根本就不会打印任何数组值。

artmedia70:

在循环之前取消打印一个数组的所有单元格的值--也许小狗在那里挖东西?



//+-------------------------------------------------------------------------------------+
//| Закрытие ордеров, отсортированных по размеру лотов                                  |
//+-------------------------------------------------------------------------------------+
void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   if (p > 0)
   {
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<=p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
          i++;
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}

输出根本是空的...

 
hoz:

它根本就没有输出任何数组值。


它根本没有输出任何东西...

有多空?它是否完全没有打印,或者在阵列单元中仍然有零?
 

为什么你在循环的主体中增加i?

 for(i=0; i<=p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
          i++;    // ??????????????????????????????????????
      }

和这个:i<=p,为什么 "或等于"?