This commit is contained in:
Luis Fernando Molina committed 2020-10-26 13:22:36 +01:00
1 parent 6a0bc7b6c2
commit 209eb6d2cb
2 files changed
+77 -19

No files matched your search

@@ -78,7 +78,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) {
tradingSystem.warnings.push(
[
sessionParameters.slippage.id,
'Slippage (' + slippageAmount + ') substracted from Order Rate (' + tradingEngineOrder.rate.value + ') to get the Actual Rate (' +tradingEngineOrder.orderStatistics.actualRate.value + ')'
'sessionParameters.slippage.config.positionRate Slippage Amount (' + slippageAmount + ') substracted from Order Rate (' + tradingEngineOrder.rate.value + ') to get the Actual Rate (' +tradingEngineOrder.orderStatistics.actualRate.value + ')'
]
)
break
@@ -90,7 +90,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) {
tradingSystem.warnings.push(
[
sessionParameters.slippage.id,
'Slippage (' + slippageAmount + ') added to Order Rate (' + tradingEngineOrder.rate.value + ') to get the Actual Rate (' +tradingEngineOrder.orderStatistics.actualRate.value + ')'
'sessionParameters.slippage.config.positionRate Slippage Amount (' + slippageAmount + ') added to Order Rate (' + tradingEngineOrder.rate.value + ') to get the Actual Rate (' +tradingEngineOrder.orderStatistics.actualRate.value + ')'
]
)
break
+75 -17
View File
@@ -159,7 +159,12 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
need to cancel it, since we could end up with inconsisten information at the accounting level.
*/
if (tradingSystemOrder.cancelOrderEvent !== undefined) {
tradingSystem.warnings.push([tradingSystemOrder.cancelOrderEvent.id, 'Skipping Cancel Event Checking because cheking the order at the exchange failed.'])
tradingSystem.warnings.push(
[
tradingSystemOrder.cancelOrderEvent.id,
'Skipping Cancel Event Checking because cheking the order at the exchange failed.'
]
)
}
return
}
@@ -255,14 +260,36 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Check Size: We are not going to create Orders which size is equal or less to zero. */
if (tradingEngineOrder.orderBaseAsset.size.value <= 0 || tradingEngineOrder.orderQuotedAsset.size.value <= 0) {
tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not open this order because its size would be zero.'])
tradingSystem.warnings.push(
[
tradingEngineOrder.orderBaseAsset.size.id,
'Could not open this order because its size would be zero.'
]
)
tradingSystem.warnings.push(
[
tradingEngineOrder.orderQuotedAsset.size.id,
'Could not open this order because its size would be zero.'
]
)
return
}
/* Place Order at the Exchange, if needed. */
let result = await createOrderAtExchange(tradingSystemOrder, tradingEngineOrder)
if (result !== true) {
tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not open this order because something failed placing the order at the Exchange.'])
tradingSystem.warnings.push(
[
tradingSystemOrder.id,
'Could not open this order because something failed placing the order at the Exchange.'
]
)
tradingSystem.warnings.push(
[
tradingEngineOrder.id,
'Could not open this order because something failed placing the order at the Exchange.'
]
)
return
}
@@ -323,22 +350,22 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
function requiredConfigurationValidation() {
/* Validate that this config exists */
if (executionAlgorithm.config.percentageOfStageTargetSize === undefined) {
badDefinitionUnhandledException(undefined, 'executionAlgorithm.config.percentageOfStageTargetSize === undefined', executionAlgorithm)
if (executionAlgorithm.config.percentageOfStageTargetSize === undefined) {
badDefinitionUnhandledException(undefined, 'executionAlgorithm.config.percentageOfStageTargetSize === undefined', executionAlgorithm)
}
if (isNaN(executionAlgorithm.config.percentageOfStageTargetSize) === true) {
badDefinitionUnhandledException(undefined, 'isNaN(executionAlgorithm.config.percentageOfStageTargetSize) === true', executionAlgorithm)
if (isNaN(executionAlgorithm.config.percentageOfStageTargetSize) === true) {
badDefinitionUnhandledException(undefined, 'isNaN(executionAlgorithm.config.percentageOfStageTargetSize) === true', executionAlgorithm)
}
algorithmSizeInBaseAsset = tradingEngineStage.stageBaseAsset.targetSize.value * executionAlgorithm.config.percentageOfStageTargetSize / 100
algorithmSizeInQuotedAsset = tradingEngineStage.stageQuotedAsset.targetSize.value * executionAlgorithm.config.percentageOfStageTargetSize / 100
/* Validate that this config exists */
if (tradingSystemOrder.config.percentageOfAlgorithmSize === undefined) {
badDefinitionUnhandledException(undefined, 'tradingSystemOrder.config.percentageOfAlgorithmSize === undefined', tradingSystemOrder)
if (tradingSystemOrder.config.percentageOfAlgorithmSize === undefined) {
badDefinitionUnhandledException(undefined, 'tradingSystemOrder.config.percentageOfAlgorithmSize === undefined', tradingSystemOrder)
}
if (isNaN(tradingSystemOrder.config.percentageOfAlgorithmSize) === true) {
badDefinitionUnhandledException(undefined, 'isNaN(tradingSystemOrder.config.percentageOfAlgorithmSize) === true', tradingSystemOrder)
if (isNaN(tradingSystemOrder.config.percentageOfAlgorithmSize) === true) {
badDefinitionUnhandledException(undefined, 'isNaN(tradingSystemOrder.config.percentageOfAlgorithmSize) === true', tradingSystemOrder)
}
}
@@ -357,11 +384,17 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
tradingEngineOrder.orderBaseAsset.size.value + tradingEngineStage.stageBaseAsset.sizePlaced.value >
tradingEngineStage.stageBaseAsset.targetSize.value
) {
let previousValue = tradingEngineOrder.orderBaseAsset.size.value
tradingEngineOrder.orderBaseAsset.size.value =
tradingEngineStage.stageBaseAsset.targetSize.value -
tradingEngineStage.stageBaseAsset.sizePlaced.value
tradingSystem.warnings.push([tradingSystemOrder.id, 'Order size shrinked so that the Size Placed does not exceed the Target Size for the stage.'])
tradingSystem.warnings.push(
[
tradingEngineOrder.orderBaseAsset.size.id,
'Order size (' + previousValue + ') shrinked (' + tradingEngineOrder.orderBaseAsset.size.value + ') so that the Size Placed (' + tradingEngineStage.stageBaseAsset.sizePlaced.value + ') does not exceed the Target Size (' + tradingEngineStage.stageBaseAsset.targetSize.value + ') for the stage.'
]
)
}
/* Size in Quoted Asset */
@@ -377,11 +410,17 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
tradingEngineOrder.orderQuotedAsset.size.value + tradingEngineStage.stageQuotedAsset.sizePlaced.value >
tradingEngineStage.stageQuotedAsset.targetSize.value
) {
let previousValue = tradingEngineOrder.orderQuotedAsset.size.value
tradingEngineOrder.orderQuotedAsset.size.value =
tradingEngineStage.stageQuotedAsset.targetSize.value -
tradingEngineStage.stageQuotedAsset.sizePlaced.value
tradingSystem.warnings.push([tradingSystemOrder.id, 'Order size shrinked so that the Size Placed does not exceed the Target Size for the stage.'])
tradingSystem.warnings.push(
[
tradingEngineOrder.orderQuotedAsset.size.id,
'Order size (' + previousValue + ') shrinked (' + tradingEngineOrder.orderQuotedAsset.size.value + ') so that the Size Placed (' + tradingEngineStage.stageQuotedAsset.sizePlaced.value + ') does not exceed the Target Size (' + tradingEngineStage.stageQuotedAsset.targetSize.value + ') for the stage.'
]
)
}
/* Size in Base Asset */
@@ -399,7 +438,12 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
if (
tradingEngine.current.episode.episodeQuotedAsset.balance.value - tradingEngineOrder.orderQuotedAsset.size.value < 0
) {
tradingSystem.warnings.push([tradingSystemOrder.id, 'Order Size Quoted Asset ('+ tradingEngineOrder.orderQuotedAsset.size.value +') changed to Balance Quoted Asset (' + tradingEngine.current.episode.episodeQuotedAsset.balance.value + ') so that the Balance does not drop below zero.'])
tradingSystem.warnings.push(
[
tradingEngineOrder.orderQuotedAsset.size.id,
'Order Size Quoted Asset (' + tradingEngineOrder.orderQuotedAsset.size.value + ') changed to Balance Quoted Asset (' + tradingEngine.current.episode.episodeQuotedAsset.balance.value + ') so that the Balance does not drop below zero.'
]
)
tradingEngineOrder.orderQuotedAsset.size.value = tradingEngine.current.episode.episodeQuotedAsset.balance.value
tradingEngineOrder.orderBaseAsset.size.value = tradingEngineOrder.orderQuotedAsset.size.value / tradingEngineOrder.rate.value
@@ -410,7 +454,12 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
if (
tradingEngine.current.episode.episodeBaseAsset.balance.value - tradingEngineOrder.orderBaseAsset.size.value < 0
) {
tradingSystem.warnings.push([tradingSystemOrder.id, 'Order Size Base Asset ('+ tradingEngineOrder.orderBaseAsset.size.value +') changed to Balance Base Asset (' + tradingEngine.current.episode.episodeBaseAsset.balance.value + ') so that the Balance does not drop below zero.'])
tradingSystem.warnings.push(
[
tradingEngineOrder.orderBaseAsset.size.id,
'Order Size Base Asset (' + tradingEngineOrder.orderBaseAsset.size.value + ') changed to Balance Base Asset (' + tradingEngine.current.episode.episodeBaseAsset.balance.value + ') so that the Balance does not drop below zero.'
]
)
tradingEngineOrder.orderBaseAsset.size.value = tradingEngine.current.episode.episodeBaseAsset.balance.value
tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineOrder.orderBaseAsset.size.value * tradingEngineOrder.rate.value
@@ -472,7 +521,11 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
let order = await exchangeAPIModule.getOrder(tradingSystemOrder, tradingEngineOrder)
if (order === undefined) {
tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not verify the status of this order at the exchange.'])
tradingSystem.warnings.push(
[
tradingSystemOrder.id, 'Could not verify the status of this order at the exchange.'
]
)
return false
}
@@ -846,7 +899,12 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
let order = await exchangeAPIModule.getOrder(tradingSystemOrder, tradingEngineOrder)
if (order === undefined) {
tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not verify the status of this order at the exchange, and syncronize the accounting.'])
tradingSystem.warnings.push(
[
tradingSystemOrder.id,
'Could not verify the status of this order at the exchange, and syncronize the accounting.'
]
)
return false
}