It’s time to cut the cord!
Best True Wireless Earbuds in 2019
by Peter CaoBest True Wireless Earbuds Android Central 2019
In 2019, when smartphones are slowly but surely getting rid of the 3.5mm audio jack from smartphones and tablets, users are turning to wireless as the next viable option. The Sony WF-1000XM3 is currently the best overall truly wireless earbud around for Android. It features solid sound, long battery life, and class-leading active noise cancelation (ANC).
- Best Overall: Sony WF-1000XM3
- Best Runner Up: Samsung Galaxy Buds
- Best Active Noise Canceling: AirPods Pro
- Best Sound Quality: Sennheiser Momentum True Wireless
- Best Value: Anker Soundcore Liberty Air
- Best Value Sound Quality: Jabra Elite 75t
- Best For Workouts: Jaybird Vista
- Best Value Workout: JBL Under Armor True Wireless Flash
Best Overall: Sony WF-1000XM3
There aren't many ANC truly wireless earbuds out there outside of the Sony WF-1000XM3 and AirPods Pro. This is why the Sony WF-1000XM3 is an easy pick when it comes to ANC performance. The design isn't the prettiest, and they're rather bulky, but they get the job done.
Battery life is excellent with up to six hours alone and up to 19 hours with the charging case. For a pair of truly wireless ANC earbuds, the WF-1000XM3 perform surprisingly excellent in this department. Of course, as with most ANC headphones, the WF-1000XM3 offer an ambient sound mode that reverses the ANC microphones to allow the outside world in, therefore preserving battery.
Sound quality came out of left field with the WF-1000XM3s. Rather than having a bass-boosted sound and recessed treble which is typical with Sony headphones, the WF-1000XM3s have a tame bass that's only slightly boosted, with mids and treble being excellent and neutral.
In terms of water and dust resistance, the WF-1000XM3 get a basic IPX4 rating. This means that they are "splash-proof" which covers sweat, but it's not recommended in rain or similar situations.
Pros
- Great sound
- Active Noise Cancelation (ANC)
- Ambient sound mode
- IPX4 water and dust resistance
- USB-C charging
Cons
- Not as water-resistant as other options
- Bulky design
Best Overall
Sony WF-1000XM3
Killing it softly
The Sony WF-1000XM3 are great if you need ANC. You'll also get an ambient sound mode that allows you to have a conversation without removing your earbuds.
Best Runner Up: Samsung Galaxy Buds
Samsung is relatively new to the truly wireless earbud game. The company has been known to retain the 3.5mm audio jack throughout multiple generations, even when its competition continues to axe it. However, it does look like Samsung is beginning to axe the jack itself. With the Galaxy Buds, Samsung has a really solid first attempt at truly wireless earbuds.
Samsung's Galaxy Buds integrate best with Samsung's latest smartphones but work with all other smartphones, including Pixel devices and iPhones. You'll miss features such as quick pairing and quick access to the buds' battery status, which is only available on Samsung devices. It features a wireless charging case that uses the Qi standard, in addition to USB-C wired charging for faster charging. The charging case gives the Galaxy Buds up to two full charges for the earbuds and the buds themselves last up to six hours on a single charge.
Overall, they're fantastic if you own a Samsung smartphone, and good for every other device you pair to it. They offer superb sound quality for its form factor, exceptional battery life, wireless charging, and noise isolation. There's not much more you can ask for. The only real downside is the microphone on the Galaxy Buds. They could definitely be better and recipients have complained that the caller is hard to hear.
Pros:
- Long battery life
- Great sound
- Integration with Samsung devices
- Wireless charging case (and USB-C wired!)
- Universal app on Android
Cons:
- No iOS app
- Underwhelming bass
- Poor microphone
Best Runner Up
Samsung Galaxy Buds
Balanced, convenient audio
The Samsung Galaxy Buds feature excellent battery life and sound, convenience features, and a wireless charging case.
Best Active Noise Canceling: AirPods Pro
Despite being somewhat limited on Android (no auto-play/pause, Google Assistant, or customizability), the AirPods Pro feature some of the best active noise canceling for an earbud on the market right now. The AirPods Pro's ANC performance is fantastic for its class. No, it won't beat out the top end over-ear headphones such as the Sony WH-1000XM3, but it gets close to almost everything else on the market. If we had to draw a comparison, the ANC on the AIrPods Pro compare favorably to the Bose Noise Canceling Headphones 700.
Sound quality is solid with the AirPods Pro, with a slightly underemphasized but flat bass. The low- and mid-mids are neutral and flat while the upper-mids are slightly pushed forward, and the treble is neutral and flat as well. Dynamic range is excellent, and soundstage is narrow but still sounds spacious.
The earbuds get 4.5 hours of audio playback with ANC enabled, and five hours with ANC disabled. The included charging case is rated for 19 hours of additional listening time. The case charges over the proprietary Lightning connector, which is great for Apple users but not for Android ones. However, the charging case is wireless charging capable, which means you can bypass Lightning entirely if you're already invested in wireless charging.
Comfort is some of the best we've tested as well. Unlike other earbuds that have a plastic "stem" that the ear tips attach to, the AirPods Pro attach directly to the bud's speaker. This means the ear tip is completely on its own and can truly mold to your ear without anything getting in the way.
Pros:
- Long battery life
- Good sound
- Wireless charging case
- Superb ANC performance
- Media controls & ANC toggles work on Android
Cons:
- No customizability on Android
- Lightning for charging
Best Active Noise Canceling
AirPods Pro
Great package
The AirPods Pro have nailed all the fundamentals of a great truly wireless earbud: great battery life, sound quality, convenience, and comfort.
Best Sound Quality: Sennheiser Momentum True Wireless
You can't go wrong with Sennheiser when it comes to any audio gear, and the Sennheiser Momentum True Wireless are no exception. These earbuds make the list for those who enjoy dance, hip-hop, or any other bass-heavy genre of music.
The Momentum True Wireless has a super harsh boost in the bass. It gives it an overall darker sound signature, with a clear and even midrange and a rather underwhelming treble response overall. The excellent news is Sennheiser's mobile app (available on both iOS and Android) allows you to customize the sound signature to a certain extent.
They offer six hours of usage, with up to 12 hours of use using the included charging case. Unlike the Samsung Galaxy Buds, the case is missing wireless charging of any kind, but it still offers USB-C for charging.
They are also one of the biggest genuinely wireless earbuds out there. But that's not a huge deal since they're still much more portable than any on-ear or in-ear headphones. At the very least, they're still pocketable even with the rather large charging case.
Overall, if you have the money to spend on Sennheiser earbuds and want that great bass, this is the choice for you.
Pros:
- Super sound quality
- 6-hour battery life
- Charging case with USB-C
- App for iOS and Android
Cons:
- Case and buds bulky
- Bass boosted
Best Sound Quality
Sennheiser Momentum True Wireless
High definition audio
You can never go wrong with Sennheiser. It offers some of the best audio gear on the market, and the Momentum True Wireless are no exception.
Best Value: Anker Soundcore Liberty Air
When it comes to best value, the Anker Soundcore Liberty Air are the best bang for your buck. If you set your expectations accordingly, these are an excellent value.
The charging case allows up to 20 hours of listening time while the earbuds themselves net you around 5 hours of listening on a single charge. While both of these stats are great, the Soundcore Liberty Air does not feature wireless charging of any sort and still charge over the aging Micro-USB connector.
The sound is excellent for earbuds at this price. They're rather neutral across the board with a slight boost in the treble. They also feature an IPX5 water resistance rating, which equates to being able to use them in the rain or while doing intense workouts.
Comfort is good. It's not the most comfortable earbud we've ever tested nor is it the worst we've tried. They're rather comfortable for the first 30 minutes to an hour of usage, but after that you'll likely need to take a break as the buds do get warm after some usage, which make them super uncomfortable.
Pros:
- 20 hours of battery life with case
- Great sound
- IPX5 water resistance
- Long battery life
- Great comfort for short bursts
Cons:
- No customization (app or on earbuds)
- Micro-USB for charging
Best Value
Anker Soundcore Liberty Air
Solid inexpensive tunes
They are excellent for the price. Up to 20 hours of listening time with the charging case, the sound is excellent, and you get IPX5 water resistance.
Best Value Sound Quality: Jabra Elite 75t
The Jabra Elite 75t features a very bass heavy sound out of the box, which is surprising. The bass is boosted quite a bit that some may dislike the bass overall. For bass heads, this will be the earbud for you. The mid-range is slightly recessed as a result, and the treble is smooth and neutral. If you dislike the boosted bass, Jabra's companion smartphone application will do the trick. Soundstage is good for a truly wireless earbud, and dynamic range is excellent.
Battery life is excellent here as well with up to 7.5 hours of listening on a single charge. The included charging case gets you roughly 20 additional hours of listening, totaling around 28 hours of listening time with the charging case. Unfortunately, they still don't feature wireless charging for the case, but it does charge over USB-C which is a welcome improvement.
Comfort is equally as great. The Jabra Elite 75t is surprisingly really comfortable, easily in our top 5 most comfortable truly wireless earbuds. You won't experience fatigue or discomfort with them, even over long periods of time.
The Elite 75t are also IP55 water and dust resistant which means they'll have no issues with things such as sweat, rain, snow or other light activities. Just don't shower or swim with them.
Pros:
- Customizable sound
- Long battery life
- USB-C for charging
- Water and dust resistance
- Excellent comfort
Cons
- No wireless charging
- Bass heavy sound is a bit much for some
Best Value Sound Quality
Jabra Elite 75t
Inexpensive wireless sound
The Jabra Elite 75t are by far the best value when it comes to sound quality, battery life, comfort and portability.
Best For Workouts: Jaybird Vista
When it comes to working out, the newly announced Jaybird Vista is by far the best solution. They offer great battery life while also giving superb passive isolation. The design allows them to fit most people's ears and with better isolation means a more consistent sound signature. They feature the latest Bluetooth 5.0 protocol for better overall efficiency between the buds and your phone.
In terms of Bluetooth audio codecs, you only have SBC here which is fine in terms of quality for most people. But latency will be pretty high here so you'll see a noticeable lag when watching videos or playing games. Battery life is better than most with up to 6 hours with the buds alone and up to 10 additional hours with the included charging case. The charging case charges via USB-C and takes roughly 2 hours to charge from dead. No wireless charging here on the case.
Sound quality is decent here. The Vista has a solid V-shaped sound signature with boosted bass, neutral mids, and boosted treble. The sound isn't overly boomy or heavy in the bass and the treble isn't boosted to the point where they sound piercing or sharp.
The Jaybird Vista offer IPX7 water resistance so it should be able to withstand practically any sort of water you throw at it. You can do practically anything but swim with these things.
Pros:
- Solid, fun sound
- Battery life
- Bluetooth 5.0
- USB-C for charging
- IPX7 water resistance
Cons:
- No wireless charging for case
- No auto pause
Best For Workouts
Jaybird Vista
Fitness junkies
The Jaybird Vista offer a fun sound signature for working out. They feature Bluetooth 5.0, great battery life, and IPX7 water resistance.
Best Value Workout: JBL Under Armor True Wireless Flash
The JBL Under Armor True Wireless Flash are built like a tank with an IPX7 water resistance rating. For working out, these are an absolute gem and will be able to handle any sweat, rain, or snow that comes your way. With IPX7, these are rated to be submerged in water for up to 30 minutes.
In terms of battery life, these rival the top dogs in the true wireless space. They offer up to five hours on the earbuds, with up to 25 hours with the charging case.
For sound, the JBL Under Armor True Wireless Flash is decent. They use the same signature JBL sound, which translates to a boosted yet controlled bass, a neutral mid-range, and a treble that is present with a rapid roll-off to prevent treble fatigue. For working out, this type of sound signature is preferred as it gets the adrenaline pumping and elevates your music.
The only real downsides to these buds are that they still use Micro-USB for charging and that they use an "active" blue LED indicator when the earbuds are paired to a device, which I found to be distracting.
Pros
- Battery life
- Exceptional sound
- Comfort and size
- Class-leading water and dust resistance
Cons
- Micro-USB for charging
- Odd shaped case
- Annoying blue LED status indicator light
Best Value Workout
JBL Under Armor True Wireless Flash
Classic JBL sound
With the JBL UA True Wireless Flash, you'll get strong battery life, class-leading water and dust resistance, and the great JBL great sound.
Bottom line
Truly wireless earbuds have gained popularity over the past several years, and are now some of the most popular headphones you can buy. Choosing a pair is difficult right now because many tech companies are rushing to get their own versions out. As the technology matures, great earbuds will come down in price, and sound quality will continue to evolve. For now, the Sony WF-1000XM3 are our top pick for truly wireless earbuds.
The Sony WF-1000XM3 feature class-leading active noise canceling (ANC) tech and are neck-and-neck with the AirPods Pro.
Another area where they shine is in the battery life department, giving users up to six hours of battery life with the buds, and an additional 19 hours of battery life on a single charge. Its only real fault in terms of charging is lacking wireless charging of any sort. If you're looking to juice up, you'll have to plug in via USB-C.
How to choose the best true wireless earbud
Choosing earbuds can be difficult, especially truly wireless ones. They come in varying shapes and sizes, and comfort can vary greatly depending on how big your ears are.
But that's only the tip of the iceberg as headphone manufacturers continue to make custom designed earbuds for specific scenarios. Wireless earbuds are a lot more complicated than simply cutting the cord.
Sound Quality
Not surprisingly, the Sennheiser Momentum True Wireless takes the top spot for having the best overall sound for truly wireless earbuds. They features excellent dynamic and a wide soundstage compared to other earbuds, let alone truly wireless ones.
The Sony WF-1000XM3 sound surprisingly fantastic. Despite Sony having a reputation for making dark-sounding headphones, the WF-1000XM3 turn the tide here. You get an overall more neutral sound signature with only a small bass boost and neutral mids and treble, giving it a rather impressive sound for ANC earbuds.
Lastly, the AirPods Pro feature great sound. The bass can sound underwhelming for some (while still being flat), the treble is neutral and the mids are a bit boosted. Dynamic range is excellent but the soundstage is narrow but spacious.
Best true wireless earbuds, ranked by sound quality
- Sennheiser Momentum True Wireless
- Sony WF-1000XM3
- AirPods Pro
- Samsung Galaxy Buds
- JBL Under Armor True Wireless Flash
Comfort
Comfort plays a huge role in choosing a pair of true wireless earbuds. Comfort is arguably more important than anything else because if they don't fit your ears or you can only wear them at 20 minutes at a time, what's the point?
Our overall pick, the AirPods Pro, are comfortable for long periods of time. They don't cause any sort of ear fatigue and and are super light. You definitely shouldn't have an issue with the AirPods Pro, thanks to them not having a plastic stem that gets shoved in your ear.
The Samsung Galaxy Buds are also comfortable for long periods of time. They don't cause any sort of ear fatigue. They're not the lightest pair of true wireless earbuds out there but they're not the heaviest. You definitely shouldn't have an issue with the Galaxy Buds, granted you have the right set of ear tips.
Third on our list is the Sony WF-1000XM3, and they are rather large in size and a bit heavy. However, with the right ear tips, they can be super comfortable. You won't ever not notice they're there but you won't feel any sort of ear fatigue, even over extended periods of time.
The Jabra Elite 65t are comfortable at first, but in our testing noticed that they can get slightly uncomfortable after about an hour or two of usage. That's unfortunate because the 65t's are genuinely great earbuds that come with a lot of features.
Best true wireless earbuds, ranked by comfort
- AirPods Pro
- Samsung Galaxy Buds
- Sony WF-1000XM3
- Jabra Elite 65t
- Jaybird Vista
Noise isolation
The AirPods Pro surprisingly take our top pick for best noise isolation performance. While it's comparable to the WF-1000XM3, and the two are pretty close, the AirPods Pro are simply more consistent when it comes to its active noise canceling (ANC) performance. Technically, both earbuds would classify as class-leading ANC performance, but there aren't many other truly wireless ANC earbuds out there in the first place.
So in third and fourth place are the Jabra Elite 65t and Sennheiser Momentum True Wireless. Neither of which feature active noise cancelation but are solid when you crank the volume up to a decent level. You'll still hear a decent amount of environmental noise but it's greatly reduced when you crank up the volume.
Best true wireless earbuds, ranked by noise isolation
- AirPods Pro
- Sony WF-1000XM3
- Jabra Elite 65t
- Sennheiser Momentum True Wireless
- Jaybird Vista
Smart Features
The Sony WF-1000XM3 are probably one of the smartest earbuds on the market. The earbuds themself feature auto-play/pause when you remove them, auto-connect when you put them in your ear, and hands-free Google Assistant or Amazon Alexa. You'll also get an ambient sound mode which lets you quickly hear the environment around you without removing your earbuds. This feature uses the great ANC microphones already onboard the earbuds and reverses them.
The earbuds can be configured in the Sony companion app even further, allowing you to customize the sound signature, how much ANC you'd like to be pumped in, and choose if you want Google Assistant or Amazon Alexa.
Jaybird has one of the most robust earbud smartphone apps out there. While the earbuds themselves don't have any smart features aside from auto-connecting when you take them out of the case, the features the smartphone app adds makes up for it. The app lets you adjust your sound signature, as well as find your earbuds if you've lost them.
The AirPods Pro make the list because they're smart but only if you use an iOS device such as an iPhone or iPad. You get hands-free Siri, they automatically play and pause when you remove them from your ear and put them back in, and you'll also get seamless pairing and device switching across any Apple device paired to your iCloud account.
A little known secret about the AirPods Pro is that device switching is still easy even when you don't pair them to Apple devices. If you've paired to the device before, simply go into your device's Bluetooth settings and tap on them to connect. The AirPods Pro will automatically stop pairing on the previous device, disconnect from the previous device, and then pair to the device you've just hit connect on.
Best true wireless earbuds, ranked by smart features
- Sony WF-1000XM3
- Jaybird Vista
- Apple AirPods Pro
- Samsung Galaxy Buds
- Jabra Elite 65t
Battery Life
This one was pretty close. Our top three contenders all had really amazing battery life with anywhere between 24-26 hours with their respective charging cases. Battery life is an interesting topic when it comes to true wireless earbuds as you have to take into account the earbuds' battery life but also how much juice the charging case gives you.
Both the JBL Under Armor True Wireless Flash and the Sony WF-1000XM3 have 25 hours of battery life with their respective charging cases. However, the WF-1000XM3 edges the JBL's in this case as they can last up to six hours on a single charge compared to the JBL's five hours on a single charge.
The AirPods Pro were a close third, offering up to 24 hours of battery life with the charging case. On their own they have a respectable 4.5 hours of audio playback and four hours of talk time (with ANC enabled).
Best true wireless earbuds, ranked by battery life
- Sony WF-1000XM3
- JBL Under Armor True Wireless Flash
- Apple AirPods Pro
- Anker Soundcore Liberty Air
- Jaybird Vista
Microphone Quality
The best true wireless earbuds in terms of microphone quality is easy. This category goes to the Apple AirPods Pro. While they don't have the greatest sound reproduction, Apple nailed it when it comes to the microphone quality. No matter the environment, they're able to isolate your voice well from the environment around you. We never once had an issue with the person on the other end not being able to hear us, even in super loud environments. The noise isolation algorithm here is superb and isn't overly aggressive to the point where your voice sounds robotic.
The Jaybird Vista are also pretty good when it comes to its microphone quality. While not as great as the AirPods Pro, the Vista are able to block out a considerable amount of background noise and the noise isolation algorithm keeps up and doesn't clip your voice or make it sound robotic. The person on the other end can still hear a decent amount of background noise but it's not too bad.
Lastly, the Jabra Elite 65t. They're pretty good in this department as well. However, if you have a higher-pitched voice, the noise isolation algorithm will more than likely cut some of your voice out. While it's not too terrible, it is worth noting if you have a higher-pitched voice. For everyone else, the Jabra Elite 65t compares favorably to the Jaybird Vista. The algorithm itself is great at blocking out background noise and isolating your voice. You can still hear a good amount of background noise but that's too be expected.
Best true wireless earbuds, ranked by Microphone Quality
- Apple AirPods Pro
- Jaybird Vista
- Jabra Elite 65t
- Sony WF-1000XM3
- Sennheiser Momentum True Wireless
Credits — The team that worked on this guide
Peter Cao has been an audio enthusiast for a number of years. He's tested over a dozen headphones and is excited to continue on his audio journey.
We may earn a commission for purchases using our links. Learn more.


