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

 
void CheckForClose()
  {
   double PriceHigh, PriceLow;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
   
   PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0); 
   PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0); 
   
   
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Low[1]<=PriceHigh && Ask>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White);
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=PriceLow && High[1]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White);
         break;
        }
     }
//----
  }

Artmedia70

回到我的公羊,关于在价格穿越指标线时 平仓的问题。我认为错误出在这个函数上

如果(Volume[0]>1)返回。

我在教程中读到,我们可以在条形图出现时开仓(平仓),而不是计算点数。这有可能吗?如果是这样,你能给我一个提示,如何针对我的情况进行编程。

 
alexey1979621:

Artmedia70

回到我的公羊,关于在价格穿越指标线时平仓的问题。我认为错误出在这个函数上

如果(Volume[0]>1)返回。

我在教程中读到,我们可以在条形图出现时开仓(平仓),而不是计算点数。这有可能吗?如果是这样,你能不能给我们一个提示,告诉我们如何针对我的情况进行编程。

也许 将是有用的。

当M15上出现一个新条形图时,该函数返回true

bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
ex1m:

请指教!!!。

我在某个时间写下待定的订单

{

定义开放时间

}

if ((condition)==true)//
{
OrderSend ( OP_BUYSTOPP, parameters);//开出一个待定的BuyStop订单
OrderSend ( OP_SELLSTOP, parameters);//开出一个待定的SellStop订单
}

我想我写的时间是正确的;它检测到了,但由于某些原因,它只打开了卖出止损或买入止损,而没有同时打开这两个止损。我试着在同一时间一个一个地打开两个不同类型的挂单(Bistop和Sellstop)。这个问题似乎很原始,请傻瓜们帮忙)。

要在这里正确粘贴代码,先点击SRC,然后在那里复制代码。

如果我没有理解错的话,在某个时间点我需要打开一个 OP_BUYSTOP和一个 OP_SELLSTOP?此刻有任何其他挂单,是否可以接受?例如,有待处理的订单,但我们必须在打开新的订单之前删除旧的订单?

 
artmedia70:
这个错误指的是图形对象,而不是订单 。

正是如此!错误指的是对象,但我在这个EA中没有对象...


borilunad:
晚上好,维克多!奇怪的是,待定的订单不是一个对象!也许你有一些应该已经被删除的对象,但没有被删除!

下午好,鲍里斯!专家顾问不创建对象。这个错误来自放置挂单 的函数。下面是该函数的版本(供测试者使用)。

bool OpenPendingBuy(double lot, double price)
{
   int g_ticket = -1;
   double OOP = price + i_distanceFromLastPos * pt;

   if (OOP > Ask)
   {
       fCheck_ValidPendingOOP(Symbol(), OP_BUYSTOP, OOP);
       
       g_ticket = OrderSend(Symbol(), OP_BUYSTOP, lot, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   }
   if (g_ticket > 0)
   {
       return (true);
   }
   else
       pr ("OpenPendingBuy(): Ордер послать не удалось " + GetLastError());
   
   return (false);
}

如果没有下单,这意味着已经触发了一个区块。

else
       pr ("OpenPendingBuy(): Ордер послать не удалось " + GetLastError());

这是一个报告错误的块。


有谁理解了这个逻辑吗?

 
artmedia70:

既然没有答案,这里有一个函数,可以返回最后一个订单集的票。



谢谢你!!正是我所需要的。

 
hoz:
正是如此!该错误涉及对象,但我在这个EA中没有对象...

下午好,鲍里斯!专家顾问不创建对象。这个错误来自放置挂单的函数。下面是该函数的版本(供测试者使用)。

如果订单没有被下达,这意味着已经触发了阻断。

这是一个报告错误的块。

有谁理解了这个逻辑吗?

那么,检查你的错误检查?那里一定有什么故障!
 
borilunad:
那么,检查你的错误检查?那里一定有什么故障!

Heh))鲍里斯有什么可炫耀的?这一切都很透明...

pr 是一个打印功能。而这个错误,已经是一个标准的常数。从逻辑上讲,这样的做法是完全不能接受的。如果你对pr 功能仍有怀疑,那就在这里。

//+-------------------------------------------------------------------------------------+
//| Распринтовка на экран                                                               |
//+-------------------------------------------------------------------------------------+
void pr (string txt)
{
string info [];
ArrayResize(info,20);
string h,m,s,cm; int i;
h=DoubleToStr(Hour(),0);    if (StringLen(h)<2) h="0"+h;
m=DoubleToStr(Minute(),0);  if (StringLen(m)<2) m="0"+m;
s=DoubleToStr(Seconds(),0); if (StringLen(s)<2) s="0"+s;
txt=h+":"+m+":"+s+" - "+txt;
for(i=20-1; i>=1; i--)
info[i]=info[i-1];
info[0]=txt;
for(i=20-1; i>=0; i--)
if(info[i]!=""){
cm=info[i];
ObjectCreate ("txtw"+i,OBJ_LABEL,0,0,0);
ObjectSet    ("txtw"+i,OBJPROP_CORNER,1);
ObjectSet    ("txtw"+i,OBJPROP_XDISTANCE,10);
ObjectSet    ("txtw"+i,OBJPROP_YDISTANCE,30+15*i);
ObjectSetText("txtw"+i,cm, 10, "Times New Roman", Green);}}
 

  • 有谁明白这个逻辑吗?


该地段是否正常化?嗯,并检查价格。

i_magic, pt, i_distanceFromLastPos是全球性的吗?

 
splxgf:

i_magic, pt, i_distanceFromLastPos是全局的?


是的,带i_ 的变量是输入变量(来自intut这个词,可以由用户改变......),pt 也是一个全局变量,它在任何地方都是可见的...... 。
splxgf:


  • 有谁明白这个逻辑吗?


该地段是否正常化?嗯,并检查价格。


不,这批货还没有被规范化。在测试器中从未遇到过...而地段与对象有什么关系(错误4200)?
 
hoz:

当我设置挂单时,我偶尔,但不是经常,会出现4200的错误。根据文档,这个错误意味着该对象已经存在。

ERR_OBJECT_ALREADY_EXISTS 4200 Объект уже существует

事实证明,在发送挂单时,这种类型的订单已经在市场上了?

也许,一些其他程序创建了一个 具有相同名称的图形对象,EA对其作出了反应。也许你需要改变对象的名称。