int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
int StringFind( stringstring_value, // строка, в которой ищем stringmatch_substring, // что ищем intstart_pos=0// с какой позиции начинать поиск
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
int StringFind( stringstring_value, // строка, в которой ищем stringmatch_substring, // что ищем intstart_pos=0// с какой позиции начинать поиск
我们这样说吧。你展示通过订单的代码,并解释它应该如何做,只有这样我们才能说什么是对的,什么是错的。仅仅是函数的名称并不能帮助你更接近结果。
你好...谢谢你同意帮助我...这似乎是一个小任务,为了健全订单的关闭,可以简单地通过添加所需的事件到适当的文件夹中来完成--事实证明并不那么容易......。以下是我从MQL4参考交易函数 中提取的示例代码。
intOrdersHistoryTotal()。
//从交易历史中检索信息int i,accTotal=OrdersHistoryTotal()。
for(i=0;i<accTotal;i++)
{
//---- 检查选择结果
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("访问历史数据库错误(",GetLastError(),"))。
突破。
}
// 在一个订单上工作...
}
...该函数返回客户终端加载的当前账户历史中的关闭和删除的订单数量 。历史列表的大小取决于终端的 "账户历史 "标签的当前设置。
它将如何通过它们进行搜索,为什么需要这样做,我不清楚...也许,有必要记住它们,并抛弃它们,这样它们就不会碍事了?
我们应该在新关闭的订单关闭的那一刻发出简短的提示音。所有要在我的客户终端关闭的订单只有两种 类型:通过TrailStopLoss 和TakeProfit 平均。当关闭一个订单(一组订单)时,无论哪个方向(卖出 或买入),它们应该只用StopLoss或TakeProfit 来分隔,并发送至相应的PlaySound函数。
你好...谢谢你同意帮助我...这似乎是一个小任务,为了健全订单的关闭,可以简单地通过添加所需的事件到适当的文件夹中来完成--事实证明并不那么容易......。以下是我从MQL4参考交易函数 中提取的示例代码。
intOrdersHistoryTotal()。
//从交易历史中检索信息int i,accTotal=OrdersHistoryTotal()。
for(i=0;i<accTotal;i++)
{
//---- 检查选择结果
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("访问历史数据库错误(",GetLastError(),"))。
突破。
}
// 在一个订单上工作...
}
...该函数返回客户终端加载的当前账户历史中的关闭和删除的订单数量 。历史列表的大小取决于终端的 "账户历史 "标签的当前设置。
它将如何通过它们进行搜索,为什么需要这样做,我不清楚......也许,有必要记住它们,并抛弃它们,这样它们就不会碍事了?
我们应该在新关闭的订单关闭的那一刻发出简短的提示音。所有要在我的客户终端关闭的订单只有两种 类型:通过TrailStopLoss 和TakeProfit 平均。当关闭一个订单(一组订单)时,无论哪个方向(卖出 或买入),它们应该只由StopLoss或TakeProfit关闭命令分开,并发送至相应的PlaySound函数。
订单应该按照相反的顺序搜索,因为0是最开始的,accTotal-1是最后的。在这段代码中,在"//与订单一起工作 "之后记住注释,并检查是否有SL或TP的结束注释。
intOrdersHistoryTotal()。
//从交易历史中检索信息int i,accTotal=OrdersHistoryTotal()。
for(i=0;i<accTotal;i++)
{
//---- 检查选择结果
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("访问历史数据库错误(",GetLastError(),"))。
突破。
}
// 在一个订单上工作...
}
stringOrderComment()。
弦外之音。如果(OrderSelect(10,SELECT_BY_TICKET)==false)
{
Print("OrderSelect() has returned an error",GetLastError())。
return(0);
}
评论=OrderComment()。
// ...
谢谢你的答复...在加入OrderComment 函数的代码后,(MQL4交易函数参考),该函数返回使用OrdersHistoryTotal 函数选择的订单的评论,代码看起来像这样...但我们难道没有一个功能来跟踪终端历史中的新关闭订单吗?"0-最开始。accTotal-1- 最后"--我们指的是终端历史中的 "第一次关闭 "和 "最后一次关闭",是按时间来计算的吗...?我说对了吗?
但我们没有一个功能来跟踪终端历史中的新关闭订单吗?
没有标准的。
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
没有标准的。
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
谢谢你...你是指函数StringFind= 在一个字符串中搜索一个子串。
);
返回要搜索的子串开始的字符串中的位置号,如果没有找到子串,则返回-1。
...或StringCompare 函数 -比较两个字符串?
谢谢你...你是指函数StringFind= 在一个字符串中搜索一个子串。
);
返回要搜索的子串开始的字符串中的位置号,如果没有找到子串,则返回-1。
...
正确。
谢谢你...然后,代码将看起来像这样。
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
谢谢你...然后,代码将采取以下形式。
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
关于交易、自动交易系统和交易策略测试的论坛
初学者的问题
A1exPit, 2016.11.30 22:14
你能告诉我OrderSelect by SELECT_BY_POS哪个0订单是最后下的还是第一个?我正在尝试这两种方式,反之亦然,但错误的修改#0是飞出来的。