Please scan this QRCode to get the report
If the QRCode is crashed, please click this link ...
Click me!!!


Banana newsletter
Health
Bananas are one of the most widely consumed fruits in the world for good reason. Eating them could help lower blood pressure and reduce the risks of cancer and asthma. Bananas are rich in a mineral called potassium. This mineral is important as it helps maintain fluid levels in the body and regulates the movement of nutrients and waste products in and out of cells.
One thing people often neglect to think about when planning a muscle-building diet is carbohydrate. As protein is the main building block of muscle tissue, it often takes center stage, but carbs are vital, too. A nutritious way to get more carbs, along with plenty of fiber, vitamins and minerals, is to eat more bananas.
Generally, it is agreed that bananas originated in Southeast Asia and the South Pacific around 8000 to 5000 BC. Bananas are believed to have been the world's first cultivated fruit. From Southeast Asia, the fruit was brought west by Arab conquerors and then carried to the New World by explorers and missionaries.
Video
Properties
| Energy | 371 kJ (89 kcal) |
| Carbohydrates | 22.84g |
| Sugars | 12.23g |
| Dietary fiber | 2.6g |
| Fat | 0.33g |
| Protein | 1.09g |
| Water | 74.91g |
| Thiamine (B1) | 0.031mg |
| Riboflavin (B2) | 0.073mg |
| Niacin (B3) | 0.665mg |
| Pantothenic acid (B5) | 0.334mg |
| Vitamin B6 | 0.4mg |
| Folate (B9) | 20μg |
| Choline | 9.8mg |
| Vitamin C | 8.7mg |
| Magnesium | 27mg |
| Manganese | 0.27mg |
| Phosphorus | 22mg |
| Potassium | 358mg |
| Sodium | 1mg |
| Zinc | 0.15mg |
| Iron | 0.26mg |


