Написал 2 программы Lot2Money и Money2Lot
Однако есть проблема, что иногда код неправильно считает.
т.е. Money2Lot выдаёт иногда 0, потому что Мосбиржа ставит большой LOTSIZE, но обычно правильно.
Наверно я что-то упустил в алгоритме. Подскажите где я ошибся.
Здесь я поставил заплатку, что не есть хорошо.
Однако есть проблема, что иногда код неправильно считает.
т.е. Money2Lot выдаёт иногда 0, потому что Мосбиржа ставит большой LOTSIZE, но обычно правильно.
Наверно я что-то упустил в алгоритме. Подскажите где я ошибся.
Код |
---|
function Lot2Money(zCLASSCODE,zSECCODE,Lot) local Price=tonumber(Get_gLast_Price_gr(zCLASSCODE,zSECCODE)) if Price==nil or Price==0 then return nil end local LOTSIZE=getParamEx(zCLASSCODE,zSECCODE,"LOTSIZE").param_value if LOTSIZE==nil then return nil end message('Lot2Money' ..'\n'..'zCLASSCODE= '..tostring(zCLASSCODE) ..'\n'..'zSECCODE= '..tostring(zSECCODE) ..'\n'..'Lot= '..tostring(Lot) ..'\n'..'Price= '..tostring(Price) ..'\n'..'LOTSIZE= '..tostring(LOTSIZE) ..'\n'..'Lot*Price*LOTSIZE= '..tostring(Lot*Price*LOTSIZE) ) return Lot*Price*LOTSIZE end |
Код |
---|
function Money2Lot(zCLASSCODE, zSECCODE, Money) if Money==nil then return 0 end local Price=tonumber(Get_gLast_Price_gr(zCLASSCODE,zSECCODE)) if Price==nil or Price==0 then return nil end local LOTSIZE=getParamEx(zCLASSCODE,zSECCODE,"LOTSIZE").param_value if LOTSIZE==nil then return nil end message('Money2Lot' ..'\n'..'zCLASSCODE= '..tostring(zCLASSCODE) ..'\n'..'zSECCODE= '..tostring(zSECCODE) ..'\n'..'Money= '..tostring(Money) ..'\n'..'Price= '..tostring(Price) ..'\n'..'LOTSIZE= '..tostring(LOTSIZE) ..'\n'..'Money/(Price * LOTSIZE= '..tostring(Money/(Price * LOTSIZE)) ) local RetLot=math.floor(Money/(Price * LOTSIZE)) if RetLot==0 then -- ЗАПЛАТКА: если брокер поставил избыточный LOTSIZE RetLot=math.floor(Money/Price) end return RetLot end |