[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 562

 
谢谢你!!!。
 
Ekburg:

你能告诉我这个代码可能有什么问题吗?这是一个跟踪止损,但当测试时,它给出了错误1,在修改。为什么不修改命令?

当我在纠正这个错误时(到目前为止没有成功),当把Expert Advisor的主代码编译到打印函数中时,它开始返回一个错误,说它需要倒置的逗号,但那里的一切都很正确,要纠正这个错误,我必须删除并放入一个新的倒置逗号...

bool trailingstop()
{
如果((OrderMagicNumber()==11111)==true)
{
Print("保持买入位置")。
while(OrderCloseTime()==0)
{
如果((Bid-OrderStopLoss())>(StopLevel*Point))
{
如果(OrderModify(OrderTicket(),OrderOpenPrice(),ND(Bid-StopLevel*Point),0,0) )
Print("Stop Loss of the order with number ",OrderTicket()," and the magic number ",OrderMagicNumber()," successfully changed to ",OrderStopLoss();
else Print("号码为",OrderTicket(), "和魔法号码为",OrderMagicNumber(), "的订单的止损水平。错误",GetLastError())。
}
}
如果(OrderCloseTime()>0)
{
Print("号码为",OrderTicket(), "和神奇数字",OrderMagicNumber(), "以价格",OrderClosePrice(), "盈利/亏损",OrderProfit()的订单关闭。)
return(true)。
}
}
否则
{
如果((OrderMagicNumber()==22222)==true)
{
Print((Sell position);
while(OrderCloseTime()==0)
{
如果((OrderStopLoss()-Ask)>(StopLevel*Point))
{
如果(OrderModify(OrderTicket(),OrderOpenPrice(),ND(Ask+StopLevel*Point),0,0) )
Print("Stop Loss of the order with number ",OrderTicket()," and the magic number ",OrderMagicNumber()," successfully changed to ",OrderStopLoss();
else Print("号码为",OrderTicket(), "和魔法号码为",OrderMagicNumber(), "的订单的止损水平。错误",GetLastError())。
}
}
如果(OrderCloseTime()>0)
{
Print("号码为",OrderTicket(), "和神奇数字",OrderMagicNumber(), "以价格",OrderClosePrice(), "盈利/亏损",OrderProfit()的订单关闭。)
return(true)。
}
}
否则返回(false)。
}
}


错误1不是错误。这意味着订单已经被修改。在OrderModify()之前插入检查修改参数(如果订单stoploop 不等于stoploop,(ND(Bid-StopLevel*Point)或 ND(Ask+StopLevel*Point)),则OrderModify(),否则返回)。
 
rigonich:

错误1不是错误,这意味着订单已经被修改。 在OrderModify()之前插入检查修改参数(如果订单的止损不等于止损,(ND(Bid-StopLevel*Point)或ND(Ask+StopLevel*Point)),则OrderModify(),否则返回)。


这个检查在上面:如果((Bid-OrderStopLoss())>(StopLevel*Point)),或者我把你搞错了

我在一个急剧的运动中进行了测试,即使从视觉上看,也可以清楚地看到订单的止损和表达方式是不平等的。

 
Usual_Trader:


一目了然,我看到的是在关闭订单的功能中,你需要通过票据选择订单OrderSelect(Ticket, SELECT_BY_TICKET),手数指示不是变量Lts,因为它每次都要重新计算,而是使用OrderLots() 还有一点,你一直在0条上工作,分别在一个条上的标准可能会消失,你的订单可能不会在你希望的地方打开。在指标参数中用1替换条形0,用2替换1



非常感谢你的回答),但这个标准并没有像我希望的那样发挥作用(不是所有的随机指标交叉都显示订单(),我想在0条上开立订单,但我想我需要一个额外的条件:在当前条上开立订单后,我必须在条关闭前不做任何事情,但我不知道如何做(可能是使用时间序列数组?
附加的文件:
 
Ekburg:


这个检查在上面:如果((Bid-OrderStopLoss())>(StopLevel*Point)),或者我误解了你

我在一个急剧的运动中检查了它,你可以清楚地看到订单的止损和表达方式是不相等的。


问题如下:由于你在这个函数中没有OrderSelect(),它必须在循环中的某个地方与搜索订单一起使用。如果这个循环组织了从0个订单到最后一个订单的搜索,那么在修改了第一个订单后,或者已经找到了任何订单,当OrderSelect() 在下一次被调用时,订单的顺序会发生变化,函数可能会选择一个已经被修改的订单。因此,我们应该检查订单StopLoss的 值是否等于我们发送至OrderModify()函数的值

if(ND(Bid-StopLevel*Point)==OrderStopLoss())return(true);
 

abeiks

一段时间以来, ,我一直试图 ,重做 买入 平仓 区块 ,只关闭最后两个 买入头寸,但是失败了 你能告诉 ,如何 ,重做 这个区块?

//+------------------------------------------------------------------+
//|                                                         0000.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
void Close_2buy()
   {
   bool     result;
   int      Count=2,Ticket=-1,error;
   datetime time=0;
   while(Count>0)
      {
      for (int f=OrdersTotal()-1; f>=0; f--) // 
         {
         OrderSelect(f, SELECT_BY_POS);
         if (OrderSymbol()==Symbol() &&(OrderMagicNumber()==magic ) 
         && (OrderType() == OP_BUY )) 
            {
            if(OrderOpenTime()>time)
               {
               time=OrderOpenTime();Ticket=OrderTicket();
            }
         }
      }
      if(OrderSelect(Ticket,SELECT_BY_TICKET)==True);
         {
         result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),0,CLR_NONE);
         if(result!=TRUE){error=GetLastError();Print("LastError = ", error);}
      }
      else{error=GetLastError();Print("LastError = ", error);} 
      Ticket=-1;time=0;Count--;
   }
   return;
} 
 
ametist444:

你好!

你能告诉我需要下载哪些文件,并在mt4中安装这些文件以获得这个窗口吗?

我不明白如何 在模拟中对被测工具的不同时间段进行 模拟。

我想只看到三个日线图,四小时图和小时图

我想看三个日线图、四小时图和小时图。 请帮助,我整晚都没能做到!我想看的是日线图。



在视觉模式下测试EA时,像(视觉)这样的窗口打开。


 
peshihod:

什么样的StopLoss?

我一定是措辞不当 :(

我们有一个开单的算法。

我需要它在另一个方向打开下一个订单(当条件出现时),如果上一个订单以任何方式被关闭。

所有的工作,但如果我已经通过止损 关闭,例如卖出,并有条件在这个方向上打开一个卖出,开口继续。我们需要的是等待条件购买。

也就是说,我们需要检查最后一个关闭的订单,所以它不会与开盘的订单重合(买-卖-买-卖的交替)。只有一个订单或等待信号在运行。

我知道我们也许应该使用OrdersHistoryTotal(),但在一个工作的EA中,它看起来如何?

谢谢你。

 
delf:

有一个开单的算法。

我们需要上一个订单的任何变体来开启下一个不同方向的订单(当条件出现时)。

换句话说,我们需要检查最后的平仓单,使其不与开仓单重合(买-卖-买-卖的交替)。只有一个订单或信号等待被打开。

这种交替在任何情况下都会发生,而且只有一种秩序始终在运作?

那么在条件中加入对订单数量 的控制就更容易了。

if(OrdersTotal()==0)
{
	if(OldOrder==OrderBuy)
		{
		...
		}
	else
		{
		...
		}
}
 
rigonich:


问题如下:由于你在这个函数中没有OrderSelect(),它似乎是在循环中的某个地方用搜索订单的方式使用。如果这个循环从零个订单到最后一个订单组织搜索,那么在修改第一个订单后,或者任何订单已经被埋在这个勾上,当OrderSelect() 下一次被调用时,订单的顺序会改变,函数可能会选择一个已经被修改的订单。因此,我们应该检查订单StopLoss的值是否等于我们发送至OrderModify()函数的值


不,当其中一个被关闭时,改变仓位订单号的问题已经解决了,我已经检查了不止一次,认为那里可能有一个错误,但那里一切正常,所需的订单被选中,并为其正确计算了止损,但订单不希望被修改...