Merge pull request #14 from AAVikings/master
Fixing rounding issues when moving the position.
This commit is contained in:
2 files changed
+19
-20
No files matched your search
+16
-7
@@ -711,10 +711,10 @@
|
||||
sumAssetA = sumAssetA + Number(exchangePosition.amountA);
|
||||
sumAssetB = sumAssetB + Number(exchangePosition.amountB);
|
||||
|
||||
sumAssetA = Number(sumAssetA.toFixed(5));
|
||||
sumAssetB = Number(sumAssetB.toFixed(5));
|
||||
sumAssetA = Number(sumAssetA.toFixed(6)); // Fixed to 6 positions to avoid rounding issues
|
||||
sumAssetB = Number(sumAssetB.toFixed(8));
|
||||
|
||||
if (position.amountA.toFixed(5) !== sumAssetA || position.amountB.toFixed(5) !== sumAssetB) {
|
||||
if (position.amountA.toFixed(6) !== sumAssetA || position.amountB !== sumAssetB ) {
|
||||
logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> position.amountA = " + position.amountA);
|
||||
logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumAssetA = " + sumAssetA);
|
||||
logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> position.amountB = " + position.amountB);
|
||||
@@ -1068,11 +1068,20 @@
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> pPosition = " + JSON.stringify(pPosition)); }
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> pNewRate = " + pNewRate); }
|
||||
|
||||
let newAmountB;
|
||||
if (pPosition.type === "buy") {
|
||||
newAmountB = (pPosition.amountA / pNewRate).toFixed(7); // If it was fixed to 8 positions there could be some rounding up and there will be not enough AssetA for buying
|
||||
} else {
|
||||
newAmountB = pPosition.amountB;
|
||||
}
|
||||
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> newAmount = " + newAmount); }
|
||||
|
||||
switch (bot.startMode) {
|
||||
|
||||
case "Live": {
|
||||
|
||||
exchangeAPI.movePosition(pPosition, pNewRate, onResponse);
|
||||
exchangeAPI.movePosition(pPosition, pNewRate, newAmountB, onResponse);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1086,7 +1095,7 @@
|
||||
|
||||
case "Competition": {
|
||||
|
||||
exchangeAPI.movePosition(pPosition, pNewRate, onResponse);
|
||||
exchangeAPI.movePosition(pPosition, pNewRate, newAmountB, onResponse);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1113,8 +1122,8 @@
|
||||
id: pPositionId,
|
||||
type: pPosition.type,
|
||||
rate: pNewRate,
|
||||
amountA: pPosition.amountB * pNewRate,
|
||||
amountB: pPosition.amountB,
|
||||
amountA: pPosition.amountA,
|
||||
amountB: newAmountB,
|
||||
date: (bot.processDatetime.valueOf()),
|
||||
status: "open",
|
||||
trades: []
|
||||
|
||||
+3
-13
@@ -250,25 +250,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
function movePosition(pPosition, pNewRate, callBackFunction) {
|
||||
function movePosition(pPosition, pNewRate, pNewAmountB, callBackFunction) {
|
||||
|
||||
try {
|
||||
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> Entering function."); }
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> pPosition = " + JSON.stringify(pPosition)); }
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> pNewRate = " + pNewRate); }
|
||||
|
||||
let newAmount;
|
||||
|
||||
if (pPosition.type === "buy") {
|
||||
newAmount = pPosition.amountA / pNewRate;
|
||||
} else {
|
||||
newAmount = pPosition.amountB;
|
||||
}
|
||||
|
||||
if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] movePosition -> newAmount = " + newAmount); }
|
||||
|
||||
poloniexApiClient.API.moveOrder(pPosition.id, pNewRate, newAmount, onExchangeCallReturned);
|
||||
|
||||
poloniexApiClient.API.moveOrder(pPosition.id, pNewRate, pNewAmountB, onExchangeCallReturned);
|
||||
|
||||
function onExchangeCallReturned(err, exchangeResponse) {
|
||||
|
||||
|
||||
Reference in new issue
Block a user