WITNESS LIST Health Services Committee March 30, 1999-1:30P SB 871 FOR: Carl Solomon (Texas Podiatry Association), Dallas SB 941 FOR: Joan Matthews (Self, Other Mental Health Providers), San Marcos ON: Jefferson Nelson (Texas Society of Psychiatric Physicians), Austin Registering, but not testifying: For: Lisa Ross (Texas Psychological Association), Austin SB 1031 FOR: Chuck Courtney (Texas Retailers Association), Austin Registering, but not testifying: For: Brad Shields (Mrs. Baird's Bread), Austin Glen Garey (Texas Restaurant Association), Austin On: Frank Borden (Texas Department of Health), Austin SB 1131 FOR: Kathy Hutto (Coalition for Nurses in Advanced Practice), Austin Lynda Woolbert (Coalition for Nurses in Advanced Practice), West Columbia Sam Stone (Texas Academy of Physician Assistants), Austin AGAINST: Bill C. Pittman (Texas Pharmacy Association), Austin Karen Reagan (Texas Pharmacy Association), Austin Tammy Gray (Herself), Austin Registering, but not testifying: For: Alfred Gilchrist (Texas Medical Association), Austin James Willmann (Texas Nurses Association), Austin Lynda Sutliff (Herself), San Angelo Sandra Gale (Consortium of Texas Certified Nurse Midwives), Austin Tom Banning (Texas Academy of Family Physicians), Austin On: Craig Walker (Texas Association of Rural Health Clinics), Austin SB 1132 FOR: Alfred Gilchrist (Texas Medical Association), Austin Charles Bailey (Texas Health Association), Austin Registering, but not testifying: For: Lynda Sutliff (Herself), San Angelo Lynda Woolbert (Coalition fro Nurses in Advanced Practice), West Columbia Sandra Gale (Consortium of Texas Certified Nurse Midwives), Austin Tom Banning (Texas Academy of Family Physicians), Austin On: James Willmann (Texas Nurses Association), Austin SB 1238 ON: David Maserang (Texas Department of Health), Austin Registering, but not testifying: For: Alicia Gill (Lower Colorado River Authority), Austin Sharon Mertens (Radian International), Austin On: Carol Batterton (TNRCC), Austin SB 1239 ON: Steve McAndrew (Texas Department of Health), Austin Registering, but not testifying: For: Glen Garey (Texas Restaurant Association), Austin SB 1249 Registering, but not testifying: On: Nora Saldivar (Texas Department of Health), Austin SB 1340 FOR: Bonnie Mackin (Texas Association of Nurse Anesthetists), Houston Debra Favors (Herself), Odessa Eric Furman (Texas Society of Anesthesiologists), Fort Worth Les Weisbrod (Himself and the Favors family), Dallas Robert Sloane (Texas Medical Association), Fort Worth Registering, but not testifying: For: Lynda Sutliff (Herself), San Angelo Lynda Woolbert (Coalition for Nurses in Advanced Practice), West Columbia Tom Banning (Texas Academy of Family Physicians), Austin On: Bruce Levy (Texas State Board of Medical Examiners), Austin Kim Flores (Texas Board of Nurse Examiners), Austin


--- title: Optimization Base keywords: fastai sidebar: home_sidebar summary: "Optimization Base API" description: "Optimization Base API" nb_path: "nbs/01_optimization.base.ipynb" ---
class
QuantumOptimizer
QuantumOptimizer() :: ABC
ABC
Abstract class to preprocess data


Chapter 6 Quantifying the Cavitation Potential of the valve
Its effect on the system varies with valve type, size, operating pressure, and details of the piping installation. To include cavitation in the design process is necessary to determine if cavitation will it’s, evaluate its intensity, characterize the flow conditions, and estimate its effect on the system and environment. Possible consequences include noise, vibration, erosion damage, and a decrease in performance.
In the case of control valves it is conventional to describe the application in terms of a single parameter and then to compare this parameter to different limits of operation for a given control element.
To characterize the flow conditions corresponding to a selected level of cavitation requires defining a cavitation index derived from dimensional analysis. The process involves determining the fluid properties, geometric characteristics, and fluid parameters that influence the cavitation process. The main variables affecting the cavitation process are:
- the geometric configuration of the device,
- absolute pressure in the cavitating region,
- the critical pressure, generally assumed to be the liquid vapor pressure and
- velocity or pressure drop
The cavitation index sigma \(\sigma\) is a form of another dimensionless parameter.Sigma is constant for either SI or US Customary units as long as the same units of pressure are used throughout the equations for the parameter.
This index (σ) is the ratio of fluid forces trying to prevent cavitation (the system or service pressure) to the forces trying to cause cavitation (the pressure drop). The smaller the value of the cavitation index for a flow system, the more likely or the more severe cavitation will be.
The force suppressing cavitation is proportional to the magnitude of the average pressure relative to absolute vapor pressure i.e. \((P-P_r)\). The force causing cavitation is proportional to the velocity head \(V^2/2g\) or to the pressure drop across the valve \(\Delta P\). The resulting cavitation parameter sigma can be expressed as (Tullis 1993):
\[\begin{equation} \sigma = \frac{P_1-P_v}{\Delta P_{net}} \tag{6.1} \end{equation}\]
in which:
- \(P_1\) is the absolute pressure just upstream from the valve \((P_l = P_u + P_b)\),
- \(P_u\) is the gauge pressure just upstream from the valve,
- \(P_b\) is the atmospheric or barometric pressure,
- \(P_v\) is the absolute vapor pressure and
- \(\Delta P_{net}\) the net pressure drop across the valve.
The minimum value of sigma (\(\sigma\)) is \(1.0\) since the maximum \(\Delta P_{net}\) across the valve is \((P_1 - P_v)\).
For valves and other devices that create a pressure drop, the cavitation parameter can be defined in several ways. The reference pressure in the numerator of the equation of sigma equation (6.1) can be either the upstream or the downstream pressure. Both have been used, and there are valid reasons supporting either choice.
Using the downstream pressure \(P_2\), the equation becomes:
\[\begin{equation} \sigma_{1} = \frac{P_2-P_v}{\Delta P_{net}} \tag{6.2} \end{equation}\]
In which \(P_2\) is the absolute downstream pressure (\(P_2 = P_d + P_b\)), where \(P_d = P_u - \Delta P_{net}\) and \(P_b\) is the barometric pressure.
This is the form originally preferred because the downstream pressure is the pressure closer to the zone where the cavitation occurs. Therefore, the downstream pressure more directly influences the cavitation. However, it is more convenient to use the upstream pressure for most applications, and the two sigma values differ by a constant value of \(1.0\). The following simple equation directly relates the equation:
\[\begin{equation} \sigma = \sigma_{1} + 1 \tag{6.3} \end{equation}\]
For cavitation caused by surface roughness, an isolated roughness, an offset in the boundary or by any device for which it is not possible or convenient to evaluate a pressure differential, the velocity head can be used in place of \(\Delta{P}\) in Equation of \(\sigma\). The resulting equation is:
\[\begin{equation} \sigma_{2} = \frac{P_1-P_v}{(V^2/2g)} \tag{6.4} \end{equation}\]
Some authors have chosen to use the reciprocal of Equation for \(\sigma\) and have defined the cavitation index as \(K_c\) instead of \(\sigma\). The equation defining \(K_c\) is:
\[\begin{equation} K_c = \frac{1}{\sigma_{1}} = \frac{\Delta P_{net}}{(P_2-P_v)} \tag{6.5} \end{equation}\]
If you want to add a factor of safety to the cavitation parameter \(\sigma\) (6.1) that includes the possible cavitation caused by any device for which it is not possible or convenient to evaluate a pressure differential close to the control valve, then:
\[\begin{equation} \begin{split} \frac{1}{\sigma_{}} + \frac{1}{\sigma_{2}} & = \frac{\Delta P_{net}}{(P_1-P_v)} + \frac{(V^2/2g)}{(P_1-P_v)} \\ & = \frac{\Delta P_{net} + (V^2/2g)}{(P_1-P_v)} \end{split} \end{equation}\]
So:
\[\begin{equation} \sigma_{3} = \frac{(P_1-P_v)}{\Delta P_{net} + (V^2/2g)} \tag{6.6} \end{equation}\]
6.1 Evaluating the Cavitation Limits of the valve
Cavitation causes noise, pressure fluctuations, vibrations, erosion damage, and in advanced stages, can reduce the valve’s capacity. The acceptable cavitation level for a valve in a given system varies with valve type, valve function, details of the piping layout and duration of the operation.
It is necessary to identify and provide experimental data for several levels of cavitation intensity to have adequate information for analysis and design. There are defined six different cavitation design limits. The methods used to determine each limit experimentally are described, and suggestions are given as to when each limit might be appropriate. These limits are:
- Incipient cavitation \(\sigma_{i}\)
- Critical (or constant) cavitation \(\sigma_{c}\)
- Incipient damage \(\sigma_{i_d}\)
- Incipient choking \(\sigma_{i_{ch}}\) (or Kc)
- Choked flow \(\sigma_{ch}\)
- Maximum noise and vibration level \(\sigma_{max}\)
Definition 6.1 (cavitation) A two-stage process associated with the flow of liquids. The first stage involves the formation of vapor bubbles in the flow stream as a result of the local static pressure in the flow stream dropping below the liquid vapor pressure. The second stage of the process is the subsequent collapse or implosion of the vapor cavities back to the liquid state when the local static pressure again becomes greater than the fluid vapor pressure (ANSI/ISA 1995).
Definition 6.6 (flashing) A flow condition in which vapor pockets formed inside a valve persist downstream of the valve because the valve outlet pressure is at or below the fluid vapor pressure (ANSI/ISA 1995).
Definition 6.7 (duty cycle) The ratio of the amount of time a valve spends performing one particular function to the valve’s total installed time period. It may be expressed as a percentage of total time (service time vs. installed time) (ANSI/ISA 1995).
SIGMA Values:
- Incipient cavitation. (\(\sigma_{i}\)): • Onset of cavitation • Detect using high frequency vibration measurement • Very local phenomenon • Transient: random “ticks” sound • Low level cavitation: usually not damaging • Occurs prior to loss of capacity
- Constant cavitation (\(\sigma_{c}\)): • More regular cavitation events • Lower frequency sound and vibration sensed: “rumbling” sound • Some damage to surfaces may occur: dependent upon valve and trim styles, and materials.
- Maximum Cavitation (\(\sigma_{mv}\)): • Highest vibration amplitude: sounds like “marbles” or “gravel” • Vigorous, large scale cavitation • Predicted by steady flow pressure distribution ( = \(F_L\) ) • Very high damage potential
- Manufacturer’s Recommended Limit (\(\sigma_{mr}\))
References
———, ed. 1995. ANSI/ISA–RP75.23–1995, Considerations for Evaluating Control Valve Cavitation. Instrument Society of America.
Tullis, J. Paul. 1993. Cavitation Guide for Control Valves. Division of Engineering, Office of Nuclear Regulatory Research, U.S. Nuclear Regulatory Commission (1993).


def _slow_negative_log_likelihood(args, Y, D, X, Z): """ Negative Log-likelihood function of the generalized Roy model. """ # Likelihood construction for i in range(num_agents): g = np.concatenate((X[i, :], Z[i, :])) choice_idx[i] = np.dot(choice_coeffs, g) # Select outcome information if D[i] == 1.00: coeffs, rho, sd = Y1_coeffs, U1V_rho, U1_sd else: coeffs, rho, sd = Y0_coeffs, U0V_rho, U0_sd arg_one = (Y[i] - np.dot(coeffs, X[i, :])) / sd arg_two = (choice_idx[i] - rho * V_sd * arg_one) / \ np.sqrt((1.0 - rho ** 2) * V_sd ** 2) pdf_evals, cdf_evals = norm.pdf(arg_one), norm.cdf(arg_two) if D[i] == 1.0: contrib = (1.0 / float(sd)) * pdf_evals * cdf_evals else: contrib = (1.0 / float(sd)) * pdf_evals * (1.0 - cdf_evals) likl[i] = contrib


You can write your CWL/WDL and store it on Dockstore.org, or you can register a CWL/WDL/NextFlow from an existing third party repository, such as GitHub, Bitbucket, etc.


Top Bar
The Foundation Top Bar gives you a great way to display a complex navigation bar on small, medium or large screens.
Build With HTML Classes
The top bar is a pretty complex piece of magical UI goodness. We rely on many presentational classes to define its look and feel, and there's a lot happening in the JS. The top bar is hoverable by default, but you can change it to use click events instead by adding data-options="is_hover: false"
to the
element. If you have a hoverable topbar, it will close itself on click by default, but this behavior can be prevented by setting data-options="dropdown_autoclose: false"
. See an example below.
HTML

My Site

Menu

Right Button Active

Right Button Dropdown

First link in dropdown

Active link in dropdown

Left Nav Button

Positioning the Bar
The top bar is built with a single nav
element with a class of top-bar
. It will take on full-browser width by default. To make the top bar stay fixed as you scroll, wrap it in div class="fixed"
. If you want your navigation to be set to your grid width, wrap it in div class="contain-to-grid"
. You may use fixed
and contain-to-grid
together in the wrapping div (div class="contain-to-grid fixed
).
Fixed Navigation

...

Contain to Grid

...

Sticky Top Bar
You may also wrap your top bar in div class="sticky"
and put it anywhere within your markup. When the navigation hits the top of the browser, it will act like the fixed top bar and stick to the top as users continue to scroll. Note: If you are using SCSS, you can control the default sticky
class by adjusting the $topbar-sticky-class
variable. Make sure the JS variable for sticky_class
matches whatever class you use in the variable.
You can also add sticky_on
to your data-options
attribute to allow your sticky bar to work on small
, medium
, or large
when the page loads. This works in conjunction with the sticky class wrapper to target sticky for small, medium, or large. It will be sticky on all screen sizes by default.
Additionally, you can pass in an array to specify sticky on multiple sizes. For example, data-options="sticky_on: [small,large]"
will be sticky on small and large, but NOT medium.

...

Clickable Top Bar
You can now make the top bar clickable by adding a data-attribute to the nav element. Here's an example:

Mobile Parent Links
Foundation will show the parent link on mobile navigation. A helpful way for mobile users navigate your site. Don't want them? Simply change the settings in the topbar.js file.
Built-in Components
Several common elements have been supported by default, each one of these elements gets added to either the ul.right
or ul.left
unordered lists within your Top Bar navigation.
Search Bar

<input type="text" placeholder="Find Stuff">

Search

Divider
Separate your buttons with dividers

Button
Add buttons

Get Lucky

Label
Separate sections of your dropdowns with labels

Dropdown Level 1 Label

Remove the Title
If you want a bar that doesn't include a title, just take out the content within the list item, like so:

...

Accessibility
The top bar is a complex component with a lot of different features. However, it's still fully keyboard and screen reader accessible. The main thing you need to add if upgrading from an older version of Foundation is the attribute role="navigation"
to the top bar container. Additionally, if your page uses top bar and off-canvas navigation, add the attribute aria-hidden="true"
to one of them—otherwise, the user's device will tab through (and possibly read) both of them before reaching any content.
Available SCSS Variables
We do include SCSS variable to help you control some of the styles for the top bar. Overall the styles are written mobile first, so they are much easier to override than the previous iteration of the top bar.
//
// Top Bar Variables
//
$include-html-top-bar-classes: $include-html-classes;
// Background color for the top bar
$topbar-bg-color: $oil;
$topbar-bg: $topbar-bg-color;
// Height and margin
$topbar-height: rem-calc(45);
$topbar-margin-bottom: 0;
// Controlling the styles for the title in the top bar
$topbar-title-weight: $font-weight-normal;
$topbar-title-font-size: rem-calc(17);
// Style the top bar dropdown elements
$topbar-dropdown-bg: $oil;
$topbar-dropdown-link-color: $white;
$topbar-dropdown-link-color-hover: $white;
$topbar-dropdown-link-bg: $oil;
$topbar-dropdown-link-bg-hover: $oil;
$topbar-dropdown-link-weight: $font-weight-normal;
$topbar-dropdown-toggle-size: 5px;
$topbar-dropdown-toggle-color: $white;
$topbar-dropdown-toggle-alpha: 0.4;
// Set the link colors and styles for top-level nav
$topbar-link-color: $white;
$topbar-link-color-hover: $white;
$topbar-link-color-active: $white;
$topbar-link-color-active-hover: $white;
$topbar-link-weight: $font-weight-normal;
$topbar-link-font-size: rem-calc(13);
$topbar-link-hover-lightness: -10%; // Darken by 10%
$topbar-link-bg: $topbar-bg;
$topbar-link-bg-hover: $jet;
$topbar-link-bg-color-hover: $charcoal;
$topbar-link-bg-active: $primary-color;
$topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%);
$topbar-link-font-family: $body-font-family;
$topbar-link-text-transform: none;
$topbar-link-padding: $topbar-height / 3;
$topbar-back-link-size: $h5-font-size;
$topbar-link-dropdown-padding: 20px;
$topbar-button-font-size: 0.75rem;
$topbar-button-top: 7px;
$topbar-dropdown-label-color: $monsoon;
$topbar-dropdown-label-text-transform: uppercase;
$topbar-dropdown-label-font-weight: $font-weight-bold;
$topbar-dropdown-label-font-size: rem-calc(10);
$topbar-dropdown-label-bg: $oil;
// Top menu icon styles
$topbar-menu-link-transform: uppercase;
$topbar-menu-link-font-size: rem-calc(13);
$topbar-menu-link-weight: $font-weight-bold;
$topbar-menu-link-color: $white;
$topbar-menu-icon-color: $white;
$topbar-menu-link-color-toggled: $jumbo;
$topbar-menu-icon-color-toggled: $jumbo;
// Transitions and breakpoint styles
$topbar-transition-speed: 300ms;
// Using rem-calc for the below breakpoint causes issues with top bar
$topbar-breakpoint: #{lower-bound($medium-range)}; // Change to 9999px for always mobile layout
$topbar-media-query: "#{$screen} and (min-width:#{lower-bound($topbar-breakpoint)})";
// Divider Styles
$topbar-divider-border-bottom: solid 1px scale-color($topbar-bg-color, $lightness: 13%);
$topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%);
// Sticky Class
$topbar-sticky-class: ".sticky";
$topbar-arrows: true; //Set false to remove the triangle icon from the menu item
Note: rem-calc();
is a function we wrote to convert px
to rem
. It is included in _variables.scss.
Using the Javascript
foundation.js
are available on your page. You can refer to the Javascript documentation on setting that up.
Just add foundation.topbar.js
AFTER the foundation.js
file. Your markup should look something like this:

