帮我在酒吧的末端关闭秩序! - 页 2

 

嗯,这样就好了?

/////////////////OrderSelect() and other stuff

if( OrderType() == OP_BUY ){
    
if( /* blablabla condition && */ Time[0]>OrderOpenTime()  ){

OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,TAKEPROFITPIPS,CLR_NONE);             
RefreshRates();    

}}

事实上,我把时间[1]改成了时间[0],因为时间[1]又跳过了一个小节,所以时间[0]实际上代表了开盘[0]。如果有人知道比这更好/更流畅的方法,请告诉我吧

 
Proximus:

嗯,这样就好了?

事实上,我把时间[1]改成了时间[0],因为时间[1]又跳过了一个小节,所以时间[0]实际上是代表开盘[0]。如果有人知道比这更好/更流畅的方法,请告诉我

RefreshRates();
OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,Slippage,CLR_NONE);

检查 订单关闭是否成功

 
deVries:

并检查是否关闭订单成功

如果没有成功,那么当start()函数 重复时,它将再次测试orderclose()之前的if(),由于条件仍然是真实的,它将尝试再次关闭它。我不能在start()的同一个循环中尝试关闭它2次,必须等待另一个 tick,不是吗?
 
Proximus:
如果没有成功,那么当start()函数重复时,它将再次测试orderclose()之前的if(),由于条件仍然为真,它将尝试再次关闭它。我不能在start()的同一个循环中尝试关闭它2次,必须等待另一个tick,不是吗?
你难道不想知道它失败了吗?如果它失败了,为什么它失败了?
 
Proximus:

嗯,这样就好了?

事实上,我把时间[1]改成了时间[0],因为时间[1]又跳过了一个小节,所以时间[0]实际上代表了开盘[0]。如果有人知道比这更好/更流畅的方法,请告诉我吧

不,这将总是关闭,无论刻度线是否是下一个条形的刻度线,对于开仓后的任何条形,以及该条形中的任何时间,时间[0]总是大于OrderOpenTime()。

如果你想在接近收盘时平仓,那么你必须确定当前的跳动点是否是新条形的第一个跳动点 ... ...那么你还必须确保你的平仓是有效的,因为你只有一次机会,每条形。
 
Proximus:
如果没有成功,那么当start()函数重复时,它将再次测试orderclose()之前的if(),由于条件仍然为真,它将再次尝试关闭它。我不能在start()的同一个循环中尝试关闭它2次,必须等待另一个tick,不是吗?


你开始的时候,它必须关闭最后一格的交易。

我们试图让你明白,不可能知道最后一个勾股何时到来。

现在,如果收盘失败也没关系,我们在接下来的时间里再试一次,再试一次,再试一次。

你还错过了我建议的其他变化吗?

在订单关闭后刷新时间有什么意义呢?

你知道为什么是滑点而不是TAKEPROFITPIPS 吗?

这取决于错误返回,你可以尝试在同一个循环中关闭它2次

如果tradecontext太忙,而且你在循环中还有更多的交易要关闭,那么他们很有可能也会失败。

 
RaptorUK:
不,这将总是关闭,无论该点位是否是下一个条形的点位,对于开仓后的任何条形和该条形中的任何时间,时间[0]总是大于OrderOpenTime()。

如果你想在接近收盘时平仓,那么你必须确定当前的跳动点是否是新条形的第一个跳动点 ... ...那么你还必须确保你的平仓是有效的,因为你只有一次机会,每条形。

start()不是在每个tick之后重复自己吗?我错了吗?

总之,可以这样想象。

OrderOpenTime() = 12:12:01 (12 H 12 MIN 1 SEC)

订单被打开,OrderClose()函数包在主代码中OrderSend()函数包之后,因此,在打开订单后,我的OrderClose()包将测试是否满足关闭订单的条件,让我们说它满足,现在是关闭订单的时候。

时间[0]是这个条形图的开盘价,所以根据通常的逻辑,它必须小于订单打开的时间,因为订单不能在同一个条形图打开之前打开。

因此,通过各种手段:

if(Time[0]>OrderOpenTime())

将返回真值,所以订单关闭将被触发。如果它不能关闭它,由于任何原因,如滑移或如此,没有问题,start()重复自己

在下一次重复时,时间[0]将100%大于订单的开仓时间,因为它是合乎逻辑的,所以如果第一次平仓失败,其他的OrderClose()将在之后的每一次重复start()时发生,由于我认为start()在每一个tick 上重复,那么我不认为有更好的方法来快速关闭订单,我希望我解释清楚:)

 
deVries:


你开始的时候,它必须要关闭最后一格的交易。

我们试图让你明白,不可能知道最后一个勾股何时到来。

现在,如果收盘失败也没关系,我们在接下来的时间里再试一次,再试一次。

你还错过了我建议的其他变化吗?

在订单关闭后刷新时间有什么意义呢?

你知道为什么是滑点而不是TAKEPROFITPIPS 吗?

这取决于错误返回,你可以尝试在同一个循环中关闭它2次

如果tradecontext太忙,而且你在循环中还有更多的交易要关闭,那么他们很有可能也会失败。

我使用TAKEPROFITPIPS是因为这是我的TAKEPROFIT变量,因为我允许最大滑点与我的TP水平一样多,因为它的逻辑是,如果你用OrderClose()关闭订单,你的滑点不应该多于你的TP,因为如果你这样做,TAKEPROFIT将代替你关闭它,比OrderClose()更有效。
 
Proximus:

start()不是在每个tick之后重复自己吗?我说错了吗?

是的,start()在每个tick上都被调用,除非它还在执行 . . .

希望 我解释清楚了。

总之,想象一下这样的情况。

OrderOpenTime() = 12:12:01 (12 H 12 MIN 1 SEC)

订单被打开,OrderClose()函数包在主代码的OrderSend()之后,因此,在打开订单后,我的OrderClose()包将测试是否满足关闭订单的条件,让我们说现在是关闭订单的时候。

时间[0]是这个条形图的开盘价,所以根据通常的逻辑,它必须小于订单打开的时间,因为订单不能在同一条形图打开之前打开。

所以通过各种手段:

如果它不能关闭它,由于任何原因,如滑点或其他原因,没有问题,start()会重复进行。

在下一次重复时,时间[0]将100%大于订单的开仓时间,因为它是合乎逻辑的,所以如果第一次平仓失败,其他的OrderClose()将在之后的每一次重复start()时发生,由于我认为start()在每一个tick上重复,那么我不认为有更好的方法来快速关闭订单,我希望我解释得清楚:)

是的,但这不是你在本主题的第一篇帖子中所要求的......现在你说的是可以将平仓延迟到周期,然后再延迟到周期,等等。如果你想在接近条形结束时平仓,那么你必须在下一个条形的第一个点进行平仓,而且你必须检查 平仓是否失败,并以正确的方式重试,这样你才能成功平仓。
 

一个条形图的收盘价 不重复出现在下一个条形图上是很罕见的,不一定是它的开盘价......。