[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 162

 
Vinin:


好吧,我带点逻辑来

无论条件如何,循环都会被执行 if(NewBar())


我不需要它依赖NewBAR()。 需要这个函数来避免成堆下单。 请告诉我为什么我的代码(最后的变体)效果更好。

可以,但当我对SELLSTOP做同样的操作时,交易就完全停止了?

 

亲爱的先生们,我是一个新手!

我已经开始写我的第一个EA......,但我无法完成它。

目前,我正在策略 测试器中进行测试。

这很简单。

在10小时蜡烛开盘时,我在距离这根10小时蜡烛的开盘价60点的地方下了挂单。

我用它取得了一些成功。

但我必须删除挂单,如果它在下单后一小时内没有发生变化。

变成一个市场订单。

以下是我的代码。

int start()
{
double Price=Ask+60*Point;
double SL=Price-30*Point;
double TP=Price + 15*Point;
if(OrdersTotal()==0 && Hour()==10 && Minute()==00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600)。

}

这段代码成功编译;测试器没有显示任何错误。

但是过期参数不起作用,即没有在1小时内转换为市场订单的挂单不会被删除。

我把数值3600改为3600000....,但什么也没有发生。

如果你能告诉我我的错误是什么,我将非常感激。

 
solnce600:
过期参数不起作用

最有可能的是,经纪人不支持它。可以肯定的是,你可以这样去做。

int i,ot = OrdersTotal();

for(i=ot-1;i>=0;i--)
{
   if(!OrderSelect()) continue;
   if(OrderMagicNumber()!=123) continue;
   
   if(OrderType()==OP_BUYSTOP && TimeCurrent()-OrderOpenTime()>3600)
   {
      OrderDelete(OrderTicket());
   }
}
 
solnce600:

亲爱的先生们,我是一个新手!

我已经开始写我的第一个EA......,但我无法完成它。

目前,我正在策略测试器中进行测试。

这很简单。

在10小时蜡烛开盘时,我在距离这根10小时蜡烛开盘价60个点的地方下挂单。

我用它取得了一些成功。

但我必须删除挂单,如果它在下单后一小时内没有发生变化。

变成一个市场订单。

以下是我的代码。

int start()
{
double Price=Ask+60*Point;
double SL=Pric-30*Point;
双重TP=价格+15*点。
如果(OrdersTotal()==0 && Hour()==10 && Minute()==00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600)。

}

这段代码成功地进行了编译和测试。

但是过期参数不起作用,即没有在1小时内转换为市场订单的挂单不会被删除。

我把数值3600改为3600000....,但什么也没有发生。

如果你能告诉我我的错误是什么,我将非常感激。

是什么阻止了你使条件在小时和分钟内删除相同的内容?直流电可能不符合你的到期条件。
 
borilunad:
又有什么能阻止你在同一时间、同一地点制定删除条件呢?DC可能不符合你的到期条件。


alsu

最有可能的是,经纪人不支持它。可以肯定的是,你可以做到这一点。



我有一个终端Alpari.在模拟账户上,我手动设置了钟摆,并把到期 时间 - 1小时。一切都很好。

我读到,如果经纪商不支持这个参数,会有一个错误....,但没有错误。

测试正在运行......但订单没有被删除。

 
borilunad:
又是什么原因使你不能以相同的时间和分钟为条件进行删除?直流电可能不符合你的到期条件。

那么按小时和分钟计算呢?

谢谢你。

 
solnce600:

按小时和按分钟计算如何?

谢谢你。



应该用什么来代替过期参数?

 
solnce600:

而到了一小时零一分钟,怎么会这样呢?

谢谢你。

它和你打开的时候一样,只是一个小时后的11点。 这就是你的东西!。我不是这样做的,但这并不改变问题的关键。
 
borilunad:
和你打开的时候一样,只是一个小时后的11点。我的做法不同,但这并不改变重点。

对不起,我很笨,但我不明白我是否需要在这个参数中改变什么。

如果是这样,如果你能根据需要在我的代码中插入过期参数,并将整行内容粘贴在你的答案文本中,我将非常感激。

谢谢你。

 
solnce600:

对不起,我很笨,但我不明白我是否需要在这个参数中改变什么。

如果是这样,如果你能根据需要在我的代码中插入过期参数,并将整行内容粘贴在你的回复文本中,我将非常感激。

谢谢你。



我可以建议以下变体。

如果(Hour()==11 && OrdersTotal()>0)

{

如果(OrderSelect(0,SELECT_BY_POS)==true)

{

如果(OrderType()==OP_BUYSTOP)

{

OrderDelete(OrderTicket())。

}

}

}

而且你不使用过期参数。缺点是,在交易时,电脑必须在连接互联网的情况下运行,并打开终端,以便平仓。