...

Required Foundation Library: foundation.topbar.js
Optional Javascript Configuration
Top bar supports data-options
configuration.
{
sticky_class : 'sticky',
custom_back_text: true, // Set this to false and it will pull the top level link name as the back text
back_text: 'Back', // Define what you want your custom back text to be if custom_back_text: true
is_hover: true,
mobile_show_parent_link: false, // will copy parent links into dropdowns for mobile navigation
scrolltop : true // jump to top when sticky nav menu toggle is clicked
}
Adding New Top-bar After Page Load
If you add new content after the page has been loaded, you will need to reinitialize the Foundation JavaScript by running the following:
$(document).foundation();
Reflow will make Foundation check the DOM for any elements and re-apply any listeners to them.
$(document).foundation('topbar', 'reflow');
Sass Errors?
If the default "foundation" import was commented out, then make sure you import this file:
SCSS
@import "foundation/components/top-bar";


Thank you for your feedback. We will be analyzing it soon.
Please click in the submit button below to send your feedback.


Basic info:
Name: <%= name %>
Role: None
Waiting
Roles in this game:
Players:
Chat
Send
Start game
End game
Restart game
Action
If you have an action, it will appear here!
Vote
Name :
Password :
Sumbit


This library provides a metrics listener for Pushy (a Java library for sending APNs push) notifications that gathers and reports metrics using the Dropwizard Metrics library.
It is available under the MIT License.


number of subdivisions 1
8
angle 0
360
Oops ... your browser doesn't support the HTML5 canvas element


Simplicity
Even with the features and complexity of the server. it is designed to be simple to install and configure. When installing from source, just follow the 4-line instructions on the download page. Or, install a package for your operating system.
Once the server has been installed, edit the raddb/users file, and add the following line of text at the top:
-
bob Cleartext-Password := "hello"
Then in a terminal window, start the server in debugging mode:
-
$ radiusd -X
When the debug messages finish scrolling, go to another terminal window on the same machine, and type:
-
$ radtest bob hello localhost 0 testing123
The radtest program will send a test packet to the server, and the server will respond. The server should respond with an Access-Accept message. If it doesn't, something has gone wrong, and the debugging output of the server will explain any problems.
If it does work (and it should), then almost all of the available authentication types will now work. In Version 2.0 with the test certificates, most EAP authentication types will also work, including PEAP and EAP-TTLS.
The default configuration has been designed to work in the widest possible set of circumstances. Only minor edits to the configuration files are required to enable most features. Those edits are usually limited to un-commenting a feature everywhere it is mentioned in the configuration files (e.g. use of LDAP). Then, adding a small amount of per-site configuration (e.g. point to a local LDAP server).
In general, making large changes to the default configuration files will break common use-cases. We strongly recommend using a careful process for editing the configuration files, such as the following:
- Save a backup of the current configuration.
- Make a minor edit.
- Test it.
- If it works, repeat from the top.
Of course, not all changes may work. If the changes do not behave as expected, then the configuration can be reverted to the known-working backup. The server will then continue to run with the last configuration, giving you time to understand more about how it should be configured to meet your needs.


cCollisionEvent stores all information related to the intersection (or collision) between an segment and an object. More...
#include <CCollisionBasics.h>
Public Member Functions | |
| void | clear () |
| initialize all data | |
Public Attributes | |
| cGenericObject * | m_object |
| Pointer to the collided object. | |
| cTriangle * | m_triangle |
| Pointer to collided triangle. This pointer may be NULL for collisions with non triangle based objects. | |
| cVector3d | m_localPos |
| Position of the collision point in reference to the objects coordinate frame (local coordinates). | |
| cVector3d | m_globalPos |
| Position of the collision point in world coordinates (global coordinates). | |
| cVector3d | m_localNormal |
| Surface normal at collision point in reference to the objects coordinate frame (local coordinates). | |
| cVector3d | m_globalNormal |
| Surface normal at collision point in world coordinates (global coordinates). | |
| double | m_squareDistance |
| Square distance between ray origin and collision point. | |
| cVector3d | m_adjustedSegmentAPoint |
cCollisionEvent stores all information related to the intersection (or collision) between an segment and an object.
If the position of segment A is modified to take into account motion (see m_adjustObjectMotion in cCollisionSettings), the value is stored hare.


|
hcash
2.0.0
hcash
|
Files | |
| file | AccountEntry.cpp |
| file | AccountOperations.cpp |
| file | Address.cpp |
| file | applink.c |
| file | Asset.cpp |
| file | AssetEntry.cpp |
| file | AssetOperations.cpp |
| file | BalanceEntry.cpp |
| file | BalanceOperations.cpp |
| file | Block.cpp |
| file | ChainDatabase.cpp |
| file | ChainInterface.cpp |
| file | ContractEntry.cpp |
| file | ContractOperations.cpp |
| file | EventOperations.cpp |
| file | ExtendedAddress.cpp |
| file | ForkBlocks.cpp |
| file | GenesisJson.cpp |
| file | hsrcore_lua_api.cpp |
| file | Operations.cpp |
| file | PendingChainState.cpp |
| file | PropertyEntry.cpp |
| file | PtsAddress.cpp |
| file | SlateEntry.cpp |
| file | SlateOperations.cpp |
| file | SlotEntry.cpp |
| file | StorageOperations.cpp |
| file | StorageTypes.cpp |
| file | Time.cpp |
| file | Transaction.cpp |
| file | TransactionCreationState.cpp |
| file | TransactionEntry.cpp |
| file | TransactionEvaluationState.cpp |
| file | TransactionOperations.cpp |
| file | Types.cpp |
| file | WithdrawTypes.cpp |


| Button | PS button | Action |
|---|---|---|
| W A S D | Analog stick | Player move / GUI move |
| R key | [] Square | Reload weapon |
| G key | Triangle | Drop weapon |
| Enter | Start | Game menu / Text confirm |
| Tab | Select | View statistics |
| Left mouse click | X Cross | Shoot / GUI enter |
| Right mouse click | O Circle | Swap weapon / GUI back |
| Middle mouse click | Triangle | Throw weapon |
| Left arrow | Left trigger | Rotate player counterclockwise / GUI move left tab |
| Right arrow | Right trigger | Rotate player clockwise / GUI move right tab |
| Space | X Cross | Shoot / GUI enter |
| Backspace | O Circle | Swap weapon / GUI back |
| U Key | Up | Chat |
| K Key | Right | Team Chat |
| J Key | Down | Buy weapon menu |
| Left ALT key | Change movement mode |


