double AccountBalance()
账户余额 ( B )
无仓时,净值与该值相等,开仓后,余额仍为开仓前的余额不变,而净值同不断变化中
示例:
//---------达赢额或亏额平仓--------+
//--篮初归位
if(OrdersTotal()==0){
篮初余额= AccountBalance();
最大时赢额= 0;
}
//--计算现浮赢额
现总浮赢= AccountEquity()- 篮初余额 ;
//--(查看用)
if(现总浮赢>最大时赢额)
最大时赢额= 现总浮赢;
if(现总浮赢<最大时亏额)
最大时亏额= 现总浮赢;
//--达赢或达亏, 全平
if(现总浮赢>=篮子欲赢额 || 现总浮赢<=篮子承亏额*(-1)){
全平子();
全平次数++;
}
double AccountMargin()
已用保证金 ( M )
(目前持有单所占的保证金)
示例:
Print("账户已经使用了'', AccountMargin(), ''保证金"');
double AccountEquity()
净值 ( E )
(即账户现金+-开仓单的现额)
如果未开仓,则与余额相等, 如果开仓,则包含了单子的浮动盈亏
示例1:
//-- 净值超过初始金一定比率则平仓
//-------初始化-----------+
int init()
{
期初净值=AccountEquity(); // 期初净值 写在初始化中目的只为进行一次运算,始终保持该值
return(0);
}
if(NormalizeDouble(((AccountEquity()-期初净值)/AccountEquity())*100, 0)>=净赢比率){ // 若现净值与原净值大于参数百分比
期初净值= AccountEquity(); // 将初始净值重新赋为 现在的净值
全消全平子();
return(0);
}
示例2:
extern bool 使用净值跟踪 = false;
extern double 净值风险 = 20;
double 最后净值;
....
//--浮赢达到峰值下方百分比时 止损平仓
if(使用净值跟踪==true){
if(总浮赢子()<0 && MathAbs(总浮赢子())>净值峰值子()*(净值风险率/100)){
全平子();
Print("达到净值峰时回落比率 全平");
}
}
...
//--------------总浮赢---------------+
double 总浮赢子()
{
double 总赢亏= 0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
break;
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=魔术号)
continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==魔术号)
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
总赢亏 += OrderProfit();
}
return(总赢亏);
}
//------------篮子净值最高时的值------------+
double 净值峰值子()
{
//--无成交单子时 归位
if(已成单总数子()==0)
净值峰值= AccountEquity();
//--找到篮子最大时净值
if(净值峰值<最后净值)
净值峰值= 最后净值;
else
净值峰值= AccountEquity();
//--保留上次值
最后净值= AccountEquity();
return(净值峰值);
}
//-------------------------------------+
double AccountFreeMargin()
可用资金 ( F )
(净值-已用 之后的剩余资金)
示例:
//--------确定足够开仓的手数子--------+
double 可开仓手数子(int 开仓方向, double 指定手数)
{
if(AccountFreeMarginCheck(Symbol(), 开仓方向, 指定手数)<=0.0)
return(-1); // 剩余资金不足开仓,则返回
if(GetLastError()==134) // 如果原因为资金没了,则返回-2
return(-2);
return(指定手数); // 否则返回原手数
}
double AccountFreeMarginCheck ( string 币, int 单类, double 手数)
检查账户可用的剩余资金
当前账户以现价在指定的位置开仓后还能剩下多少保证金。 如果保证金余额不足,将会生成错误134 (ERR_NOT_ENOUGH_MONEY)。
参数有:
symbol - 交易的货币对。
cmd - 交易类型,可能是 OP_BUY 或者 OP_SELL。
volume - 交易手数。
示例:
if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)<=0 || GetLastError()==134)
return;//可用资金不足以开仓则返回
double AccountFreeMarginMode()
开仓时的可用保证金计算方式。
计算方式的值为:
0一浮动盈利/亏损不参与计算
1一浮动盈利和亏损在开仓部头寸上参与保证金余额计算;
2一只有赢利参与计算,而不考虑当前开仓头寸的亏损;
3一只有亏损额参与计算,而不考虑当前开仓头寸的亏损。
示例:
if(AccountFreeMarginMode()==0)
Print("浮动盈利/亏损不能使用。");
double AccountCredit()
账户信用点数
示例:
Print("账户信用点数= ", AccountCredit());
string AccountCompany()
公司名
示例:
Print("账户所在公司名: ", AccountCompany());
string AccountCurrency()
存款币种
示例:
Print("帐户存入的币种为是", AccountCurrency());
int AccountLeverage()
杠杆比率
示例:
Print("账户号 #: ", AccountNumber(), "的杠杆是 1:", AccountLeverage());
// 查看本账户杠杆是1比多少
string AccountName()
账户名
示例:
Print("账户名称 ", AccountName());
int AccountNumber()
账户号码
示例:
Print("账户数字号 ", AccountNumber());
double AccountProfit()
账户盈利金额.
示例:
Print("现账户利润额", AccountProfit());
string AccountServer()
平台名称.
示例:
Print("服务器名称:", AccountServer());
int AccountStopoutLevel()
账户止损水平设置.
示例::
Print("账户止损水平设置 = ", AccountStopoutLevel());
int AccountStopoutMode()
账户止损水平的计算方式,
计算方式的值为:
0一计算保证金和净值之间的百分比;
1一比较剩余保证金标准和绝对值。
示例::
int level= AccountStopoutLevel();
if(AccountStopoutMode()==0)
Print("止损水平= ",level, "%");
else
Print("止损水平= ", level, " ", AccountCurrency());