文章 "轻松快捷开发 MetaTrader 程序的函数库(第 二十四部分):基准交易类 - 无效参数自动纠正" - 页 2

 

你好,这两个子程序运行结果不一样,其中“统计时段买亏损”可以得到想结果,而“统计时段卖亏损”结果为0,这是为什么?

//统计时间段历史亏损单(已经平仓的单子)数,lasttime为起始时间

double 统计时段买亏损(int 魔号,string buyOrSell, string as_8,datetime lasttime)

{

double 成交量=0;

double 亏损额=0;

int 总单数=0;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

{

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==魔号 )//只统计当前对应货币对

if(buyOrSell == "buy")

{

if (OrderType() == OP_BUY ) 

{

if (OrderCloseTime()>lasttime)

{

if (OrderProfit()<0)

{

总单数=总单数+1;

亏损额=亏损额+OrderProfit();

成交量=成交量+OrderLots();

}

}

}

}


}

}}

if (as_8 == "总单数") return (总单数);

if (as_8 == "亏损额") return (亏损额);

if (as_8 == "成交量") return (成交量);


return (0.0);

}

double 统计时段卖亏损(int 魔号,string buyOrSell, string as_8,datetime lasttime)

{

double 成交量=0;

double 亏损额=0;

int 总单数=0;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

{

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==魔号 )//只统计当前对应货币对

if(buyOrSell == "sell")

{

if (OrderType() == OP_SELL ) 

{

if (OrderCloseTime()>lasttime)

{

if (OrderProfit()<0)

{

总单数=总单数+1;

亏损额=亏损额+OrderProfit();

成交量=成交量+OrderLots();

}

}

}

}

}

}}

if (as_8 == "总单数") return (总单数);

if (as_8 == "亏损额") return (亏损额);

if (as_8 == "成交量") return (成交量);


return (0.0);

}

 

你好,这两个子程序运行结果不一样,其中“统计时段买亏损”可以得到想结果,而“统计时段卖亏损”结果为0,这是为什么?

//统计时间段历史亏损单(已经平仓的单子)数,lasttime为起始时间

double 统计时段买亏损(int 魔号,string buyOrSell, string as_8,datetime lasttime)

{

double 成交量=0;

double 亏损额=0;

int 总单数=0;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

{

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==魔号 )//只统计当前对应货币对

if(buyOrSell == "buy")

{

if (OrderType() == OP_BUY ) 

{

if (OrderCloseTime()>lasttime)

{

if (OrderProfit()<0)

{

总单数=总单数+1;

亏损额=亏损额+OrderProfit();

成交量=成交量+OrderLots();

}

}

}

}


}

}}

if (as_8 == "总单数") return (总单数);

if (as_8 == "亏损额") return (亏损额);

if (as_8 == "成交量") return (成交量);


return (0.0);

}

double 统计时段卖亏损(int 魔号,string buyOrSell, string as_8,datetime lasttime)

{

double 成交量=0;

double 亏损额=0;

int 总单数=0;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

{

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==魔号 )//只统计当前对应货币对

if(buyOrSell == "sell")

{

if (OrderType() == OP_SELL ) 

{

if (OrderCloseTime()>lasttime)

{

if (OrderProfit()<0)

{

总单数=总单数+1;

亏损额=亏损额+OrderProfit();

成交量=成交量+OrderLots();

}

}

}

}

}

}}

if (as_8 == "总单数") return (总单数);

if (as_8 == "亏损额") return (亏损额);

if (as_8 == "成交量") return (成交量);


return (0.0);

}

 
Artyom Trishkin:
OK

你好,这两个子程序运行结果不一样,其中“统计时段买亏损”可以得到想结果,而“统计时段卖亏损”结果为0,这是为什么?

//统计时间段历史亏损单(已经平仓的单子)数,lasttime为起始时间

double 统计时段买亏损(int 魔号,string buyOrSell, string as_8,datetime lasttime)

{

double 成交量=0;

double 亏损额=0;

int 总单数=0;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

{

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==魔号 )//只统计当前对应货币对

if(buyOrSell == "buy")

{

if (OrderType() == OP_BUY ) 

{

if (OrderCloseTime()>lasttime)

{

if (OrderProfit()<0)

{

总单数=总单数+1;

亏损额=亏损额+OrderProfit();

成交量=成交量+OrderLots();

}

}

}

}


}

}}

if (as_8 == "总单数") return (总单数);

if (as_8 == "亏损额") return (亏损额);

if (as_8 == "成交量") return (成交量);


return (0.0);

}

double 统计时段卖亏损(int 魔号,string buyOrSell, string as_8,datetime lasttime)

{

double 成交量=0;

double 亏损额=0;

int 总单数=0;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

{

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==魔号 )//只统计当前对应货币对

if(buyOrSell == "sell")

{

if (OrderType() == OP_SELL ) 

{

if (OrderCloseTime()>lasttime)

{

if (OrderProfit()<0)

{

总单数=总单数+1;

亏损额=亏损额+OrderProfit();

成交量=成交量+OrderLots();

}

}

}

}

}

}}

if (as_8 == "总单数") return (总单数);

if (as_8 == "亏损额") return (亏损额);

if (as_8 == "成交量") return (成交量);


return (0.0);

}

 

This is a discussion thread for the article, and not for resolving issues not related to the library described in the article.

To insert the code into the message, you need to use the Alt + S combination or this button:


 
你好,是否本程序不支持对历史成交卖单的查询?
 
hsyhsy863 :
你好,是否本程序不支持对历史成交卖单的查询?

It supports. And even much more.

 
你好,我在使用过程中发现,当加载有自定义指标,然后删除自定义指标这时按键就失灵了,没办法操作。这是为什么?如何解决?
 
hsyhsy863 :
你好,我在使用过程中发现,当加载有自定义指标,然后删除自定义指标这时按键就失灵了,没办法操作。这是为什么?如何解决?

During use - what?

Which keys do not work?
 
我想发一个自定义指标给你,你把它加载后删掉,试试就明白。
附加的文件:
jh720-03-3.ex4  214 kb
 
hsyhsy863:
我想发一个自定义指标给你,你把它加载后删掉,试试就明白。
你好,我提的问题发现了吗?