汇丰汇款到香港汇丰银行为什么 pending execute

java.lang.IllegalStateException: Recursive entry to executePendingTransactions - libuyi - 博客园
【解决办法】:
将getFragmentManager改为getChildFragmentManager即可为什么AsyncTask调用execute方法后很久才执行doInBackground方法?? - 简书
为什么AsyncTask调用execute方法后很久才执行doInBackground方法??
最近在项目中遇到一个比较奇葩的问题, 就是AsyncTask执行了execute方法之后, doInBackground方法很久才得到掉调用. 我们都知道doInBackground方法是在子线程中执行的, 而execute方法执行的线程(一般是在UI线程)肯定与doInBackground方法执行的线程不同.从execute方法执行的线程切换到doInBackground方法执行的线程为什么会耗时这么久??毫无疑问这是一个线程调度的问题. 我们不应该怀疑系统调度有问题, 那么剩下的只有我们自己调度的问题......
项目里有一个强制更新的功能, 如下图:
强制更新-未点击按钮
点击强制更新按钮后会显示进度调(正常情况), 如下图:
强制更新-下载中
点击"强制更新"按钮后, 按钮被禁止点击:downloadApkBtn.setClickable(true);但是按钮没有变灰, 按钮上的文本也没改成"正在下载..."因此在某些手机上就出现这样的情况:
点击按钮后, 如图一, ProgressBar进度不动, 而且再点击按钮就没有反应了(按钮设置过selector, 是有按压效果的),
给用户感觉就是: 应用卡顿死掉了
初步怀疑是网络问题, 于是把网络连等相关步骤所耗的时间打印出来. 数据显示, 就算网络非常慢, 也不会花费十多秒的时间. (并且连接也有超时限制, 如果很久不能连接上, 那么就会超时, 总会得到一个结果) 有问题的手机, 点击按钮到进度条动起来的时间有几十秒, 甚至几分钟, 有的就一直卡着不动了. 对于用户来说, 几秒或者十几秒不动, 就直接退出了, 或者......
在调试中发现, 点击按钮后很久, doInBacground()方法中的日志输出都没打印出来. 因此可以得出结论: doInBackground()方法所在的线程没有执行.于是我把execute()方法执行到doInBackground()方法执行之间的时间也打印出来, 代码如下:
private volatile long start_
private void downloadApk() {
start_time = System.currentTimeMillis();
new DownloadApkTask().execute();
class DownloadApkTask extends AsyncTask&Void, Integer, Boolean& {
protected Boolean doInBackground(Void... params) {
Log.e("_ajk_", "schedule time cast: " + ((System.currentTimeMillis() - start_time) / 1000.0));
//省略 ......
多次执行启动-&点击强制更新按钮-&退出动作, 日志输出如下:
macbook-stonedeMacBook-Pro:~ stone$ adb logcat *:E | grep schedule
(25685): schedule time cost: 0.014
(25685): schedule time cost: 21.618
(25685): schedule time cost: 27.859
(25685): schedule time cost: 0.004
(25685): schedule time cost: 38.368
(25685): schedule time cost: 10.722
(25685): schedule time cost: 1.66
(25685): schedule time cost: 45.632
(25685): schedule time cost: 25.374
(25685): schedule time cost: 23.161
(25685): schedule time cost: 28.733
(25685): schedule time cost: 44.852
(25685): schedule time cost: 62.171
(25685): schedule time cost: 93.201
(25685): schedule time cost: 95.367
(25685): schedule time cost: 108.974
(25685): schedule time cost: 122.609
(25685): schedule time cost: 129.158
(25685): schedule time cost: 134.632
为什么doInBackground()方法所在线程不能及时执行呢?
查看AsyncTask类源码, 发现AsyncTask里面是使用线程池来执行异步任务的, AsyncTask有两个方法来执行移步任务:
@MainThread
public final AsyncTask&Params, Progress, Result& execute(Params... params) {
return executeOnExecutor(sDefaultExecutor, params);
@MainThread
public final AsyncTask&Params, Progress, Result& executeOnExecutor(Executor exec,
Params... params) {
if (mStatus != Status.PENDING) {
switch (mStatus) {
case RUNNING:
throw new IllegalStateException("Cannot execute task:"
+ " the task is already running.");
case FINISHED:
throw new IllegalStateException("Cannot execute task:"
+ " the task has already been executed "
+ "(a task can be executed only once)");
mStatus = Status.RUNNING;
onPreExecute();
mWorker.mParams =
exec.execute(mFuture);
execute()方法使用的是AsyncTask内部定义的默认线程池, executeOnExecutor()使用的是开发者自定义的线程池. 我们来看看AsyncTask内部自定义的程池到底是什么?AsyncTask内部定义的默认线程池是SerialExecutor, SerialExecutor及其相关变量的定义如下:
private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
private static final int CORE_POOL_SIZE = CPU_COUNT + 1;
private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;
private static final int KEEP_ALIVE = 1;
private static final ThreadFactory sThreadFactory = new ThreadFactory() {
private final AtomicInteger mCount = new AtomicInteger(1);
public Thread newThread(Runnable r) {
return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
private static final BlockingQueue&Runnable& sPoolWorkQueue =
new LinkedBlockingQueue&Runnable&(128);
* An {@link Executor} that can be used to execute tasks in parallel.
public static final Executor THREAD_POOL_EXECUTOR
= new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);
* An {@link Executor} that executes tasks one at a time in serial
This serialization is global to a particular process.
public static final Executor SERIAL_EXECUTOR = new SerialExecutor();
private static volatile Executor sDefaultExecutor = SERIAL_EXECUTOR;
private static class SerialExecutor implements Executor {
final ArrayDeque&Runnable& mTasks = new ArrayDeque&Runnable&();
Runnable mA
public synchronized void execute(final Runnable r) {
mTasks.offer(new Runnable() {
public void run() {
} finally {
scheduleNext();
if (mActive == null) {
scheduleNext();
protected synchronized void scheduleNext() {
if ((mActive = mTasks.poll()) != null) {
THREAD_POOL_EXECUTOR.execute(mActive);
从SerialExecutor这个名字可以看出, 它是一个顺序执行任务的执行器. 实际上SerialExecutor并不去执行任务, 它的execute()方法会委托AsyncTask内部定义的一个线程池去执行任务, 这个默认线程池(THREAD_POOL_EXECUTOR)的定义上面已经给出.
THREAD_POOL_EXECUTOR是一个可同时处理处理器个数+1个任务的线程池. 然而使用execute()方法执行AsyncTask时, 并没什么卵用, 因为SerialExecutor的execute()方法会对异步任务进行封装, 使得任务顺序执行, 跟在同一个线程中执行一样, 从而失去并发处理特性.
如果有一个耗时任务正在执行, 那么后续任务将会一直等待前面的任务完成. 因此:
AsyncTask虽然是异步任务, 这个异步指的是与ui线程异步. 如果你想要并发执行多个任务, execute()方法不能实现, executeOnExecutor()方法可以达到目的 (必须提供正确的Executor) ----- 异步跟并发并非同一个概念.
经过上面的分析可以得知, 下载apk的异步任务之前肯定有一个耗时任务在执行, 因此导致下载apk的异步任务一直处于等待队列之中而得不到执行.
那么如何进行验证呢?
我们通过DDMS来查看线程状态, 看看在下载任务之前是有正在处理的任务, 操作如下:启动DDMS, 在DDMS窗口左侧的Devices视图中选择我们要调试的进程, 然后点击顶部的Update Threads按钮,
这时我们可以在右侧的Threads视图中看到我们选中的进程的所有线程信息, 如图:
使用DDMS查看线程状态
查看AsyncTask类的源码, 我们知道AsyncTask默认线程池中的工作线程的命名格式是AsyncTask #index (index大小为 1~线程池的coreSize),
因此我们看名称为AsyncTask开头的线程就行了 (不得不吐槽一下DDMS做的太烂, 居然不能按线程名排序或分类, 如果线程多了, 那就AsyncTask使用的线程中间就会夹杂其他线程, 这给观察带来不便), 选中某个线程后下面的状态框中会输出此线程的堆栈信息.
通过DDMS查看线程状态, 发现出问题时有一个AsyncTask线程处于Native状态, Native状态是什么鬼? 关于线程状态可参考 , 此文对Native状态的说明是:
native – executing native code
– 执行了原生代码,这个对于 带有消息队列的线程是正常的状态,表示消息队列没有任何消息,线程在native 代码中进行无限循环,直到消息队列中出现新的消息,消息队列才会返回 代码处理消息。
呃, 线程在native代码中进行无限循环......
我猜想是native层导致某个task的运行一直处于阻塞状态, 这样后面的task也就无法执行, 查看处于native状态的线程的堆栈信息, 如下:
at libcore.io.Posix.recvfromBytes(Native Method)
at libcore.io.Posix.recvfrom(Posix.java:141)
at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
at libcore.io.IoBridge.recvfrom(IoBridge.java:550)
at java.net.PlainSocketImpl.read(PlainSocketImpl.java:506)
at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:134)
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:174)
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:188)
at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:121)
at org.apache.http.conn.BasicManagedEntity.streamClosed(BasicManagedEntity.java:179)
at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:266)
at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:213)
at com.anjuke.android.newbroker.activity.AutoUpdateActivity$DownloadApkTask.closeInputStream(AutoUpdateActivity.java:345)
at com.anjuke.android.newbroker.activity.AutoUpdateActivity$DownloadApkTask.doInBackground(AutoUpdateActivity.java:289)
at com.anjuke.android.newbroker.activity.AutoUpdateActivity$DownloadApkTask.doInBackground(AutoUpdateActivity.java:202)
at com.anjuke.android.newbroker.util.image.AsyncTask$2.call(AsyncTask.java:337)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at com.anjuke.android.newbroker.util.image.AsyncTask$SerialExecutor$1.run(AsyncTask.java:279)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:848)
在堆栈中发现了这个com.anjuke.android.newbroker.util.image.AsyncTask, 这个类其实是从考过来的, 查看源码发现跟系统的区别不大, 只是对默认线程池进行了版本处理(android 11以下的版本使用单线程来处理异步任务), 代码如下:
* An {@link Executor} that executes tasks one at a time in serial order.
* This serialization is global to a particular process.
public static final Executor SERIAL_EXECUTOR = Utils.hasHoneycomb() ? new SerialExecutor() :
Executors.newSingleThreadExecutor(sThreadFactory);
根据堆栈信息可以得知, 关闭下载输入流时, 系统阻塞了, 这是非正常关闭输入流, 它是这样发生的:
启动App, 点击强制更新按钮, 这时正在下载文件了, 然后退出退出App (用户下载了一半, 可能不想下载了), 这时就会关闭输入流. 这时的输入流中的数据还没读完, 这样关闭入流就会阻塞 (会不会等待数据读取完毕在关闭??). 再启动app时, 再点击强制更新按钮, 这时启动的下载任务会一直等待前一个下载任务关闭输入流完成.
--- 退出APP, APP的进程并没有杀掉( 除非用户按HOME键手动划掉应用或在系统设置的应用管理中强制结束进程, 用户一般不会这么做), 因此下一次启动的APP和上一次启动的APP会共用AsyncTask的线程池.
我们还是用数据说话, 我在程序中打印了关闭输入流的时间, 代码如下:
private void closeInputStream(InputStream inputStream) throws IOException {
if (inputStream != null) {
long startTime = System.currentTimeMillis();
inputStream.close();
Log.e("_close_", "close inputstream cost: " +((System.currentTimeMillis() - startTime) / 1000.0) + "s");
inputStream =
运行调试, 输出信息如下 (反复启动同一个app, 进程是同一个 从下面的日志中可以看出, 圆括号中的为进程ID --- 杀过一次进程):
macbook-stonedeMacBook-Pro:~ stone$ adb logcat *:E | grep _close_
E/_close_ (20394): close inputstream cost: 76.06s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 30.284s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 31.251s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 28.734s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 27.762s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 35.533s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 25.023s
E/_close_ (20394): close inputstream cost: 0.001s
E/_close_ (20394): close inputstream cost: 17.888s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 17.883s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (20394): close inputstream cost: 23.678s
E/_close_ (20394): close inputstream cost: 0.0s
E/_close_ (21037): close inputstream cost: 134.213s
E/_close_ (21037): close inputstream cost: 0.0s
E/_close_ (21037): close inputstream cost: 56.464s
E/_close_ (21037): close inputstream cost: 0.0s
E/_close_ (21037): close inputstream cost: 40.104s
E/_close_ (21037): close inputstream cost: 0.0s
E/_close_ (21037): close inputstream cost: 34.067s
E/_close_ (21037): close inputstream cost: 0.0s
由于doInBackground中多次调用了closeInputStream方法, finally块中关闭输入流时间为0. doInBackground方法的基本逻辑如下:
protected Boolean doInBackground(Void... params) {
InputStream inputStream =
// 省略 ......
// 省略 ......
if (inputStream != null) {
while (!isCancelDownload && !isFinishing()) {
//download apk file .......
closeInputStream(inputStream);
} catch (Exception e) {
// 省略 ......
} finally {
closeInputStream(inputStream);
} catch (IOException e) {
// 省略 ......
还有一个问题就是, 用户启动一次发现下载不了, 就有退出,
那么这一动作就会加入一个下载任务, 如果用户反复执行这一动作, 那么AsyncTask的默认线程池中就会堆积越来越多的下载任务, 而execute()方法导致任务顺序执行, 这样关闭输入流的时间也会累积起来, 也就是启动次数越多, 下载任务等待的时间就会越久. 由于AsyncTask是自定义的, 所以我可以更改源码, 因此我在AsyncTask中加入了Log语句Log.e("_size_", "pending size: " + mTasks.size());, 输出等待执行的任务数量, 更完整的代码如下:
@TargetApi(11)
private static class SerialExecutor implements Executor {
final ArrayDeque&Runnable& mTasks = new ArrayDeque&Runnable&();
Runnable mA
public synchronized void execute(final Runnable r) {
mTasks.offer(new Runnable() {
public void run() {
} finally {
scheduleNext();
if (mActive == null) {
scheduleNext();
Log.e("_size_", "pending size: " + mTasks.size());
protected synchronized void scheduleNext() {
if ((mActive = mTasks.poll()) != null) {
THREAD_POOL_EXECUTOR.execute(mActive);
多次执行启动-点击强制更新按钮-退出动作, log日志如下:
macbook-stonedeMacBook-Pro:~ stone$ adb logcat *:E | grep _size_
(21890): pending size: 0
(21890): pending size: 1
(21890): pending size: 2
(21890): pending size: 2
(21890): pending size: 3
(21890): pending size: 4
(21890): pending size: 5
(21890): pending size: 6
(21890): pending size: 7
日志说明上面的分析是正确的,
任务的确会积累在等待队列中.
至此问题已经分析完毕 !
解决办法: 使用AsyncTask的executeOnExecutor()方法来执行异步任务,且为executeOnExcutor()方法提供一个合理的线程池, 或者直接用Thread来执行下载任务.
AsyncTask的execute()方法是顺序执行异步任务的 (相当于Executors.newSingleThreadExecutor()), 每次只执行一个任务.
如果要并发执行多个异步任务, 必须使用AsyncTask的executeOnExecutor()方法, 且必须提供正确的线程池.
建议: 尽量不要使用AsynTask的execute()方法来执行异步任务.
如果要使用execute()方法来执行异步任务, 你必须确定这个异步任务无论正常执行/或异常执行都不会耗时 (如果耗时, 会导致后续异步任务得不到及时执行), 且你并不关心它什么时候执行 (因为你无法确认在你执行异步任务之前别人是否已经使用execute()方法执行了一个耗时的异步任务).
如有错误, 欢迎指正!
Read the fucking source code !FAQ - HSBC Hong Kong
Service registration related questions
Trading related questions
Service registration related questions
1:Who can enjoy HSBC's U.S. Stock Trading Service?
HSBC's U.S. Stock Trading Service is eligible for non-U.S. personal customers with:
- a valid Investment Services account (which is attached to an HSBC Premier/ Advance / SmartVantage account); and
- a valid identification document complying with U.S.(e.g. Hong Kong Permanent Identity Card, Hong Kong Identity Card* or passport); and
- a duly completed
(should submit together with the ) and verified by the Bank.
In case there are any changes of customer's address or nationality, especially if the changes would lead to a change of withholding tax rate, customer should inform the Bank of such changes in writing as soon as possible. For your information, if a change in your detail results in a change in the withholding tax rate, all your outstanding U.S. stock orders or outstanding quantity of a U.S. stock order (if any) will be cancelled.
* For accounts opened before 1 Jan 2001 only
2:What is product and service coverage for the US Stock Trading Service?
HSBC's US Stock Trading Service provides trading and custodian services for US stocks listed in
NYSE (NYSE Equities Market), NASDAQ and AMEX (NYSE Amex Equities Market). Non-listed US securities are beyond our service scope.
3:Why do I need to submit a W-8BEN Form?
The completion of the
(should submit together with the ) is a requirement of the U.S. Internal Revenue Service (IRS). Non-U.S. persons are subject to U.S. tax (max 30%) on certain types of income received from U.S. sources, such as interest and dividends. ()
Non-U.S. persons are required to complete and submit a duly completed W-8BEN Form for the following main reasons:
- to establish that you are not a U.S. and
- to claim that you are the beneficiary of the US-sourced income for which the W-8BEN F and
- to claim, if applicable, a reduced rate of, or exemption from, withholding tax by being a resident of a foreign country with which the United States has an income tax treaty.
If you would like to know more about the W-8BEN form, please refer to the following IRS website:
4:How do I know if my country has an income tax treaty with the U.S. and what is the applicable withholding tax rate?
Please check with your tax adviser or refer to the following IRS website for more information:
5:What is the NYSE Market Data Agreement?
The NYSE Market Data Agreement, also known as "Exhibit B Agreement For Market Data Display Services", relates to provision of market data by the New York Stock Exchange (NYSE). As required by NYSE, every retail customer must sign this agreement to confirm that he/she is a "non-professional" market data subscriber before obtaining access to the NYSE's market data.
6:Regarding the NYSE Market Data Agreement, one of the criteria for being classified as "Non-professional" subscribers is not being engaged as an investment advisor. What is the definition of "investment advisor"?
In brief, "Investment adviser" means any person who, for compensation, engages in the business of advising others, either directly or through publications or writings, as to the value of securities or as to the advisability of investing in, purchasing, or selling securities, or who, for compensation and as part of a regular business, issues or promulgates analyses or reports concerning securities.
For more details please refer to the U.S. Securities and Exchange Commission ("SEC") website below, and you are strongly advised to seek professional advices when needed.
7:What will happen if I am classified as a professional subscriber? Can I still trade U.S securities with HSBC?
Yes, you can still trade U.S securities with HSBC but you will need to pay for all professional subscribers' related charges as levied by the U.S. Exchanges to you.
For non-professional subscribers, customers can access all real-time U.S. market data free of charge on HSBC Stock Express.
8:How long does it take to activate my U.S. Stock Trading Service after my W-8BEN Form and NYSE Market Data Agreement submission?
Under normal circumstances, if you submit a duly completed W-8BEN Form and NYSE Market Data Agreement to any HSBC branches in Hong Kong and have your integrated investment services account (account suffix 380) opened before noon (Hong Kong time 12:00pm), you may start placing orders upon the opening of the U.S. market on the same day.
* Saturdays are excluded. In addition, we may have an earlier cut off time during promotional periods. Please refer to our marketing materials for detailed information.
9:How long is a W-8BEN Form valid for?
A W-8BEN Form is valid for a period starting from the date you sign the form to the last day of the third succeeding calendar year unless there is a change of circumstances requiring new W-8BEN form. e.g. A W-8BEN Form signed on 1 Jul 2010 remains valid through 31 Dec 2013.
10:Can I transfer my U.S. stock holdings from other brokers to HSBC?
Yes, you are welcome to transfer stock holdings to HSBC and there will be no charges incurred from HSBC. Simply visit any of our branches in Hong Kong.
Trading related questions
1:What are the services fees for HSBC U.S. Stock Trading Service?
Please refer to the following tariff table:
Service Charges
Trade-related servicesBuying and selling shares- Brokerage fee&&&- trading through HSBC Stock Express / &&&&&HSBC Mobile Banking&&&&&&1st 1000 shares&&&&&&Over 1000 shares&&&- trading through manned phonebanking&&&&&&1st 1000 shares&&&&&&Over 1000 shares- SEC fee (for sell transaction only)
USD18(flat fee)Flat fee + USD0.015 per additional shareUSD38(flat fee)Flat fee + USD0.015 per additional share0.00224%1
Account maintenance services- Maintenance Fee
USD5 per month2(waived until 31 Dec 2017)
Online information services- Online real-time price quote - Investment order confirmation eAlerts
Free quote entitlement per monthHSBC Premier/Advance/SmartVantage customers: 99,999 quotes3Cost per additional quoteHK$0.1 per quote4Free
Nominee service- Collection of dividend and other corporate actons
Script handling and settlement-related services-Receipt-Delivery
Free5USD150 per line of stock
American Depository Receipt (ADR) Fee
USD0.01 - 0.05 per share6
1SEC fee is subject to review by U.S. Securities Commission (SEC) from time to time.
2Maintenance Fee is waived until 31 Dec 2017. Customers are also entitled to Maintenance fee waiver afterwards for one month if he / she has conducted at least 1 U.S. stock buy or sell transaction during that month.
3All unused quotes will not be carried forward.
4The fee incurred will be debited from your designated or default charge account on the 4th / 5th working day of the following month, depending on the account type and is payable upon closure of accounts where the account is closed before the payment date.
5Customers will need to pay if there is any out of pocket cost incurred.
6Customers holding ADRs may be charged ADR fee regularly (e.g. annually) by the Depository Receipts Agent through HSBC. Fees will be automatically deducted from your HSBC Integrated Account(s) and shown on your statement(s) as "ADR fee". ADR fee is subject to the final confirmation from the Depository Receipts Agent and the captioned price range is for reference only.
2:What are the U.S. stock trading hours?
U.S. Eastern Time*
9:30 am - 4:00 pm
H.K. Time*
9:30 pm - 4:00 am (Summer Time)#
10:30 pm - 5:00 am (Winter Time)#
*with no lunch break
#The U.S. begins Summer Time at 2:00am local time on the second Sunday in March and reverts to Winter Time at 2:00am local time on the first Sunday in November.
3:Can I trade U.S. stock during Hong Kong public holidays?
As long as U.S. stock markets are open, you can trade U.S. stocks as usual during Hong Kong public holidays and even when typhoon signal no.8 or black rainstorm is hoisted in Hong Kong.
1. U.S. Stock Trading Service via phonebanking hotlines is applicable to HSBC Premier & Advance Customers only. HSBC SmartVantage customers are welcome to logon to HSBC Stock Express or HSBC Mobile Banking for Online U.S. Stock Trading Service. To enquire about the services, they can call (852)
during 9:00-1730, from Monday to Saturday (Hong Kong business days only)
2. HSBC Advance Customers are required to register for HSBC Personal Internet Banking Services for Online U.S. Stock Trading Service. During severe weather condition in Hong Kong, U.S. Stock Trading Service via phonebanking hotlines is applicable to HSBC Premier Customers only.
4:What trading channels are available for HSBC's U.S. Stock Trading Service?
You can trade U.S. stocks through the following channels:
HSBC Stock Express
24 hours services
HSBC Mobile Banking
HSBC Phonebanking Hotlines*
HSBC Premier -
(24 hours services)
HSBC Advance -
(24 hours services)
*U.S. Stock Trading Service via phonebanking hotlines is applicable to HSBC Premier & Advance Customers only. HSBC SmartVantage customers are welcome to logon to HSBC Stock Express or HSBC Mobile Banking for Online U.S. Stock Trading Service. To enquire about the services, they can call (852)
during 9:00-1730, from Monday to Saturday (Hong Kong business days only)
5:Can I place U.S. stock orders at any time?
Yes, you can place U.S. stock orders via HSBC Stock Express, HSBC Mobile Banking and our Phonebanking Hotlines* 24 hours a day, 7 days a week. Details are as follows:
Limit order & Sell Stop limit order#: any time
Market order: during U.S. trading hours
*U.S. Stock Trading Service via phonebanking hotlines is applicable to HSBC Premier & Advance Customers only. HSBC SmartVantage customers are welcome to logon to HSBC Stock Express or HSBC Mobile Banking for Online U.S. Stock Trading Service. To enquire about the services, they can call (852)
during 9:00-1730, from Monday to Saturday (Hong Kong business days only)
#Sell stop limit order is only available at HSBC Stock Express
6:What U.S. equities can I trade through HSBC's U.S. Stock Trading Service?
You can trade Common Stocks, Preferred Shares, ETFs and ADRs traded on NYSE (NYSE Equities market), AMEX (NYSE Amex equities market) and National Association of Securities Dealers Automated Quotations (NASDAQ).
7:Is there any quick way to differentiate if an equity is a Common Stock, Preferred Shares, ADR or ETF?
Yes. When you input the name or keyword of an U.S. equity into the box next to "Enter a Symbol" on Stock Express, you will see a list of relevant equities, together with the relevant symbols, company names and the relevant exchanges. You can usually determine the asset types using the last three characters of the company names - ORD, PRF and ETF stand for Common Stock, Preferred Shares and ETF respectively. For ADRs, you will find "ADR" in the company names and the last three characters will show "ORD"
8:What is ADR?
ADR stands for American Depositary Receipt. In U.S. stock markets, ADRs allow investors to indirectly invest in non-U.S. companies in the form of depositary receipts. Several popular listed companies in Hong Kong have ADRs trading in U.S stock markets, for example, "HBC" is the ADR of HSBC trading in NYSE.
9:What are the order types that are available for HSBC U.S. Stock Trading?
We currently offer
through both HSBC Stock Express and Phonebanking channels.
Limit Order is an instruction that allows you to specify your highest purchase price or lowest selling price.
You can place a U.S. stock limit order valid for up to 14 calendar days.
Market Order is an instruction that allows you to buy/sell stock at the prevailing bid/ask price of the stock. Market order can be placed during U.S. Stock trading hours and only day order is allowed.
Unlike market order in H.K stock trading, any unfilled quantity of your U.S. stock market order will remain outstanding in the market. As a result, the final execution price may differ widely from the last traded price at the time of order placement, especially for some illiquid stocks. To manage your risk, you are always suggested to check the order status for execution results right after your order placement and to consider cancelling any unfilled quantity if necessary.
10:Can I place an order with any number of shares?
Yes, you can place an order with a minimum of one share for most securities.
11:What U.S. market information is available on Stock Express?
You can access to a wide range of information on HSBC Stock Express enabling you to make an informative investment decisions, including real-time stock quotes (equities trading at the 3 major U.S. stock exchanges), latest market news, Thomson Reuters Stock Report + for designated stocks, and major U.S. indices.
12:Is U.S. stock trading related information displayed in U.S. time?
All U.S. stock orders/transactions details on HSBC Stock Express are displayed in "ET", which refers to the Eastern Time zone of U.S.
13:How can I get the real-time quote for a specific stock?
Through HSBC Stock Express, you can easily get real-time quotes for U.S. stocks. Simply input the symbol of the stock into the box next to "Enter a Symbol" and then click "Quote".
14:What is a symbol?
In U.S. stock trading, symbols are short but unique abbreviations of stocks traded on stock markets, similar to stock codes in H.K stock trading. For example, "HBC" is the symbol of HSBC Holdings trading in NYSE.
15:What if I do not know the symbol of the stock I am interested in?
Simply input the name/keyword of the stock into the box next to "Enter a Symbol" on HSBC Stock Express. You will then see a list of relevant stocks.
16:What is the settlement currency for HSBC U.S. Stock Trading?
Your U.S. stock trading transactions will be settled in U.S. dollars.
For your convenience, you may consider transferring a certain amount of fund into your default settlement account (U.S. dollar savings account) at the time you register for U.S. Stock Trading Service.
17:Do I have to register for SMS notification for my U.S stock transactions?
No, prior registration is not required. SMS notification is sent to customers free of charge. Customers with valid local or overseas mobile phone numbers will receive SMS notification once your order execution result is confirmed. It is a 24-hour notification to adhere the US Stock Market which helps you to manage the trading timely.
18:Can I opt out this SMS alert service?
Please understand that the SMS about investment trade execution result is to help identify potential unauthorized activities. SMS alert forms part of our investment account service package and cannot be opted out.
19:After a sell order is successfully completed, can I immediately use the sales proceeds to buy another stock?
No, due to U.S. regulatory restrictions, trading with receivable sales proceeds is not allowed for cash account.
20:What's the order tick size under the 'Tick Size Pilot Program'?
With effect from 3 October 2016, selected securities listed on US stock exchanges under the Tick Size Pilot Program are subject to a tick size of US$0.05 ("Subject Securities"). For limit price orders, you must input a price in an increment of US$0.05 for buying and selling these Subject Securities, otherwise, your orders will be unexecuted.
You are advised to check whether the securities are on the
(update daily) and in the test group G1, G2, G3 before limit price order placement. For limit price orders of the Subject Securities placed during the US Stock trading hours, you should check the order status to ensure it is not being unexecuted. For limit price orders submitted prior to the US Stock trading hours, you should check the order status after 8pm HKT (Summer time in the US)/ 9pm HKT (Winter time in the US) if it is "Pending Dealing" or being "Unexecuted" by the broker.
Please visit the US Stock Trading page on
for the Subject Securities list and further details.
21:What will happen when the security of my limit price buy/sell multiple-day order becomes a security in the test group G1, G2, G3 on the list (daily update) under the Tick Size Pilot Program and the limit price does not comply with the US$0.05 tick size rule?
Your multiple-day limit price order will be unexecuted automatically. You should check daily the order status after 8pm HKT (Summer time in the US)/9pm HKT (Winter time in the US) or in the US Stock trading hours if it is "Pending Dealing" or being "Unexecuted" by the broker. If the order is unexecuted, you can resubmit the order with a limit price in an increment of US$0.05 when necessary.
22:Will my U.S. instructions be executed in alternative trading venues?
In respect of orders for securities listed on stock exchanges outside of Hong Kong, it is our existing practices that the Bank may transmit your orders to affiliated HSBC entities and third party brokers for execution, who may, subject to local regulation, execute such orders on alternative trading venues ("ATVs"), including dark pools.
The primary potential benefits for using ATVs is to achieve better pricing and to reduce transaction costs. In general, ATVs and ATV operators are subject to regulations which are not necessarily the same as regulations that are applicable to exchanges and exchange operators. A typical feature of ATVs is that there is no pre-trade transparency. The reference prices on an ATV could be "stale" or out-of-date due to latency from data feeds. Separately, access to ATVs is usually restricted and there could be less supply and/or demand on an ATV (as compared to the supply and/or demand on an exchange) due to the limited number of participants.
Our affiliated HSBC entities and third party brokers generally consider the execution price and opportunities for price improvement when deciding the appropriate venue for executing orders. There may also be other factors in their consideration, for example (i) market
(ii) the trading characteris (iii) speed and ac (iv) the availability of efficient and reliable or (v) liquidity and automatic
(vi) (vii) the cost and (viii) execution certainty. The Bank will continue to monitor and evaluate the execution practices of our affiliated HSBC entities and third party brokers.
23:Can I choose to opt out alternative trading venues ("ATVs") for executing my U.S. securities instructions?
Customers cannot choose to opt out ATVs but please rest assure that execution would have been reviewed and have adopted the applicable local regulatory requirements. The Bank will continue to monitor and evaluate the execution practices of our affiliated HSBC entities and third party brokers.
24:When is the settlement day for US stock transaction?
Effective 5 September 2017, settlement day of the US securities markets is 2 business days after trade execution day (T+2). For buy orders, debit of the purchase amount from your account and deposit of the purchased securities will take place 2 business days after trade execution day. For sell orders, sales proceeds will be credited to your account 2 business days after sale execution day.
Note: Actual settlement date is subject to market arrangement which maybe beyond the stated date due to time zone difference, different lead time required or suspension of business or trading.

我要回帖

更多关于 香港汇丰银行汇款路径 的文章

 

随机推荐