JSMEX.io, the first programmable cryptocurrency exchange.
In addition to the standard functionalities, jsmex is programmable; this means that users can deploy trading strategies in the account strategy section, and then those will be executed server-side, reducing latency drastically.
Other exchanges do not commonly use this technology, and We have developed a secure way that can execute third-party code in a runtime process using isolated environments.
Users can use strategies to build safe measures, advanced trading bots, or manage their market price.
We have fully integrated ccxt in our custom environment, so Users can easily port any current strategy based on ccxt to jsmex; of course, HTTP requests are restricted and are open only for jsmex.io domains.
Listing requests or market-makers email
jsb4ch@jsmex.ioCheck out
jsmex-trader-sdk on
npm, our trading strategy sdk based on ccxt.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fnodei.co%2Fnpm%2Fjsmex-trader-sdk.png&t=665&c=dsQELD-UKJBFtw)
![image loading...](https://ip.bitcointalk.org/?u=https%3A%2F%2Fstatic.jsmex.io%2Ftradingview.png&t=665&c=lBldjbD5Sl0Llw)
Demo preview
Sample panic close strategy
module.exports = class extends (global.Trader || require('jsmex-trader-sdk')) {
constructor (options) {
super(options)
this.defaultSymbol = this.options.defaultSymbol
}
/**
* SamplePanicCloseStrategy on tick method
*
* @author jsb4ch <jsb4ch@jsmex.io>
* @since 1.1.0
*/
async onTick () {
try {
let close = this.close()
let yesterdayOpen = this.open(24)
let rate = (
close.minus(yesterdayOpen)
).div(yesterdayOpen)
if (rate.lte(-0.2)) {
return this.cancelAllOrders()
} else {
global.log(rate.toNumber())
}
} catch (err) {
global.error(err)
}
}
/**
* SamplePanicCloseStrategy static options
*
* @author jsb4ch <jsb4ch@jsmex.io>
* @since 1.1.0
*/
static get options () {
return {
...this.defaultOptions,
defaultSymbol: 'JMX/USDT',
exchanges: {
jsmex: {
wwwDomain: 'jsmex.io',
apiDomain: 'api.jsmex.io'
}
},
ccxt: {
fetchOHLCV: {
resolution: '10m',
limit: 500
}
}
}
}
}