[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 248

 
Bicus:

那是什么?它正在经历历史的所有顺序,不是吗?很明显,循环的主体可以在某种程度上受到日期等的限制。

我在问题中的意思是,有没有什么诀窍可以在测试者的历史中只存储最后几个关闭的订单,也就是在真实历史中的方式?

在真实的历史中,它也是这样运作的。帐户历史的所有订单都被搜索到。

历史没有得到纠正。它对这个账户是一样的,只能用新的事件来更新。

 
artmedia70:

似乎已经很无聊了...这是最基本的,华生。

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine")<0) ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+
谢谢你期待已久的答复!我不明白,这将如何帮助我解决问题?如何使线条 在Ask上方和下方同时画出,并从同一EA画出
 
globad:
谢谢你期待已久的答复我看不出这对解决我的问题有什么帮助?如何使线条在Ask上方和下方同时画出,并从同一EA画出?
给这些线条起不同的 名字。
 
Vovo4ka:

伙计们,帮助,条件如下:三根看涨的蜡烛,然后有一个 "接管"....,我开了一个卖出类似买入的头寸...这里是错误所在的代码?

错在哪里?
 
sergeev:
什么问题?

它不是这样工作的.......,不打开头寸....,虽然 我从历史上看到它应该打开,但它不打开头寸......它只是保持沉默,没有错误。
 
我如何使交易开仓不超过,例如每小时一次?
 
artmedia70:
给这些线条起不同的 名字。

不知为何......?

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}
//+------------------------------------------------------------------+
 
Vovo4ka:
伙计们,我怎样才能使交易的开放时间不超过,比如说,每小时一次?

例如,像这样。

//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+

像这样打电话。

if (SecondsAfterOpenLastPos(NULL, OP_SELL, Magic)>=(Period()*3)*60) {
   // --- код, если прошло три минуты и более с момента открытия ... 
   // ... последней позиции Sell  с магиком Magic  на текущем символе ---
   }
我希望你能把几分钟变成几小时......。:)
 
globad:

不知为何......?

不要问,用测试人员检查...:)
 
globad:

不知为何......?

if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0,0, Ask+20*Point);
                                     ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0,0, Ask-20*Point);
                                     ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point); 
如果该行尚未创建,ObjectFind 返回-1,也就是说,你还应该在第二个if中写上ObjectFind("MyPriceLine2")<0