{include="includes"}
{include="page.header"}
Export all
: Export all links
Export public
: Export public links only
Export private
: Export private links only
{include="page.footer"}


There are two types of representations of HTTP messages, representations of request HTTP message and HTTP response message. For each type, there are two representations providing different level of access to HTTP message data, read only access and full access.
During handling of a HTTP message, the AdaptiveProxy platform distinguishes two representations of the HTTP message being handled, the representation for the original message (as received by the proxy), and the representation for the message that will be sent to the destination. The representation of the original HTTP message is always read-only. The HTTP message that is / was processed and was / will be sent could be passed as both read-only and full access representation, depending on particualr situation. To simplify the plugins API, same read-only representations (interfaces) are used for messages being processed and original messages.
Plugins are always provided with the representation for the message being processed. To make original messages available, this representation provide method that returns the representation for the original message. Since both representations are of the same interface, this method is available also for representation for original message. For that representation, the method returns self.
Read-only messages
For read-only representations of the HTTP messages,
{@link sk.fiit.peweproxy.messages.HttpRequest} for request message and
{@link sk.fiit.peweproxy.messages.HttpResponse} for response message, read-only header
representation will be available and provided
{@link sk.fiit.peweproxy.services.ServicesHandle} will serve only services
(implementations of services) that do not modify message data (header or body
data).


PRESERVATION OF A HEALTHFUL ENVIRONMENT
Section 8. The State shall have the power to promote and maintain a healthful environment, including the prevention of any excessive demands upon the environment and the State's resources. [Add Const Con 1978 and election Nov7, 1978]


