void 计算均价( double & BUYavg,double & SELLavg)
{
double BMV = 0.0;
double Blots = 0.0;
double SMV = 0.0;
double Slots = 0.0;
int i;
int CMD;
double lots;
double Bopen;
double Bday;
double 临_do_3;
double Sopen;
double Sday;
double 临_do_6;
double 多过夜 = SymbolInfoDouble(NULL,38) ;//疑似SYMBOL_SWAP_LONG
double 空过夜 = SymbolInfoDouble(NULL,39) ;//疑似SYMBOL_SWAP_SHORT
for (i=OrdersTotal() - 1 ; i >= 0 ; i --)
{
if ( !(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) || OrderMagicNumber() != MagicNumber
|| OrderSymbol() != Symbol() ) continue;
CMD = OrderType() ;
lots = OrderLots() ;
if ( CMD == 0 )
{
if ( SymbolInfoInteger(NULL,37) >= 3 )//疑似SYMBOL_SWAP_ROLLOVER3DAYS?
{
Bopen = OrderOpenPrice();
}
else //
{
Bday = 0.0;
//这是肯定的呀?
if ( TimeCurrent() - OrderOpenTime()>0.0 )
{
临_do_3 = ((TimeCurrent() - OrderOpenTime()) / 5.0) * 7.0;// 5和7含义不清楚
Bday = 临_do_3 / 86400.0;//60sec*60min*24=86400
}
else//
{
Bday = 0.0;
}
Bopen = OrderOpenPrice() - Bday * 多过夜 * Point;// swap费用
}
BMV += Bopen * lots ; //量积
Blots += lots ;//手数之和
}
//-------------------------------------------------
if ( CMD != 1 ) continue;
if ( SymbolInfoInteger(NULL,37) >= 3 )//疑似SYMBOL_SWAP_ROLLOVER3DAYS?
{
Sopen = OrderOpenPrice();
}
else
{
Sday = 0.0;
if ( TimeCurrent() - OrderOpenTime()>0.0 )
{
临_do_6 = ((TimeCurrent() - OrderOpenTime()) / 5.0) * 7.0;
Sday = 临_do_6 / 86400.0;
}
else
{
Sday = 0.0;
}
Sopen = Sday * 空过夜 * Point + OrderOpenPrice();
}
SMV += Sopen * lots;
Slots += lots ;
}
if ( Blots>0.0 )BUYavg = BMV / Blots ;
if ( Slots>0.0 )SELLavg = SMV / Slots ;
}
发表评论