TimeDayOfWeek(TimeCurrent()) == 5 是星期五,早晨的时候等于4是星期四。这里的星期五和星期四是你的平台时间,不是北京时间。下午打开的时候已经是平台时间的星期五。
TimeDayOfWeek(TimeCurrent()) == 5 是星期五,早晨的时候等于4是星期四。这里的星期五和星期四是你的平台时间,不是北京时间。下午打开的时候已经是平台时间的星期五。
谢谢 dmgy
这个 TimeCurrent() > 86400 * (TimeCurrent() / 86400) + 86400 - 60 * Friday是什么意思,能解释下吗?
代码我能看懂什么意思就是不理解,
抱歉,这个地方我也没太看懂。
如果(TimeCurrent()/86400)的结果是整数,则86400*(TimeCurrent()/86400)是从初始时刻到周五0点时的总秒数。
如果上面的分析正确,则:
TimeCurrent() > 86400 * (TimeCurrent() / 86400) + 86400 - 60 * Friday
86400 = 24*60*60 是一天的总秒数。 Friday = 65 是分钟数。
从初始时间到当时的总秒数 > 从初始时间到周五0点的总秒数 + 一天的总秒数 - 65分钟的总秒数
大概意思是:如果当前时间大于周五结束前的65分钟。
上面的是我的猜测,不知道对不对,大概是这个思路,仅供参考。
抱歉,这个地方我也没太看懂。
如果(TimeCurrent()/86400)的结果是整数,则86400*(TimeCurrent()/86400)是从初始时刻到周五0点时的总秒数。
如果上面的分析正确,则:
TimeCurrent() > 86400 * (TimeCurrent() / 86400) + 86400 - 60 * Friday
86400 = 24*60*60 是一天的总秒数。 Friday = 65 是分钟数。
从初始时间到当时的总秒数 > 从初始时间到周五0点的总秒数 + 一天的总秒数 - 65分钟的总秒数
大概意思是:如果当前时间大于周五结束前的65分钟。
上面的是我的猜测,不知道对不对,大概是这个思路,仅供参考。
多谢!!!!!
extern int Friday = 65;
extern int Monday = 5;
int start() {
if (Friday > 0) {
if (TimeDayOfWeek(TimeCurrent()) == 5) { ///如果是周五
if (TimeCurrent() > 86400 * (TimeCurrent() / 86400) + 86400 - 60 * Friday) {
fOrderCloseMarket();
return (0);
}
}
}
if (Monday > 0) {
if (TimeDayOfWeek(TimeCurrent()) == 1) ///如果是周一
if (TimeCurrent() < 86400 * (TimeCurrent() / 86400) + 60 * Monday) return (0);
}
return (0);
}
int fOrderCloseMarket(bool ai_0 = TRUE, bool ai_4 = TRUE) {
int l_error_16;
int li_ret_8 = 0;
for (int l_pos_12 = OrdersTotal() - 1; l_pos_12 >= 0; l_pos_12--) {
if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
if (ai_0) {
if (OrderType() == OP_BUY) {
RefreshRates();
if (!IsTradeContextBusy()) {
if (!OrderClose(OrderTicket(), OrderLots(), ND(Bid), 3, CLR_NONE)) {
l_error_16 = GetLastError();
Print("Error close BUY " + OrderTicket() + " " + l_error_16);
li_ret_8 = -1;
}
} else {
if (TimeCurrent() > g_datetime_240 + 20) {
g_datetime_240 = TimeCurrent();
Print("Need close BUY " + OrderTicket() + ". Trade Context Busy");
}
return (-2);
}
}
}
if (ai_4) {
if (OrderType() == OP_SELL) {
RefreshRates();
if (!IsTradeContextBusy()) {
if (!OrderClose(OrderTicket(), OrderLots(), ND(Ask), 3, CLR_NONE)) {
l_error_16 = GetLastError();
Print("Error close SELL " + OrderTicket() + " " + l_error_16);
li_ret_8 = -1;
}
} else {
if (TimeCurrent() > g_datetime_244 + 20) {
g_datetime_244 = TimeCurrent();
Print("Need close SELL " + OrderTicket() + ". Trade Context Busy");
}
return (-2);
}
}
}
}
}
}
return (li_ret_8);
}
1、高手帮忙看看 start里面的是什么意思? 是不是限制时间交易了呢?
一天是 86400秒 TimeCurrent() 是自从 1970年1月1日期计算出来的秒。但是搞不懂什么意思。
2、TimeDayOfWeek(TimeCurrent()) == 5 早上运行的时候TimeDayOfWeek(TimeCurrent()) =4 不等于5。 但是下午4点打开时候运行就TimeDayOfWeek(TimeCurrent()) =5 就正确了。很困惑