Change Log
2019-12-23
Rest API
- Add interface get all orders
/api/v1/contract/batchOrder (HMAC SHA256)
get all orders.
2019-10-28
websocket
- Optimize websocket to make connections more stable
- It is recommended to use the combined streams method for connection. Each combined stream can subscribe to a maximum of 10 streams
2019-10-22
Rest API
- New contract order type:
stopLimit
,profitLimit
- User can preset the Take profit/Stop command with the trigger price, commission price, and commission quantity in advance. When the corresponding “indicator” satisfies the trigger price set by the user, the order will be triggered, then the system will submit an order according to the price and quantity set by the user
Trigger price of condition order must be:
Take Profit
- Long: when it's bullish, set the trigger price higher than the latest price (or mark price, index), you can set the sell Take profit order;
- Short: If it's bearish, set the trigger price below the latest price (or mark price, index), you can set the buy Take profit order;
Stop
- Long: when it's bearish, set the trigger price below the latest price (or mark the price, index), you can set the sell Stop order;
- Short: If it's bullish, set the trigger price higher than the latest price (or mark the price, index),you can set the buy Stop order;
When the trigger price = the latest price (or mark price, index), or no position, the Take profit/Stop order can not be set;
2019-10-15
- Document update
- Increase the log of document updates
- Add updates to frequently asked questions
2019-10-14
- Rest API
- Maximum 200 open orders per contract per account;
- Maximum 10 stop profit or stop orders per contract per account;
- When placing a new order that causes these caps to be exceeded, it will be rejected with the message “has reach max order number [200|10]
2019-10-11
- Rest API
- Add interface cancel all orders
/api/v1/contract/batchOrder (HMAC SHA256)
cancel all orders - Add interface Contract bill of obtained account
//api/v1/contract/userHistoricalTrades
Contract bill of obtained account
2019-09-27
Rest API
- New
intervalLetter
values for headers:- SECOND => S
- MINUTE => M
- HOUR => H
- DAY => D
- New Headers
X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter)
will give your current used request weight for the (intervalNum)(intervalLetter) rate limiter. For example, if there is a one minute request rate weight limiter set, you will get aX-MBX-USED-WEIGHT-1M
header in the response. The legacy headerX-MBX-USED-WEIGHT
will still be returned and will represent the current used weight for the one minute request rate weight limit. - New Header
X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter)
that is updated on any valid order placement and tracks your current order count for the interval; rejected/unsuccessful orders are not guaranteed to haveX-MBX-ORDER-COUNT-**
headers in the response.- Eg.
X-MBX-ORDER-COUNT-1S
for "orders per 1 second" andX-MBX-ORDER-COUNT-1D
for orders per "one day"
- Eg.
- GET api/v1/depth now supports
limit
5000 and 10000; weights are 50 and 100 respectively. - GET api/v1/exchangeInfo has a new parameter
ocoAllowed
.
General API
General API Information
- The base endpoint is: https://www.jex.com
- All endpoints return either a JSON object or array.
- Data is returned in ascending order. Oldest first, newest last。
- All time and timestamp related fields are in milliseconds
- HTTP
4XX
return codes are used for malformed requests; the issue is on the sender's side - HTTP
429
return code is used when breaking a request rate limit. - HTTP
418
return code is used when an IP has been auto-banned for continuing to send requests after receiving429
codes. - HTTP
5XX
return codes are used for internal errors; the issue is on jex's side. It is important to NOT treat this as a failure operation; the execution status is UNKNOWN and could have been a success. - Any endpoint can return an ERROR; the error payload is as follows:
{
"code": -1121,
"msg": "Invalid symbol."
}
- Specific error codes and messages defined in another document.
- For
GET
endpoints, parameters must be sent as aquery string
. - For
POST
,PUT
, andDELETE
endpoints, the parameters may be sent as aquery string
or in therequest body
with content typeapplication/x-www-form-urlencoded
. You may mix parameters between both thequery string
andrequest body
if you wish to do so. - Parameters may be sent in any order.
- If a parameter sent in both the
query string
andrequest body
, thequery string
parameter will be used.
LIMITS
- New intervalLetter values for headers:
- SECOND => S
- MINUTE => M
- HOUR => H
- DAY => D
- The
/api/v1/exchangeInfo
rateLimits
array contains objects related to the exchange'sRAW_REQUEST
, symbol accuracy,REQUEST_WEIGHT
, andORDER
rate limits. These are further defined in theENUM definitions
section underRate limiters (rateLimitType)
. - When a 429 is recieved, it's your obligation as an API to back off and not spam the API
- Repeatedly violating rate limits and/or failing to back off after receiving 429s will result in an automated IP ban (http status 418).
- IP bans are tracked and scale in duration for repeat offenders, from 2 minutes to 3 days
- New Headers
X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter)
will give your current used request weight for the (intervalNum)(intervalLetter) rate limiter. For example, if there is a one minute request rate weight limiter set, you will get aX-MBX-USED-WEIGHT-1M
header in the response. The legacy headerX-MBX-USED-WEIGHT
will still be returned and will represent the current used weight for the one minute request rate weight limit - New Header
X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter)
that is updated on any valid order placement and tracks your current order count for the interval; rejected/unsuccessful orders are not guaranteed to haveX-MBX-ORDER-COUNT-**
headers in the response。- Eg.
X-MBX-ORDER-COUNT-1S
for "orders per 1 second" andX-MBX-ORDER-COUNT-1D
for orders per "one day"
- Eg.
- A
Retry-After
header is sent with a 418 or 429 responses and will give the number of seconds required to wait, in the case of a 418, to prevent a ban, or, in the case of a 429, until the ban is over.。 - Wrong order accuracy does not allow ordering
Order Count Limits * To keep an orderly market, jex imposes limits on the number of open orders per account. These limits are: * Maximum 200 open orders per contract per account; * Maximum 10 stop profit or stop orders per contract per account; * When placing a new order that causes these caps to be exceeded, it will be rejected with the message “has reach max order number [200|10]”.
Other instructions The number of contract orders sells for API is uniformly negative
Endpoint security type
- Each endpoint has a security type that determines the how you will interact with it
- API-keys are passed into the Rest API via the
X-JEX-APIKEY
header - API-keys and secret-keys are case sensitive
- API-keys can be configured to only access certain types of secure endpoints. For example, one API-key could be used for TRADE only, while another API-key can access everything except for TRADE routes.
| Security Type | Description |
|---|---|
| NONE | Endpoint can be accessed freely. |
| TRADE | Endpoint requires sending a valid API-Key and signature |
| USER_DATA | Endpoint requires sending a valid API-Key and signature. |
| USER_STREAM | Endpoint requires sending a valid API-Key. |
| MARKET_DATA | Endpoint requires sending a valid API-Key. |
SIGNED (TRADE and USER_DATA) Endpoint security
SIGNED
endpoints require an additional parameter,signature
, to be sent in thequery string
orrequest body
.- Endpoints use
HMAC SHA256
signatures. TheHMAC SHA256 signature
is a keyedHMAC SHA256
operation. Use yoursecretKey
as the key andtotalParams
as the value for the HMAC operation. - The
signature
is not case sensitive. totalParams
is defined as thequery string
concatenated with therequest body
.- The parameters of signature must be transmitted in the order of interface documents.
Timing security
* A SIGNED
endpoint also requires a parameter, timestamp
, to be sent which
should be the millisecond timestamp of when the request was created and sent.
* An additional parameter, recvWindow
, may be sent to specify the number of
milliseconds after timestamp
the request is valid for. If recvWindow
is not sent, it defaults to 5000.
* The logic is as follows:
javascript
if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
// process request
} else {
// reject request
}
Serious trading is about timing. Networks can be unstable and unreliable,
which can lead to requests taking varying amounts of time to reach the
servers. With recvWindow
, you can specify that the request must be
processed within a certain number of milliseconds or be rejected by the
server.
- POST /api/v1/spot/order Examples for POST
Here is a step-by-step example of how to send a vaild signed payload from the
Linux command line using
echo
,openssl
, andcurl
.
| Key | Value |
|---|---|
| apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
| secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
| Parameters | Value |
|---|---|
| symbol | LTCBTC |
| side | BUY |
| type | LIMIT |
| timeInForce | GTC |
| quantity | 1 |
| price | 0.1 |
| recvWindow | 5000 |
| timestamp |<PHONE_NUMBER>559 |
Example 1: As a query string
- queryString: symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
- HMAC SHA256 signature:
[linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71
- curl command:
(HMAC SHA256)
[linux]$ curl -H "X-JEX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://www.jex.com/api/v1/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'
Example 2: As a request body
- requestBody: symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
- HMAC SHA256 signature:
[linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71
- curl command:
(HMAC SHA256)
[linux]$ curl -H "X-JEX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://www.jex.com/api/v1/order' -d 'symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'
Example 3: Mixed query string and request body
- queryString: symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC
- requestBody: quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
- HMAC SHA256 signature:
[linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTCquantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77
- curl command:
(HMAC SHA256)
[linux]$ curl -H "X-JEX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://www.jex.com/api/v1/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC' -d 'quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77'
Note that the signature is different in example 3. There is no & between "GTC" and "quantity=1".
Terminology
base asset
refers to the asset that is thequantity
of a symbol.quote asset
refers to the asset that is theprice
of a symbol.
ENUM definitions
Symbol status (status):
- PRE_TRADING
- TRADING
- POST_TRADING
- END_OF_DAY
- HALT
- AUCTION_MATCH
- BREAK
Symbol type:
- SPOT
- OPTION
- CONTRACT
spot and option Order status (status):
- NEW
- PARTIALLY_FILLED
- FILLED
- CANCELED
- PENDING_CANCEL (currently unused))
- FAIL
- CANCLEFILLED
- REJECTED (currently unused)
- EXPIRED (currently unused)
contract status (status):
- ENTRUSTED
- ENTRUSTING
- FAIL
- PARTFILLED
- FILLED
- CANCEL
Order types (orderTypes, type):
- LIMIT
- MARKET
- STOPLIMIT
- STOPMARKET
- PROFITLIMIT
- PROFITMARKET
Order side (side):
- BUY
- SELL
Time in force:
- GTC - Good Till Cancel
- IOC - Immediate or Cancel
- FOK - Fill or Kill
Kline/Candlestick chart intervals:
m -> minutes; h -> hours; d -> days; w -> weeks; M -> months
- 1m
- 3m
- 5m
- 15m
- 30m
- 1h
- 2h
- 4h
- 6h
- 12h
- 1d
- 1w
Rate limiters (rateLimitType)
- REQUESTS_WEIGHT
- ORDERS
- RAW_REQUESTS
Rate limit intervals (interval)
- SECOND
- MINUTE
- DAY
Endpoints for futures account
- transfer
- fee
- funding
- closPosition
- liquidation
- adl
- autoMargin
- positionSize
General endpoints
Test connectivity PING
GET /api/v1/ping
Test connectivity
Weight: 1
Parameters: NONE
Response
{}
Check server time
GET /api/v1/time
Get the current server time.
Weight: 1
Parameters: NONE
Response
{
"serverTime":<PHONE_NUMBER>595
}
Exchange information
GET /api/v1/exchangeInfo
Get the current trading rules and symbol information
Weight: 1
Parameters: NONE
Response
{
"timezone": "UTC",
"serverTime":<PHONE_NUMBER>646,
"rateLimits": [
{
"rateLimitType": "requestsWeight",
"interval": "minute",
"intervalNum": 1,
"limit": 1200
},
{
"rateLimitType": "orders",
"interval": "second",
"intervalNum": 1,
"limit": 10
},
{
"rateLimitType": "orders",
"interval": "day",
"intervalNum": 1,
"limit": 100000
},
{
"rateLimitType": "rawRequests",
"interval": "minute",
"intervalNum": 5,
"limit": 5000
}
],
"optionSymbols": [
{
"symbol": "BTCCALLM",
"status": "TRADING",
"baseAsset": "月BTC看涨0226",
"baseAssetPrecision": 0,
"quoteAsset": "USDT",
"quotePrecision": 2,
"orderTypes": [
"LIMIT"
],
"icebergAllowed": false,
"filters": [
{
"filterType": "PRICE_FILTER",
"maxPrice": "100000"
},
{
"filterType": "LOT_SIZE",
"minQty": "0.00000000"
}
]
}
],
"contractSymbols": [
{
"symbol": "BTCUSDT",
"status": "TRADING",
"baseAsset": "btc",
"baseAssetPrecision": 4,
"quoteAsset": "usdt",
"quotePrecision": 0,
"orderTypes": [
"LIMIT",
"MARKET"
],
"icebergAllowed": false,
"filters": [
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00000001000000000000",
"maxPrice": "1000000.00000000000000000000"
},
{
"filterType": "LOT_SIZE",
"minQty": "0.00010000000000000000",
"maxQty": "1000000.00000000000000000000"
}
]
}
],
"spotSymbols": [
{
"symbol": "DASHUSDT",
"status": "TRADING",
"baseAsset": "DASH",
"baseAssetPrecision": 4,
"quoteAsset": "USDT",
"quotePrecision": 2,
"orderTypes": [
"LIMIT"
],
"icebergAllowed": false,
"filters": [
{
"filterType": "PRICE_FILTER",
"maxPrice": "100000"
},
{
"filterType": "LOT_SIZE",
"minQty": "1.00000000"
}
]
}
]
}
Exchange information for options
GET /api/v1/optionInfo
Get the current trading rules and symbol information
Weight: 1
Parameters: NONE
Response
[
{
"symbol": "BTCCALLM",
"status": "TRADING",
"type": "LONGS",
"exertionTime":<PHONE_NUMBER>000,
"optionDesc": "www.jex.com",
"canRelease": true,
"releaseOption": {
"convertRatio": 0.1,
"assetMarginName": "BTC",
"rateMargin": 0.1,
"rateBase": 1,
"assetBaseName": "JEX"
}
},
{
"symbol": "BTCPUTM",
"status": "TRADING",
"type": "SHORTS",
"exertionTime":<PHONE_NUMBER>000,
"optionDesc": "www.jex.com",
"canRelease": false,
"releaseOption": null
}
]
Depth information for options
GET /api/v1/option/depth
Weight:1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| limit | INT | NO | Default 60; Max 60. Available:[5, 10, 20, 50, 60] |
Response
{
"lastUpdateId": 1027024,
"bids": [
[
"4.00000000", // PRICE
"431.00000000", // QTY
[] // IGNORE.
]
],
"asks": [
[
"4.00000200",
"12.00000000",
[]
]
]
}
Recent trades for options
GET /api/v1/option/trades
Weight:1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| limit | INT | NO | Default 60; max 60. |
Response
[
{
"price": "81.230000000000000000",
"qty": "0.001000000000000000",
"time": 0
},
{
"price": "81.230000000000000000",
"qty": "0.000400000000000000",
"time": 0
},
{
"price": "81.240000000000000000",
"qty": "0.001100000000000000",
"time": 0
}
]
Old trade lookup for options (MARKET_DATA)
GET /api/v1/option/historicalTrades
Weight:5
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| limit | INT | NO | Default 200; max 500. |
| fromId | LONG | NO | TradeId to fetch from. Default gets most recent trades |
Response
[
{
"id": "3489",
"price": "0.00001457",
"qty": "6",
"time":<PHONE_NUMBER>000,
"buyerMaker": false
},
{
"id": "3488",
"price": "0.00001464",
"qty": "2",
"time":<PHONE_NUMBER>000,
"buyerMaker": true
}
]
Kline data lookup for options
GET /api/v1/option/klines
Weight:1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| interval | ENUM | YES | "1m":minute"3m": minute"5m": minute"15m":minute"30m":minute"1h":hour"2h":hour"4h":hour"6h":"12h":hour"1d":day"3d":day"1w":week |
| startTime | LONG | NO | |
| endTime | LONG | NO | |
| limit | INT | NO | Default 500; max 1000. |
- 缺省返回最近的数据
Response
[
[
1499040000000, // Open time
"0.01634790", // Open
"0.80000000", // High
"0.01575800", // Low
"0.01577100", // Close
"148976.11427815", // Volume
1499644799999, // Close time
"2434.19055334", // Quote asset volume
308, // Number of trades
"1756.87402397", // Taker buy base asset volume
"28.46694368", // Taker buy quote asset volume
"17928899.62484339" // Ignore
]
]
Look up current average price for options
GET /api/v1/option/avgPrice
Weight:1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES |
Response
{
"mins": 5,
"price": "9.35751834"
}
Look up 24hr ticker price change statistics for options
GET /api/v1/option/ticker/24hr
Weight:
1 for a single symbol; 40 when the symbol parameter is omitted
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | NO |
Response
{
"symbol": "BNBBTC",
"priceChange": "1.00000000",
"priceChangePercent": "50.00000000",
"weightedAvgPrice": "1.88",
"lastPrice": "3.00000000",
"bidPrice": "1.00000000",
"bidQty": "5.00000000",
"askPrice": "3.00000000",
"askQty": "9.00000000",
"openPrice": "2.00000000",
"highPrice": "18.00000000",
"lowPrice": "1.00000000",
"volume": "8.00000000",
"quoteVolume": "15.00000000",
"openTime":<PHONE_NUMBER>782,
"closeTime":<PHONE_NUMBER>144，
"exertionTime":<PHONE_NUMBER>000, //Expiry Date
"performPrice": "0.0000", //Performance Price
"referencePrice": "9279.5200", //Spot Price
"exertionPrice": "7958.7100" //Strike Price
}
OR
[
{
"symbol": "BNBBTC",
"priceChange": "1.00000000",
"priceChangePercent": "50.00000000",
"weightedAvgPrice": "1.88",
"lastPrice": "3.00000000",
"bidPrice": "1.00000000",
"bidQty": "5.00000000",
"askPrice": "3.00000000",
"askQty": "9.00000000",
"openPrice": "2.00000000",
"highPrice": "18.00000000",
"lowPrice": "1.00000000",
"volume": "8.00000000",
"quoteVolume": "15.00000000",
"openTime":<PHONE_NUMBER>782,
"closeTime":<PHONE_NUMBER>144，
"exertionTime":<PHONE_NUMBER>000, //Expiry Date
"performPrice": "0.0000", //Performance Price
"referencePrice": "9279.5200", //Spot Price
"exertionPrice": "7958.7100" //Strike Price
}
]
Look up price ticker for options
GET /api/v1/option/ticker/price
Weight:
1 for a single symbol; 2 when the symbol parameter is omitted
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | NO |
- If the symbol is not sent, prices for all symbols will be returned in an array.
Response
{
"symbol": "LTCBTC",
"price": "4.00000200"
}
OR
[
{
"symbol": "LTCBTC",
"price": "4.00000200"
},
{
"symbol": "ETHBTC",
"price": "0.07946600"
}
]
## Look up Symbol order book ticker for options
`GET /api/v1/option/ticker/bookTicker`
Best price/qty on the order book for a symbol or symbols.
**Weight:**
1 for a single symbol; **2** when the symbol parameter is omitted
**Parameters:**
Name | Type | Mandatory | Description
------------ | ------------ | ------------ | ------------
symbol | STRING | NO |
* If the symbol is not sent, prices for all symbols will be returned in an array.
>**Response**
```javascript
{
"symbol": "LTCBTC",
"bidPrice": "4.00000000",//Best price for buy
"bidQty": "431.00000000",//QTY
"askPrice": "4.00000200",//Best price for sell
"askQty": "9.00000000"//QTY
}
OR
[
{
"symbol": "LTCBTC",
"bidPrice": "4.00000000",
"bidQty": "431.00000000",
"askPrice": "4.00000200",
"askQty": "9.00000000"
},
{
"symbol": "ETHBTC",
"bidPrice": "0.07946700",
"bidQty": "9.00000000",
"askPrice": "100000.00000000",
"askQty": "1000.00000000"
}
]
Account endpoints
Place order in options transaction（TRADE） (TRADE)
POST /api/v1/option/order (HMAC SHA256)
Weight:
1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| side | ENUM | YES | |
| type | ENUM | YES | LIMIT |
| quantity | DECIMAL | YES | |
| price | DECIMAL | YES | |
| newOrderRespType | ENUM | NO | Specify response type ACK , RESULT ; Default is ACK . |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Two choices for newOrderRespType
Response ACK: Returning speed is fast, trading information not included, less information
Response
{
"symbol": "JEXBTC",
"orderId": 28,
"transactTime":<PHONE_NUMBER>595
}
Response RESULT: Returning speed is slow, returning some information on taking order transaction
Response
{
"symbol": "JEXBTC",
"orderId": 2208,
"transactTime":<PHONE_NUMBER>060,
"price": "0.00001464",
"origQty": "1",
"executedQty": "0",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY"
}
Test placing order API of options transaction(TRADE)
POST /api/v1/option/order/test (HMAC SHA256)
Used for test placing order request, won’t be submitted to matchmaking trading engine
Weight: 1
Parameters:
Reference POST /api/v1/option/order
Response
{}
Check orders of options transaction(USER_DATA)
GET /api/v1/option/order (HMAC SHA256)
Check order status
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| orderId | LONG | YES |
recvWindow | LONG | NO | timestamp | LONG | YES |
Response
{
"symbol": "BTCCALLM",
"orderId": "61292",
"price": "2.00",
"origQty": "1.00",
"executedQty": "1.00",
"cummulativeQuoteQty": "2.00",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"time":<PHONE_NUMBER>000,
"updateTime":<PHONE_NUMBER>000,
"working": true
}
Cancel order for options transaction(TRADE)
DELETE /api/v1/option/order (HMAC SHA256)
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| orderId | LONG | YES | |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
{
"symbol": "BTCCALLM",
"orderId": 61299,
"transactTime":<PHONE_NUMBER>405,
"price": "2.00",
"origQty": "1",
"executedQty": "0",
"cummulativeQuoteQty": "0.00",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY"
}
Check entry orders of options transaction of this account (USER_DATA)
GET /api/v1/option/openOrders (HMAC SHA256)
Weight: 5
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| orderId | LONG | NO | Only orders after this orderID will be returned. Only partial recent orders will be returned |
| startTime | LONG | NO | |
| endTime | LONG | NO | |
| limit | INT | NO | Default 500; max 500. |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
[
{
"symbol": "JEXBTC",
"orderId": "76",
"price": "0.00001406",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"time":<PHONE_NUMBER>000,
"updateTime":<PHONE_NUMBER>000,
"working": true
}
]
Historical options entry order of the account (USER_DATA)
GET /api/v1/option/historyOrders (HMAC SHA256)
Obtain trading history of specified trading pair
Weight: 5
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| orderId | LONG | NO | Only orders after this orderID will be returned. Only partial recent orders will be returned |
| startTime | LONG | NO | |
| endTime | LONG | NO | |
| limit | INT | NO | Default 500; max 500. |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
[
{
"symbol": "BTCCALLM",
"orderId": "7",
"price": "0.02",
"origQty": "2.00",
"executedQty": "0.00",
"cummulativeQuoteQty": "0.00",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"time":<PHONE_NUMBER>000,
"updateTime":<PHONE_NUMBER>000,
"working": true
}
]
Users short options(TRADE)
POST /api/v1/option/release (HMAC SHA256)
Short options of a specified trading pair
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| amount | INT | YES | |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
{
"assetMargin": "BTC",
"assetBase": "JEX",
"assetOption": "BTCCALLM",
"releaseAmount": "17780",
"backAmount": "0",
"marginAmount": "177.8000",
"baseAmount": "17780.000",
"availableMargin": "999616.1163",
"availableBase": "267400.836",
"availableOption": "17785",
"createdDate":<PHONE_NUMBER>520
}
Users call options(TRADE)
POST /api/v1/option/back (HMAC SHA256)
Users call options of a specified trading pair
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| amount | INT | YES | |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
{
"assetMargin": "BTC",
"assetBase": "JEX",
"assetOption": "BTCCALLM",
"releaseAmount": "17780",
"backAmount": "2",
"marginAmount": "177.7800",
"baseAmount": "17778.000",
"availableMargin": "999616.1363",
"availableBase": "267402.836",
"availableOption": "17783",
"createdDate":<PHONE_NUMBER>964
}
Options positions of the account(USER_DATA)
GET /api/v1/option/position (HMAC SHA256)
Get all the positions of one specified options trading pair
Weight: 2
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | NO | |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
[
{
"name": "BTCCALLM",
"amount": "5",
"availAmount": "5",
"profit": "15.99999996",
"profitRate": "1.14285714",
"cost": "2.80",
"type": "CALL",
"execTime":<PHONE_NUMBER>000,
"execrPrice": "5.00",
"orderIndex": 0
}
]
Short & Call options information of the account(USER_DATA)
GET /api/v1/option/info (HMAC SHA256)
Get the the short & call information of one option of the account
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
{
"assetMargin": "BTC",
"assetBase": "JEX",
"assetOption": "BTCCALLM",
"releaseAmount": "17780",
"backAmount": "2",
"marginAmount": "177.78",
"baseAmount": "17778.00",
"availableMargin": "999616.1363",
"availableBase": "267402.836",
"availableOption": "17783"
}
Historical records of Short & Call options of the account (USER_DATA)
GET /api/v1/option/record (HMAC SHA256)
Short & Call Records of one specified options or all options of the account
Weight: 5
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| symbol | STRING | YES | |
| startTime | LONG | NO | |
| endTime | LONG | NO | |
| fromId | LONG | NO | Only orders after this orderID will be returned. Only partial recent orders will be returned |
| limit | INT | NO | Default 500; max 500. |
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
[
{
"createdDate":<PHONE_NUMBER>000,
"name": "BTCCALLM",
"status": 2,
"amount": "2",
"convertRatio": "0.10000000",
"rateMargin": "0.10",
"baseAmount": "2.000",
"marginAmount": "0.0200",
"assetMargin": "BTC",
"assetBase": "JEX",
"id": 21821
}
]
Account information(USER_DATA)
GET /api/v1/account (HMAC SHA256)
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| recvWindow | LONG | NO | |
| timestamp | LONG | YES |
Response
{
"updateTime":<PHONE_NUMBER>000
"contractBalances": [
{
"asset": "usdt",
"canDeposit": false,
"canTrade": true,
"canWithdraw": false,
"free": "8144.0412",
"locked": "1855.3288"
}
],
"optionBalances": [
{
"asset": "BCXBTC01",
"canDeposit": false,
"canTrade": true,
"canWithdraw": false,
"free": "0",
"locked": "0"
}
],
"spotBalances": [
{
"asset": "BTC",
"canDeposit": true,
"canTrade": true,
"canWithdraw": false,
"free": "999616.1363",
"locked": "0.7219"
}
],
}
User Data Streams
- The base API endpoint is: https://www.jex.com
- A User Data Stream
listenKey
is valid for 60 minutes after creation. - Doing a
PUT
on alistenKey
will extend its validity for 60 minutes. - Doing a
DELETE
on alistenKey
will close the stream. - The base websocket endpoint is: wss://ws.jex.com
- User Data Streams are accessed at /ws/<listenKey>
- A single connection to stream.jex.com is only valid for 24 hours; expect to be disconnected at the 24 hour mark
User data stream payloads are not guaranteed to be in order during heavy periods; make sure to order your updates using E
Specifics on how user data streams work.
For detailed subscription method, please refer to another websocket document.
Start user data stream (USER_STREAM)
POST /api/v1/userDataStream
Start a new user data stream. The stream will close after 60 minutes unless a keepalive is sent.
Weight: 1
Parameters: NONE
Response
{
"listenKey": "pqia91ma19a5s61cv6a81va65sdf19v8a65a1a5s61cv6a81va65sdf19v8a65a1" //用于订阅的数据流名
}
Keepalive (USER_STREAM)
PUT /api/v1/userDataStream
Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 30 minutes.
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| listenKey | STRING | YES |
Response
{}
Close user data stream (USER_STREAM)
DELETE /api/v1/userDataStream
Weight: 1
Parameters:
| Name | Type | Mandatory | Description |
|---|---|---|---|
| listenKey | STRING | YES |
Response
{}
Account updates
- Event type of account updates is fixed to
accountSpotInfo
ANDaccountOptionInfo
ANDaccountContractInfo
They respectively refers to the asset related event of spot, options and futures. When there is a change of asset, relevant event will be pushed
Response
{
"e": "accountSpotInfo", // Event type
"E":<PHONE_NUMBER>849, // Event time
"m": 0, // Fee rate of entry order
"t": 0, // Fee rate of taking order
"u":<PHONE_NUMBER>848, // Time stamp of
"B": [ // Balance
{
"a": "LTC", // Asset name
"o": "1.57", // Order Margin（Only Furtures）
"p": "0" ， // Position Margin（Only Furtures ）
"f": "17366.18538083", // Free amount
"l": "0.00000000", // Locked amount
"T": true, // Can trade
"W": true, // Can withdraw
"D": true, // Can deposit
},
{
"a": "BTC",
"f": "10537.85314051",
"l": "2.19464093",
"T": true, // Can trade
"W": true, // Can withdraw
"D": true, // Can deposit
},
{
"T": true, // Can trade
"W": true, // Can withdraw
"D": true, // Can deposit
"a": "ETH",
"f": "17902.35190619",
"l": "0.00000000"
}
]
}
Update of orders
- Account state is updated with the outboundAccountInfo event.
event type is execSpotReport
AND execOptionReport
AND execContractReport
They respectively refers to the asset related event of spot、options、futures Event type
Possible executive type of contract(X field)
Response of spot and options:
{
"E":<PHONE_NUMBER>849, // Event time
"e": "execSpotReport", // Event type
"s": "JEXBTC", // Symbol
"S": "BUY", // Order direction
"q": "1.00000000", // Order quantity
"p": "0.10264410", // Order price
"X": "NEW", // Current order state
"i": 4293153, // ID Order ID
"z": "0.00000000", // Cumulative filled quantity
"O":<PHONE_NUMBER>657, // Transaction time
"Z": "0.00000000", // Total transaction sum
}
Possible executive type of spot and options (X field):
- NEW
- PARTIALLY_FILLED
- FILLED
- CANCELED
- FAIL
- CANCLEFILLED
Response contract :
{
"E":<PHONE_NUMBER>849, // Event time
"e": "execContractReport", // Event type
"s": "ETHBTC", // Symbol (Not exist if refused)
"X": "NEW", // Current state of the order
"r": "NONE", // Refused reason of the order ( exist if refused)
"i": 4293153, // Order ID
"z": "0.00000000", // Cumulative filled quantity (Not exist if refused)
"Z": "0.00000000", // Cumulative filled sum(Not exist if refused)
}
Possible executive type of contract(X field):
- ENTRUSTED
- ENTRUSTING
- FAIL
- PARTFILLED
- FILLED
- CANCEL
Response example if refused:
{
E:<PHONE_NUMBER>289
X: "FAIL"
e: "execContractReport"
i: "4612616205276108403"
r: "insufficient Available"
}
if refused(R field)
- insufficient Available
- too many pending requests
- position is being liquidated
- position is being closed
- closing empty position
- closing order is enough
- contract is disabled
- reach liquidation price
- reach risk limit
Contract positions
- Where there is a change in contract position
- event type is contractPositions
Response:
{
"E":<PHONE_NUMBER>078,
"e": "contractPositions",
"p": [{
"M": "100", // Largest leverage available
"R": "3903.99060000", // Used risk limits
"S": "0", // sell Entrusted value
"a": "20", // Auto-deleverage sequence
"b": "0", // buy Entrusted value
"c": "1301.33020000", //Open price
"d": "longs", //Direction
"i": "0.05", //Initial margin
"l": "-49.9759", //Close price
"m": "0.005", //Maintenance Margin
"n": "0", //Current entrusted value
"o": "4088.0779300000", //Margin
"q": "3.0000",//Holding positions
"r": "900000",//Current risk value
"s": "EOSUSDT",//Symbol
"t": "3903.99060000", //Holding positions costs value
"v": "20.00"//Leverage
}]
}
Web Socket Streams
General WSS information
- The base endpoint is: wss://ws.jex.com
- Streams can be accessed either in a single raw stream or in a combined stream
- Raw streams are accessed at /ws/<streamName>
- Combined streams are accessed at /stream?streams=<streamName1>/<streamName2>/<streamName3>
- Combined stream events are wrapped as follows: {"stream":"<streamName>","data":<rawPayload>}
- All symbols for streams are lowercase
- A single connection to stream.jex.com is only valid for 24 hours; expect to be disconnected at the 24 hour mark
- The websocket server will send a
ping frame
every 3 minutes. If the websocket server does not receive apong frame
back from the connection within a 10 minute period, the connection will be disconnected. Unsolicitedpong frames
are allowed. - WSS contract order sells are uniformly negative
- It is recommended to use the combined streams method for connection. Each combined stream can subscribe to a maximum of 10 streams
Stream Detailed Stream information
Websocket Trade Streams
- Every 100 ms push, every single transaction in the last second is defined as a transaction between only one order taker and one bill holder.
Stream Name: <symbol>@<tradeType>
Response
[{
"e": "spotTrade", // Event type
"E": 123456789, // Event time
"s": "JEXBTC", // Symbol
"t": 12345, // Trade ID
"p": "0.001", // Price
"q": "100", // Quantity
"T": 123456785, // Trade time
"m": true, // Is the buyer the market maker?If true，this is a seller order，otherwise it is a buyer order.
},{...},...
]
tradeType
- Support 3 types as below:
- spotTrade
- optionTrade
- contractTrade
Websocket Kline/Candlestick Streams
The Kline/Candlestick Stream push updates to the current klines/candlestick every second
Booking Kline requires interval parameter, shortest one is minute line, longest one is week line. Support intervals as below:
- 1M
- 5M
- 15M
- 30M
- 1H
- 4H
- 1D
- 1W
Stream Name: <symbol>@<klineType>_<interval>
Response
{
"e": "spotKline", // Event type
"E": 123456789, // Event time
"s": "JEXBTC", // Symbol
"k": {
"t": 123400000, // Kline start time
"T": 123460000, // Kline close time
"s": "JEXBTC", // Symbol
"i": "1m", // Interval
"o": "0.0010", // Open price
"c": "0.0020", // Close price
"h": "0.0025", // High price
"l": "0.0015", // Low price
"v": "1000", // Base asset volume
"q": "1.0000", // Quote asset volume
}
}
klineType
-Support types - spotKline - optionKline - contractKline
Individual Symbol Mini Ticker Stream
- 24hr rolling window mini-ticker statistics for a single symbol pushed every second.
Stream Name: <symbol>@<miniTickerType>
Response
{
"e": "24hrSpotMiniTicker", // Event type
"E": 123456789, // Event time
"s": "JEXBTC", // Symbol
"c": "0.0025", // Close price
"h": "0.0025", // High price
"o": "0.0025", // Open price
"l": "0.0010", // Low price
"m": "10000", // mark price(Only contractMiniTicker have)
"i": "10000", // index price(Only contractMiniTicker have)
"v": "10000", // Base asset volume
"q": "18" // Total traded quote asset volume
}
miniTickerType
- Support types:
- spotMiniTicker
- optionMiniTicker
- contractMiniTicker
All Market Mini Tickers Stream
- 24hr rolling window mini-ticker statistics for all symbols that changed in an array pushed every second
StreamName: !<miniTickerType>@arr
Response
[
{
// Same as <symbol>@miniTicker payload
}
]
miniTickerType
- Support types:
- spotMiniTicker
- optionMiniTicker
- contractMiniTicker
Individual Symbol Ticker Streams
- 24hr rollwing window ticker statistics for a single symbol pushed every second.
Stream Name: <symbol>@<tickerType>
Response
{
"e": "24hrSpotTicker", // Event type
"E": 123456789, // Event time
"s": "JEXBTC", // Symbol
"p": "0.0015", // Price change in 24h
"P": "250.00", // Price change in 24h percent
"c": "0.0025", // Last price
"h": "0.0025", // Highest price in 24h
"l": "0.0010", // Lowest price in 24h
"v": "10000", // Trade volume in 24h
"q": "18", // Trade asset in 24h
"m": "10000", // mark price(Only contractMiniTicker have)
"i": "10000", // index price(Only contractMiniTicker have)
"O":<PHONE_NUMBER>, // TODO 0 Starting time
"C": 86400000, // TODO 3600*24*1000，milliseconds in 24h ending time
}
All Market Tickers Stream
24hr rolling window ticker statistics for all symbols that changed in an array pushed every second.
StreamName: !<tickerType>@arr
Payload:
[
{
//Same as <symbol>@ticker payload
}
]
- tickerType
- spotTicker
- optionTicker
- contractTicker
Partial Book Depth Streams
- Top
bids and asks, pushed every second. Valid are 5, 10, or 20.
Stream Name: <symbol>@<depthType><levels>
Response :
{
"bids": [ // Buy
[
"0.0024", // Price
"10", // Quantity
]
],
"asks": [ // Sell
[
"0.0026", // Price
"100", // Quantity
]
]
}
- depthType
- spotDepth
- optionDepth
- contractDepth
- levels
- 5
- 10
- 20
Diff. Depth Stream
- Order book price and quantity depth updates used to locally manage an order book pushed every second.
Stream Name: <symbol>@<depthType>
Response :
{
"e": "spotDepthUpdate", // Event type
"s": "JEXBTC", // Symbol
"v": 157, // Version to be updated
"b": [ // Changing depth for buyer
[
"0.0024", // Price
"10", // Quantity
]
],
"a": [ // Changing depth for seller
[
"0.0026", // Price
"100", // Quantity
]
]
}
- depthType Support types
- spotDepth
- optionDepth
- contractDepth
- Types for Depth Streams
- spotDepthUpdate
- optionDepthUpdate
- contractDepthUpdate
Error Codes
JEX Rest接口(包括wapi)返回的错误包含两部分，错误码与错误信息. 错误码是大类，一个错误码可能对应多个不同的错误信息。
以下是一个完整错误码实例
javascript
{
"code":-1121,
"msg":"Invalid symbol."
}
-1
- 失败 fail #### 0
- 成功 success #### -5
- ip非法调用 fail #### -6
- method非法调用 fail
10xx - 服务器或网络问题
-1000 未知错误
- 未知错误
-1001 连接断开
- 通常是一个内部错误，一般重试即可解决。
-1002 未授权
- 请检查你的(API)权限
-1003 请求过多
- 请求过于频繁超过限制。如果导致了IP地址被封禁，错误消息中会给出解封时间。解决这类问题建议减少rest接口轮询，多采用websocket接收事务消息推送。
-1006 非常规响应
- （从内部）接收到了不符合预设格式的消息，下单状态未知。
-1007 超时
- 后端服务超时，下单状态未知。
-1014 不支持的订单参数(组合)
- 不支持的订单参数组合.
-1015 订单太多
- 下单(撤单)太多
-1016 服务器下线
- 服务器下线
-1020 不支持的操作
- 不支持的操作
-1021 时间同步问题
- 时延过大，服务器根据接请求中的时间戳判定耗时已经超出了recevWindow。请改善网络条件或者增大recevWindow。
- 时间偏移过大，服务器根据请求中的时间戳判定客户端时间比服务器时间提前了1秒钟以上。(该参数不可由客户端调节)
-1022 签名不正确
- 请求中携带的signature与服务器根据规则计算得到的signature不一致。通常是因为客户端代码中使用的apisecret错误。
11xx - 请求内容中的问题
-1100 非法字符
- Illegal characters found in a parameter.
- Illegal characters found in parameter '%s'; legal range is '%s'.
- Illegal characters found in parameter '%s' value '%s'
-1101 参数太多
- Too many parameters sent for this endpoint.
- Too many parameters; expected '%s' and received '%s'.
- Duplicate values for a parameter detected.
-1102 缺少必须参数
- A mandatory parameter was not sent, was empty/null, or malformed.
- Mandatory parameter '%s' was not sent, was empty/null, or malformed.
- Param '%s' or '%s' must be sent, but both were empty/null!
-1103 无法识别的参数
- An unknown parameter was sent.
-1104 冗余参数
- Not all sent parameters were read.
- Not all sent parameters were read; read '%s' parameter(s) but was sent '%s'.
-1105 空参数(仅有参数名)
- A parameter was empty.
- Parameter '%s' was empty.
-1106 非必需参数
- A parameter was sent when not required.
- Parameter '%s' sent when not required.
-1111 精度过高
- Precision is over the maximum defined for this asset.
-1112 空白的orderbook
- No orders on book for symbol.
-1114 错误地发送了不需要的TIF参数
- TimeInForce parameter sent when not required.
-1115 无效的TIF参数
- Invalid timeInForce.
-1116 无效的订单类型
- Invalid orderType.
-1117 无效的订单方向
- Invalid side.
-1118 空白的newClientOrderId
- New client order ID was empty.
-1119 空白的originalClientOrderId
- Original client order ID was empty.
-1120 无效的间隔(interval)
- Invalid interval.
-1121 无效的交易对
- Invalid symbol.
-1125 无效的listenKey
- This listenKey does not exist.
-1127 开始结束时间错误
- endTime befor startTime or More than '%s' between startTime and endTime.
- endTime befor startTime
-1128 无效的可选参数组合
- Combination of optional parameters invalid.
-1129 下单小数位错误
- error scale in parameter '%s',should be scale no more than '%s'
-2010 订单被拒绝
- NEW_ORDER_REJECTED
-2011 订单取消被拒绝
- CANCEL_REJECTED
-2012 不存在的订单
- Order does not exist.
-2013 不存在的订单
- Order does not exist.
-2014 API Key格式无效
- API-key format invalid.
-2015 API Key权限，例如该Key不存在、请求并非来自允许的IP范围、或者该接口对应权限未开放
- Invalid API-key, IP, or permissions for action.
-2016 NO_TRADING_WINDOW
- No trading window could be found for the symbol. Try ticker/24hrs instead. ### -2019 ORDER_NUMBER_MAX 达到此订单类型的最大的当前委托
- reach max order number
-1010 收到了错误消息
这个错误代码是由撮合引擎抛出的，引擎还会抛出2010和2011，具体原因需要参考下面列出的具体消息
| 错误消息 | 描述 |
|---|---|
| "Unknown order sent." | 找不到订单， (根据请求里发送的 orderId , clOrdId , origClOrdId ) |
| "Duplicate order sent." | 客户自定义的订单号重复了 |
| "Market is closed." | 该交易对交易关闭了 |
| "Account has insufficient balance for requested action." | 账户金额不足。 |
| "Market orders are not supported for this symbol." | 该交易对无法发起市价单 |
| "Price * QTY is zero or less." | 订单金额必须大于0 |
| "IcebergQty exceeds QTY." | 冰山订单中小订单的Quantity必须小于总的Quantity |
| "This action disabled is on this account." | 账户被封禁，联系客服 |
| "Unsupported order combination" | orderType , timeInForce , stopPrice , 某些参数取某些值的时候另一些参数必须/不得提供。 |
| "Cancel order is invalid. Check origClOrdId and orderId." | 撤销订单必须提供origClOrdId 或者orderId 中的一个。 |
| "Order would immediately match and take." | LIMIT_MAKER 订单如果按照规则会成为Taker，就会报此错。 |
-6000
- 禁止交易 user prohibit trade
-7001
- 转移保证金失败 Transfer margin error.
-7002
- 调整杠杆失败 Set leverage error.
-7003
- 设置风险值失败 Set risk limit error.
-7004
- 下单失败 Please try it later.
-7005
- 撤单失败 Cancel error, Please try it later.
-7006
- 超过风险限额 Over risk.
-7007
- 可用资产不足 asset not enough
-7008
- 可用保证金不足 margin not enough
-7009
- 发行数量已达到平台风控限额 system asset not enough
-7010
- 杠杆过大 Contract leverage too large
-7011
- 杠杆过小 Contract leverage too small
-7012
- 期权不存在 option not exist
-7013
- 期权行权时间已过 passed option exercise time
-7014
- 无可赎回期权,请先发行期权 no release option
-7015
- 赎回数量大于可赎数量 back amount greater than release amount
-7016
- 保证金冻结异常，请联系客服 margin anomaly
-7017
- 杠杆过大 Contract leverage too large,must smaller than 100
-7018
- 杠杆过小 Contract leverage too small,must larger than 1
-7019
- 平仓失败 Liquidation fail
-7020
- 仓位不存在 Contract position not exists
-8xxx 提现错误
-8000
- 提现数量错误 withdraw amount error
-8001
- 禁止提现 withdraw is forbidden
-8002
- 提现费率错误 withdraw fee error
-8003
- 提现地址错误 withdraw address error
-8004
- 资产不足 your balance is not enough
-8005
- 超过提币额度 withdraw day amount is limited
-8006
- 资产错误或资产不支持提现 withdraw asset error
-9xxx 订单未能通过过滤器
| 错误信息 | 描述 |
|---|---|
| "Filter failure: PRICE_FILTER" | 检查价格的上限、下限、步进间隔。 |
| "Filter failure: PERCENT_PRICE" | 检查订单中价格是否相对于过去N分钟的平均价格变动超过了百分之X。 |
| "Filter failure: LOT_SIZE" | 检查订单中数量的上限、下线、步进间隔。 |
| "Filter failure: MIN_NOTIONAL" | price * quantity ，也就是订单金额，是否超过了最小值。 |
| "Filter failure: MARKET_LOT_SIZE" | 与LOT_SIZE含义一致，只是对市价单生效。 |
| "Filter failure: MAX_NUM_ORDERS" | 账户在该交易对下最多挂单数。 |
| "Filter failure: EXCHANGE_MAX_NUM_ORDERS" | 账户在全交易所最多的挂单数。 |
-9000 下单被拒
- 下单被拒 校验参数