int t=( TimeCurrent()-( (Hour()*3600) +(Minute()*60)+Seconds() ) );
int t=( (Hour()*3600) +(Minute()*60)+Seconds() );
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0)
{
double p=0;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
瓦迪姆,我会按照你所描述的方式来做。这就是为什么我问你一个问题。我想,也许我还没有考虑到什么。我仍然在观察自己的逻辑和其他程序员的逻辑。因为除了基本的逻辑之外,我看到我需要考虑到一些因素。
RefreshRates()在专家线程中更新历史数据。 MarketInfo()从服务器获取数据。没有必要刷新它。这是一个不必要的刹车。
如果它必须被更新,简单地调用RefreshRates()将不会有任何结果。我们必须以某种方式控制和处理整个历史到来的事件。
你好,如何使用元编辑器?
嗯,你好!随心所欲地使用它!这里不是你问这种问题的地方......这是一个程序员的论坛...
RefreshRates()更新Expert Advisor线程中的历史数据。 MarketInfo()从服务器获取数据。它不需要被更新。这是不必要的制动。
如果它必须被更新,简单地调用RefreshRates()不能做任何事情。我们必须以某种方式控制和处理所有历史事件。
是的,我理解RefreshRates()刷新了市场数据(它们的历史到当前时间),然后市场环境变量使用最后收到的值。据我所知,这是唯一符合逻辑的变体。因此,这个函数写起来更容易、更快,也更符合逻辑和实际,更可靠,不是吗?
是的,我理解RefreshRates()更新市场数据(其历史到当前时间),然后市场环境变量使用最后收到的值。据我所知,这是唯一符合逻辑的变体。因此,这个函数会写得更容易、更快、更符合逻辑、更实用、更可靠,对吗?
我将这样做。
应该写一个单独的函数来更新历史。
2个小时试图写一篇测试文章,以进一步测试不同的条件。
不起作用!
请告诉我这个错误。
问题是,订单在自己的方向上2个百分点后打开。
打开卖和结束...
下午好!请原谅我的琐事。这些线条来自于一个机器人,我已经有了这个机器人很多年了,基本上这种循环无一例外地从一个机器人游走到另一个机器人。
为什么我的订单总额减去了1?循环是为了减少变量和,这是真的吗?
Kim的函数有一个时间参数="自1970年以来的日期和时间(秒)"
我尝试了2种变体。
而这两者给出的利润不是当天的,而是整个历史的全部利润....。
下午好!请原谅我的琐事。这些线条来自于一个机器人,我已经有了这个机器人很多年了,基本上这种循环无一例外地从一个机器人游走到另一个机器人。
为什么我的订单总额减去了1?循环是为了减少变量和,这是真的吗?
我愿意。
即使对这个窗口工具来说,通过MarketInfo() 接收数据也会在资源方面过于昂贵,你不觉得吗?
你应该写一个单独的函数来更新历史。
我不太理解写一个单独的函数的逻辑。RefreshRates() 函数本身更新预定义变量的 数据。而买入 和卖出 是预定义的变量。如果函数RefreshRates() 更新预定义的变量,为什么还要写一些额外的函数?