Skip to content

Commit

Permalink
fix: search for exactly Interactive Brokers
Browse files Browse the repository at this point in the history
  • Loading branch information
simoneb committed Mar 4, 2024
1 parent becaf75 commit b1dcd8e
Showing 1 changed file with 54 additions and 45 deletions.
99 changes: 54 additions & 45 deletions src/parsers/wsp.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,57 +132,66 @@ function getCharts(parsed, windowId) {
export async function handle(file) {
const parsed = ini.decode(await file.text())

const windowNumbers = new Set(
Object.keys(parsed)
.map(key => {
const match = key.match(/Wsp\\Window_(\d+)/)
if (match) {
return parseInt(match[1])
}
})
.filter(w => !isNaN(w))
)
const windowNumbers = getIds(parsed, /Wsp\\Window_(\d+)/)

const rows = windowNumbers.sort().map(windowId => {
const strategyData = `Wsp\\Window_${windowId}\\ChartManager\\Strategy\\StrategyATPersistHelper`
const charts = getCharts(parsed, windowId)

const contractsKey = Object.keys(parsed).find(
key =>
key.localeCompare(
`Wsp\\Window_${windowId}\\ChartManager\\Strategy\\SignalObject_0\\SignalHelper\\InputHelper\\Input_myContracts`,
undefined,
{ sensitivity: 'base' }
) === 0
)

const rows = Array.from(windowNumbers)
.sort()
.map(windowId => {
const strategyData = `Wsp\\Window_${windowId}\\ChartManager\\Strategy\\StrategyATPersistHelper`
const charts = getCharts(parsed, windowId)

const contractsKey = Object.keys(parsed).find(
key =>
key.localeCompare(
`Wsp\\Window_${windowId}\\ChartManager\\Strategy\\SignalObject_0\\SignalHelper\\InputHelper\\Input_myContracts`,
undefined,
{ sensitivity: 'base' }
) === 0
const brokerPluginsIds = getIds(
parsed,
new RegExp(
`Wsp\\\\Window_${windowId}\\\\ChartManager\\\\Strategy\\\\MCBroker\\\\MCBrokerObject\\\\PluginsProxies\\\\MCPluginProxiesCollection\\\\Item_(\\d+)`
)
)

console.log(brokerPluginsIds)

const brokerPluginAdditionalInfo =
const interactiveBrokersPluginId = brokerPluginsIds.find(
id =>
parsed[
`Wsp\\Window_${windowId}\\ChartManager\\Strategy\\MCBroker\\MCBrokerObject\\PluginsProxies\\MCPluginProxiesCollection\\Item_0\\Proxy\\MCPluginProxy\\AdditionalInfo`
]

const additionalInfo = ini.parse(
hex2a(
Object.keys(brokerPluginAdditionalInfo)
.filter(k => !['PluginData', '{', '}'].includes(k))
.join(' ')
.split(' ')
.join('')
)
`Wsp\\Window_${windowId}\\ChartManager\\Strategy\\MCBroker\\MCBrokerObject\\PluginsProxies\\MCPluginProxiesCollection\\Item_${id}`
].Name === 'Interactive Brokers'
)

console.log(interactiveBrokersPluginId)

const brokerPluginAdditionalInfo =
parsed[
`Wsp\\Window_${windowId}\\ChartManager\\Strategy\\MCBroker\\MCBrokerObject\\PluginsProxies\\MCPluginProxiesCollection\\Item_${interactiveBrokersPluginId}\\Proxy\\MCPluginProxy\\AdditionalInfo`
]

console.log(brokerPluginAdditionalInfo)

const additionalInfo = ini.parse(
hex2a(
Object.keys(brokerPluginAdditionalInfo)
.filter(k => !['PluginData', '{', '}'].includes(k))
.join(' ')
.split(' ')
.join('')
)
)

return {
strategyName: parsed[strategyData].StrategyName,
symbolName: parsed[strategyData].SymbolName,
autoTrading: parsed[strategyData].ATOn,
tif: additionalInfo.AdditionalsParams.TIF,
defaultAccount: additionalInfo.AdditionalsParams.DefaultAccount,
charts,
contracts: parsed[contractsKey]?.Value
}
})
return {
strategyName: parsed[strategyData].StrategyName,
symbolName: parsed[strategyData].SymbolName,
autoTrading: parsed[strategyData].ATOn,
tif: additionalInfo.AdditionalsParams.TIF,
defaultAccount: additionalInfo.AdditionalsParams.DefaultAccount,
charts,
contracts: parsed[contractsKey]?.Value
}
})

return { rows, columns, rowIdProp: 'strategyName' }
}

0 comments on commit b1dcd8e

Please sign in to comment.