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

 
Dimka-novitsek:
当EA什么都不启动时,它只是为了检查新的订单是否会在每一个刻度上打开 。
OrderSelect( tiket,SELECT_BY_TICKET, MODE_TRADES );
if(OrderSymbol()==Symbol())
{
   if (OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 )
   {
      i=OrdersTotal() ;
      if (i<2)
      {
         tiket= OrderSend( Symbol(), OP_BUYSTOP, volume*A, price +otstup*Point, Point* 3, R1, PRICE_OPEN+takeprofit*Point+otstup, "OP_BUYSTOP", 1000, expiration, Red);
         Alert ("OP_BUYSTOP", GetLastError( ));
         tikett= OrderSend( Symbol(), OP_SELLSTOP, volume*A, price -otstup*Point, Point* 3,R2, PRICE_OPEN-takeprofit*Point-otstup, "OP_SELLSTOP", 2000, expiration,C'0,128,255' );
         Alert ("OP_SELLSTOP", GetLastError( ));
         i=OrdersTotal();
      }
   }
}

这是你的代码,我没有做任何修改

你写道:"如果你选择蒂克特订单和魔法符号的订单,并且订单总数 小于2,那么订单将被放置。

 
谢谢你!!!。我很抱歉,我肯定写的是胡说八道。
 
drknn:


没有代码,就很难说。很有可能,EA是为四位数编写的,但模拟账户是五位数。你要明白,如果我们设置,例如,10个点的止损,那么这对于5位数的EA来说,和4位数的1个点是一样的距离。如果我们将设置止损单的最小允许距离设定为,例如3点,那么在一个五位数的市场上,这将是30点,而不是3点。服务器会很好理解地拒绝在五位数上设置10点止损的订单的命令。

但原因可能是不同的。你看,你问过别人为什么他们的车不能启动。如果不打开引擎盖,听一听汽车对试图启动的反应,人们是无法告诉你原因的。

我试着用欧元兑美元运行一个策略测试器,并用几种货币来执行它,欧元兑美元、英镑兑美元、美元兑日元,但它没有工作。我在发送买入/卖出订单 时使用了Point,所以它应该对所有符号都有效。我最不明白的是,为什么测试器显示了结果,但EA却没有在模拟账户上开仓。在什么情况下会出现这种情况?

无论如何,感谢你的回答,我将在晚上公布代码。

 
Dimka-novitsek:


对不起,我在这里写了一些乱七八糟的东西,如果你能告诉我,我哪里完全是羊肠小道。 。

所有的人:)))))))))))))))))))

让我们从头开始。

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int      tiket, tikett;
int      i=0, R1=0, R2=0, A=1;
double   volume=0.1;
double   price=PRICE_OPEN;
// R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;

int start()
{
//----

   OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES);
   if(OrderSymbol()==Symbol()) {
      if (OrderMagicNumber()==1000 || OrderMagicNumber()==2000) {
         i=OrdersTotal();
         if (i<2) {
            tiket=OrderSend(Symbol(), OP_BUYSTOP, volume*A, price+otstup*Point, Point*3, R1, PRICE_OPEN+takeprofit*Point+otstup, "OP_BUYSTOP", 1000, expiration, Red);
            Alert ("OP_BUYSTOP", GetLastError( ));
            tikett=OrderSend(Symbol(), OP_SELLSTOP, volume*A, price-otstup*Point, Point* 3,R2, PRICE_OPEN-takeprofit*Point-otstup, "OP_SELLSTOP", 2000, expiration,C'0,128,255' );
            Alert ("OP_SELLSTOP", GetLastError( ));
            i=OrdersTotal();
            }
         }
      }

//----
return(0);
}
//+------------------------------------------------------------------+

最初,两个变量被初始化为零。

int      tiket, tikett;

那么第一行代码就是我们选择票务订单的地方。

OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES);

这里的变量票是零。也就是说,我们试图选择一个票价为零的订单。这样做,我们甚至没有阅读帮助,因为在按票据选择时,池子参数被忽略了,我们仍然指定MODE_TRADES。这不是一个错误--在这种情况下,它是一个额外的参数,被简单地忽略了。相应地,具有零票的订单没有被选中 - 它不存在...

然后所有的东西都放在嵌套条件中;第一个条件是。

if(OrderSymbol()==Symbol())

...如果所选订单的符号与当前图表的符号相符...而且,由于没有选择任何顺序,我们将安全地从start()到达出口,而不做任何事情。

我可以向你保证...再往前走,你有同样有趣的,但......。拨弄一下也没什么意思。

首先是搜索已经开立的头寸或已经设定的挂单

好运。

 
ilunga:

这是你的代码,我没有做任何修改

你已经写了,如果你选择了这个符号和这个魔法的tiket订单,并且总订单少于2个,就会下订单。


啊,不,这是正确的,当你开始一个少于两个的订单时,会有两个挂单,在下一个嘀嗒声中,有两个挂单,什么也没有发生。

我的脑子里一定有某种危机。

 
Dimka-novitsek:


啊,不,这是正确的,当你开始一个少于两个的订单时,两个挂单被放置,在下一个tick上有两个,什么也没有发生。

我的脑子里一定有某种危机。

我已经一步一步地告诉你,你在哪里有危机...
 
Sersad:

我在欧元兑美元上运行了一个策略测试器,试图在几种货币上运行执行,欧元兑美元、英镑兑美元、美元兑日元--它在任何地方都不起作用。我在发送买入/卖出订单时使用了Point,所以它应该对所有符号都有效。我最不明白的是,为什么测试器显示了结果,但EA却没有在模拟账户上开仓。在什么情况下会出现这种情况?

无论如何,感谢你的回答,我将在晚上公布代码。


关键是,点值 是不同的。

 
PapaYozh:


这就是问题所在:点值不同。

点值在不同的报价中有所不同,但其本质对于所有带有任何小数位数的报价都是一样的--它是最小的价格阶梯。

这就是为什么我用Ask-30*Point而不是Ask-0.003作为止损的事实来否定drknn的 评论。

"很有可能,EA写的是四位数,而模拟账户是五位数。你看,如果你设置了,比如说,10点的止损单,它在5位数的EA上的距离和4位数的EA上的1点是一样的。如果我们将设置止损单的最小允许距离设定为,例如3点,那么在一个五位数的市场上,这将是30点,而不是3点。很明显,服务器会直接拒绝设置止损为10点的订单的命令......"。

double Point - 当前工具在报价货币中的点的大小
 

一句话的建议。

我写了一个简单的脚本来输出最小止损/止盈水平的数值,单位是点。

int start()
{
int min=MarketInfo(Symbol(),MODE_STOPLEVEL);
Alert(min);
return(0);
}

输出为零。这是该参数的标准值吗?

 

fx_max:

我写了一个简单的脚本,输出最小允许的止损/止盈水平的数值,单位是点。


int min=MarketInfo(Symbol(),MODE_STOPLEVEL)。

它的输出为零。这是该参数的标准值吗?