double dLotFactor = MarketInfo(Asset,MODE_MINLOT); // correction for different lot scale
double dFactor = pointFactor(Asset); // correction for brokers with 5 digits
double pipPosition = MarketInfo(Asset,MODE_DIGITS) - 1;
string quotecur = StringSubstr(Asset,3);
double price = MarketInfo(Asset,MODE_ASK);
double pip = pow(10,-pipPosition);
double lotamount = MarketInfo(Asset,MODE_LOTSIZE) * dLotFactor;
double pipcost = lotamount * pip;
double leverage = AccountInfoInteger(ACCOUNT_LEVERAGE);
double margincost = (lotamount * price);
if(StringLen(Asset) == 6)
{
if(StringCompare(quotecur,"USD") != 0)
{
string symboconvert = "USD" + quotecur;
double price2;
bool is_custom=false;
if(SymbolExist(symboconvert,is_custom))
{
price2 = MarketInfo("USD" + quotecur,MODE_ASK);
is_custom = true;
}
else
if(SymbolExist(quotecur + "USD",is_custom))
{
price2 = MarketInfo(quotecur + "USD",MODE_ASK);
is_custom = true;
}
if(is_custom)
{
pipcost = pipcost / price2;
margincost = margincost / price2;
}
}
}
margincost = margincost / leverage;
double rollLong = MarketInfo(Asset,MODE_SWAPLONG) * pipcost ;
double rollShort = MarketInfo(Asset,MODE_SWAPSHORT)* pipcost ;
/////////
double LotFactor = MarketInfo(Asset,MODE_MINLOT); // correction for different lot scale
Factor = pointFactor(Asset); // correction for brokers with 5 digits
arr[3] = PIP = pip;
arr[4] = PIPCost = pipcost;
arr[5] = LotAmount = lotamount;
if(LotAmount == 0. && arr[0] > 0.)
Print("Asset ",Asset," Lot ",MarketInfo(Asset,MODE_LOTSIZE)," Min ",LotFactor);
arr[6] = margincost;
arr[7] = rollLong;
arr[8] = rollShort;
arr[9] = iVolume(Asset,PERIOD_M15,0)/15.;
ZorroRespond(cmd,arr);
break;