当前位置:首页 » 股票买卖 » 贪心算法买卖股票的最佳时机含手续费714
扩展阅读
设计总院股票历史股价 2023-08-31 22:08:17
股票开通otc有风险吗 2023-08-31 22:03:12
短线买股票一天最好时间 2023-08-31 22:02:59

贪心算法买卖股票的最佳时机含手续费714

发布时间: 2023-07-21 13:51:51

A. 买股票的手续费怎么算的

A股的手续费理论上是按照资金量来定,A股交易佣金由哪些费用构成?主要有股票交易规费(一般包含在佣金里),佣金,过户费以及印花税。股票交易手续费一般由交易佣金3‰到万1.5(最低收费5元,不足5元时收取5元)、印花税1‰、过户费0.002%三部分构成。股票手续费计算举例:如果股票投资者们买入的股票金额是60000元,卖出股票后的成交价是61000元。交易费用计算如下:1、交易佣金。一般资金量小的散户佣金是万分之三,双边收取,单笔交易佣金最低收取5元。那么产生的费用60000*万3+61000*万3=36.3元。2、过户费。目前深交所和上交所都要双边收取过户费,收取的费率是万分之0.2,按照卖出价格计算,产生的费用是60000*万0.2+31000*万0.2*2=1.82元。3、卖出印花税。股票交易会收取印花税,仅卖出收取,收取的比例是卖出价格的千分之一,因此产生的印花税就是61000*0.1%=61元。由上述计算可以得出,当买入价格在60000元,卖出价格在61000元,佣金在万三时,股票一共产生36.3+1.82+61=99.12元手续费,股票收取的手续费是很高的。如果卖出价格低于30000元,那么表示自己亏损了,依然要支付股票交易产生的所有手续费。可以看出股票交易手续费也是一笔不小的交易成本,特别是当交易资金比较大的情况下,费用也会水涨船高,所以为了降低成本最好选择佣金低的证券公司。

B. 买卖股票手续费怎么算


股票手续费的算法以用户购买10000股股票为例,每股票价格为10元,过户费=10000×10×0.02‰=2元,券商交易佣金=10000×10×0.25‰=25元,所以总手续费=2+25=27元。股票手续费是由佣金、印花税、过户费组成,佣金是由投资者和证_公司共同协商决定的,在不同的证_公司股票交易的手续费不同。
股票交易是指股票投资者之间按照市场价格对已发行上市的股票所进行的买卖,包括场内交易和场外交易。股票公开转让的场所首先是证券交易所。中国大陆仅有两家交易所,即上海证券交易所和深圳证券交易所。
计算股票指数时,往往把股票指数和股价平均数分开计算。按定义,股票指数即股价平均数。但从两者对股市的实际作用而言,股价平均数是反映多种股票价格变动的一般水平,通常以算术平均数表示。人们通过对不同的时期股价平均数的比较,可以认识多种股票价格变动水平。
佣金:不超过成交额的3%(含经手费、证管费、过户费),起点5元,买卖双向收取。其中,经手费为成交额的0.0487%,证管费为成交额的0.02%,过户费为成交额的0.02%;印花税:成交额的1%,卖方单边缴纳。


C. 程序员算法实现-买卖股票的最佳时机系列问题

主要思路:因为只有一股可以交易,所以我们可以枚举 必须以i位置作为卖出时机的情况下,得到的最大收益是多少。如果我们得到每个i位置的最大收益,那么最大收益必是所有位置的最大收益的最大值

使用两个变量:

min变量:表示遍历到的位置之前的最小值是什么。

max变量:表示当前收集到必须以i位置卖出的最大收益是多少。

遍历数组一遍,在遍历到i位置的时候,min和max的更新逻辑如下:

遍历完数组,返回max的值就是最终答案。完整代码见:

主要思路:由于可以进行任意次的交易,但是任何时候最多只能持有一股股票,所以我们可以把股票曲线的所有 上升段 都抓取到,累加收益就是最大收益。遍历数组,遍历到的位置减去前一个位置的值,如果是正数,就收集,如果是负数,就把本次收益置为0(就等于没有做这次交易),这样遍历一遍数组,就不会错过所有的收益。

设置一个变量max,初始为0,用于收集最大收益值,来到i位置,max更新逻辑如下:

完整代码如下:

由本题可以简单得出一个结论: 如果数组元素个数为N,则最多执行N/2次交易就可以抓取所有的上升段的值(极端情况下,当前时刻买,下一个时刻卖,保持这样的交易一直到最后,执行的交易次数就是N/2)

主要思路:

在第2种情况下,我们定义

其中dp[i][j]表示[0...i]范围内交易j次获得的最大收益是多少。如果可以把dp这个二维表填好,那么返回dp[N-1][k]的值就是题目要的答案。

dp这个二维矩阵中,

第一行的值表示数组[0..0]范围内,交易若干次的最大收益,显然,都是0。

第一列的值表示数组[0...i]范围内,交易0次获得的最大收益,显然,也都是0。

针对任何一个普遍位置dp[i][j]的值,

我们可以枚举i位置是否参与交易,如果i位置不参与交易,那么dp[i][j] = dp[i-1][j],如果i位置参与交易,那么i位置一定是最后一次的卖出时机。

那最后一次买入的时机,可以是如下情况:

最后一次买入的时机在i位置,那么dp[i][j] = dp[i][j-1] - arr[i] + arr[i]

最后一次买入的时机在i-1位置,那么dp[i][j] = dp[i-1][j-1] - arr[i-1] + arr[i]

最后一次买入的时机在i-2位置,那么dp[i][j] = dp[i-2][j-1] - arr[i-2] + arr[i]

...

最后一次买入的时机在0位置,那么dp[i][j] = dp[0][j-1] - arr[0] + arr[i]

完整代码如下:

上述代码中包含一个枚举行为

增加了时间复杂度,我们可以优化这个枚举。

我们可以举一个具体的例子来说明如何优化,

比如,

当我们求dp[5][3]这个值,我们可以枚举5位置是否参与交易,假设5位置不参与交易,那么dp[5][3] = dp[4][3],假设5位置参与交易,那么5位置一定是最后一次的卖出时机。那最后一次买入的时机,可以是如下情况:

最后一次买入的时机在5位置,那么dp[5][3] = dp[5][2] - arr[5] + arr[5]

最后一次买入的时机在4位置,那么dp[5][3] = dp[4][2] - arr[4] + arr[5]

最后一次买入的时机在3位置,那么dp[5][3] = dp[3][2] - arr[3] + arr[5]

最后一次买入的时机在2位置,那么dp[5][3] = dp[2][2] - arr[2] + arr[5]

最后一次买入的时机在1位置,那么dp[5][3] = dp[1][2] - arr[1] + arr[5]

最后一次买入的时机在0位置,那么dp[5][3] = dp[0][2] - arr[0] + arr[5]

我们求dp[4][3]这个值,我们可以枚举4位置是否参与交易,假设4位置不参与交易,那么dp[4][3] = dp[3][3],假设4位置参与交易,那么4位置一定是最后一次的卖出时机。那最后一次买入的时机,可以是如下情况:

最后一次买入的时机在4位置,那么dp[4][3] = dp[4][2] - arr[4] + arr[4]

最后一次买入的时机在3位置,那么dp[4][3] = dp[3][2] - arr[3] + arr[4]

最后一次买入的时机在2位置,那么dp[4][3] = dp[2][2] - arr[2] + arr[4]

最后一次买入的时机在1位置,那么dp[4][3] = dp[1][2] - arr[1] + arr[4]

最后一次买入的时机在0位置,那么dp[4][3] = dp[0][2] - arr[0] + arr[4]

比较dp[5][3]和dp[4][3]的依赖关系,可以得到如下结论:

假设在求dp[4][3]的过程中,以下递推式的最大值我们可以得到

dp[4][2] - arr[4]

dp[3][2] - arr[3]

dp[2][2] - arr[2]

dp[1][2] - arr[1]

dp[0][2] - arr[0]

我们把以上式子的最大值定义为best,那么

dp[5][3] = Math.max(dp[4][3],Math.max(dp[5][2] - arr[5] + arr[5], best + arr[5]))

所以dp[5][3]可以由dp[4][3]加速得到,

同理,

dp[4][3]可以通过dp[3][3]加速得到,

dp[3][3]可以通过dp[2][3]加速得到,

dp[2][3]可以通过dp[1][3]加速得到,

dp[1][3]可以很简单得出,dp[1][3]有如下几种可能性:

可能性1,1位置完全不参与,则

可能性2,1位置作为最后一次的卖出时机,买入时机是1位置

可能性3,1位置作为最后一次的卖出时机,买入时机是0位置

此时,best的值为

然后通过dp[1][3]加速dp[2][3],通过dp[2][3]加速dp[3][3]......,所以二维dp的填写方式是按列填,

先填dp[1][0],dp[1][2]一直到dp[1][k],填好第一列;

然后填dp[2][0],dp[2][1]一直到dp[2][k],填好第二列;

...

依次填好每一列,直到填完第N-1列。

枚举行为被优化,优化枚举后的完整代码如下:

主要思路:上一个问题中,令k=2就是本题的答案。

主要思路:因为有了冷冻期,所以每个位置的状态有如下三种:

定义三个数组,分别表示i位置这三种情况下的最大值是多少

显然有如下结论:

针对一个普遍位置i

最大收益就是如上三种方式的最大值。完整代码见:

由于三个数组有递推关系,所以可以用三个变量替换三个数组,做空间压缩,优化后的代码如下:

主要思路:由于没有冷冻期,所以在i位置的时候,状态只有两种

针对0位置

针对普遍位置i

完整代码如下:

同样的,两个数组都有递推关系,可以做空间压缩,简化后的代码如下:

原文链接:买卖股票的最佳时机系列问题 - Grey Zeng - 博客园

D. 买卖一只股票一共需要交多少手续费如何据算

0.02‰收取。

股票交易费用包括三部分:

1、印花税:成交金额的1‰,只有卖出时收取。

2、过户费(仅上海股票收取):每1000股收取1元,不足1000股按1元收取。

3、券商交易佣金:最高为成交金额的3‰,最低5元起,单笔交易佣金不满5元按5元收取,异地通讯费由各券商自行决定收不收。股票交易除了买卖股票的价格之外,还会收取佣金,过户费,印花税等等,所以买入股票的成本价并不是成交价,是包含了佣金等手续费之后的价格,因此会有一个成本价。

(4)贪心算法买卖股票的最佳时机含手续费714扩展阅读:

股票交易注意事项:

用户一定要注意基本面。虽然A股市场不是以价值投资为主导的,甚至离价值投资还非常遥远,有的时候股价并不能够完全反映上市公司的基本面,有的上市公司基本面非常好。

由于缺少炒作资金的介入,股价会一直处于低位徘徊,有些公司虽然基本面并不好,但由于受到资金的青睐,股价却有非常好的表现。但如果基本面出现重大问题,在投机的市场内一定会受到惩罚。

所以说在选择股票交易的时候,基本面是一个需要注意的方面,可以选基本面正常的股票,但绝对不能选择基本面恶化的股票,这一点一定要牢记。

E. 股票买卖手续费怎么算

股票买卖手续费怎么算?股票手续费包括:佣金(各证券公司收费标准不同,不超过成交金额千分之3,单笔最低5元)、印花税(成交金额千分之1,买入不收)和过户费(成交金额的万分之0.2)。

股票手续费包括:佣金(各证券公司收费标准不同,不超过成交金额千分之3,单笔最低5元)、印花税(成交金额千分之1,买入不收)和过户费(成交金额的万分之0.2)。

比如卖出股票A,成交金额为50000元,佣金收费标准为万分之3,那么可以算出佣金为:50000*0.03%=15元,印花税为:50000*0.1%=50元,过户费为:50000*万分之0.2=1元,合计手续费为:15+50+1=66元。

【拓展资料】

股票交易是股票的买卖。股票交易主要有两种形式,一种是通过证券交易所买卖股票,称为场内交易;另一种是不通过证券交易所买卖股票,称为场外交易。大部分股票都是在证券交易所内买卖,场外交易只是以美国比较完善,其它国家要么没有、要么是处于萌芽阶段,股票交易(场内交易)的主要过程有:

(1)开设帐户,顾客要买卖股票,应首先找经纪人公司开设帐户。

(2)传递指令,开设帐户后,顾客就可以通过他的经纪人买卖股票。每次买卖股票,顾客都要给经纪人公司买卖指令,该公司将顾客指令迅速传递给它在交易所里的经纪人,由经纪人执行。

(3)成交过程,交易所里的经纪人一接到指令,就迅速到买卖这种股票的交易站(在交易厅内,去执行命令。

(4)交割,买卖股票成交后,买主付出现金取得股票,卖主交出股票取得现金。交割手续有的是成交后进行,有的则在一定时间内,如几天至几十天完成,通过清算公司办理。

(5)过户,交割完毕后,新股东应到他持有股票的发行公司办理过户手续,即在该公司股东名册上登记他自己。

股票市场:股票市场也称为二级市场或次级市场,是股票发行和流通的场所,也可以说是指对已发行的股票进行买卖和转让的场所。股票的交易都是通过股票市场来实现的。一般地,股票市场可以分为一、二级,一级市场也称之为股票发行市场,二级市场也称之为股票交易市场。

股票是一种有价证券。有价证券除股票外,还包括国家债券、公司债券、不动产抵押债券等等。国家债券出现较早,是最先投入交易的有价债券。随着商品经济的发展,后来才逐渐出现股票等有价债券。因此,股票交易只是有价债券交易的一个组成部分,股票市场也只是多种有价债券市场中的一种。很少有单一的股票市场,股票市场不过是证券市场中专营股票的地方。

F. 贪心算法总结

做了这10道题,其实发现贪心算法没有什么规律,要说有什么共同特点就是都是由局部最优从而推出全局最优,每个题基本上都要考虑其局部最优是什么,其全局最优是什么,所以虽然都用到了贪心算法的思想,但是题与题之间又没有什么规律可言。

现在把这10道题的思路总结一下(总结主要以我的主观看法在写,可能别人看会不知道我在说什么)

1.分发饼干:

https://programmercarl.com/0455.%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.html

思路:想要完成最多的小孩满足,那么就得最小的饼干给胃口最小的小孩

这里的贪心思想,

局部最优就是尽可能让一个饼干喂饱一个

全局最优就是最多的小孩满足

2.摆动序列:

https://programmercarl.com/0376.%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.html

思路:这里要找到最长的摆动序列,那么其实就是找那些波峰波谷,如图所示

可以看出来,在到达波峰波谷的路上有几个数字不会影响什么,可以直接去掉。

那么这里的局部最优就是把单调坡上的点删掉,保留最多的波峰波谷

全局最优就是得到对多的波峰波谷,即最长的摆动序列

3.最大子序和

https://programmercarl.com/0053.%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%92%8C.html

这道题显然可以暴力解出来,即列出所有子序和,找出最大的,不过计算量会比贪心大很多。

这里主要介绍贪心解的思想:

想要得到最大子序和,就得保证每次相加时,相加后不能为负数,因为负数继续往下加一定是拉低总和的,那么我们当加成到负数时就重新从下个数开始加,并实时记录最大的子序和,这样一遍循环就能得出最大子序和。

局部最优:加成负数就立刻停止,并从下个元素重新开始

全局最优:得到最大子序和

4.买卖股票的最佳时机II

https://programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAII.html

思路:想要得到最大利润,那就要低价买入高价卖出,那么怎样的买卖才能得到最大利润呢。

这里就体现出贪心算法的“贪”字(我猜的),这道题贪在哪呢,贪在只要有利可图就去做,即只要今天买入的价钱比明天卖出的价钱底,即有利可图,那么我就去做,做就是在今天买入,在明天卖出。

局部最优:得到每天的最大正利润

全局最优:得到最大利润

5.跳跃游戏

https://programmercarl.com/0055.%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.html

思路:每个数组的元素代表的是可以跳的最远下标,那么我们只要使那个最远下标包含最后一个下标就是可以跳到,那么我们每跳到一个位置就要更新那个可以跳的范围,即可以跳到的最远下标。

局部最优:每次跳跃都得出最远的跳跃范围

全局最优:最后能跳到的最大范围

6.跳跃游戏II

https://programmercarl.com/0045.%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8FII.html

思路:这道题要得到最小的跳跃数,其实只要保证跳的是位置是可以跳范围内更新最远范围的位置就可以了。

为什么这么说呢?以题例来说:

我们刚开始在‘0’的位置,我们能跳到‘1’和‘2’的位置,那么我们怎么跳呢?可以看到跳到‘1’之后更新的最大范围是‘4’,跳到‘2’之后更新的最大范围是‘3’,所以我们就跳‘2’了,因为跳‘1’之后更新的最大可跳范围更大包含了跳‘2’的最大可跳范围,那么肯定是跳‘3’最优呀,这里就体现了局部最优的思想。

局部最优:每次跳后,更新的最大可调范围最大

全局最优:跳跃次数最少

7.K次取反后最大化的数组和

https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.html

思路:想要得到最大数组和,我们就可以想到怎样做呢?

一,尽可能保证负数最少

二,负数绝对值大的优先变正

三,正数绝对值小的优先变负,有零变零

本着这三条原则做,就能做出来。

那么这道题体现了什么贪心思想呢?

我感觉,前面那三条都是贪心中‘贪’的体现

在负数中,局部最优就是:绝对值大的负数优先变正

在正数中,局部最优就是:绝对值小的正数变负,有零变零

得到的全局最优:数组和最大

8.加油站

https://programmercarl.com/0134.%E5%8A%A0%E6%B2%B9%E7%AB%99.html

思路:首先可以想到这道题是可以暴力解出来了,即分别以每个加油站为起点,得出可以跑一圈的加油站

那么贪心思想做,该怎么做呢,首先可以想到,如果以一个1点为起点当跑着跑着跑到3,油变为负数时,那么说明以这个起点是不行的,但是以2或3为起点行不行呢?答案肯定是不行的,因为1跑到3,油变为负,说明1~3的gas=0的,所以可以得出,如果1~3油数变为负数,那么由2~3油数肯定也为负数。

所以这里就可以得出,如果经过几个加油站油数变为负了,那么起点就更新为这一段路的下个加油站跑

局部最优:油量一旦为负,就从下个加油站重新跑

全局最优:得出可以跑一圈的加油站起点

9.分发糖果

https://programmercarl.com/0135.%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.html

思路:每个孩子至少一个,如果一个孩子比他旁边的孩子优秀,就要比他旁边的糖果多,这道题一旦两边都考虑很容易顾此失彼,所以我们就定义两个循环,分别从左到右,从右到左去考虑,只要更优秀则比他旁边的多1,如果已经多了就不用变了。

局部最优:保证优秀的孩子比他旁边的孩子糖果多

全局最优:满足题中条件,至少要发的糖果

10.柠檬水找零

https://programmercarl.com/0860.%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.html

思路:我们在找零时要遵守的规则一定是:

5 得5

10 得10减5

15 得15,优先减一个10减一个5  如果10块没有则减三个5

局部最优:以最少用的5块的方式找零

全局最优:得到找零能否进行下去

G. 股票买入卖出手续费怎么算

一、买卖股票手续费怎么算,交易规则是怎样的

(一)买卖股票手续费怎么算

1、佣金:佣金是由投资者和证券公司共同协商决定的,每个人的佣金可能都不一样。目前证券公司收取的佣金在0.03%(万三)至0.3%(千三)之间。一线城市北上广深的较低,二三四线城市的佣金较高。互联网平台的网上开户较低,最低可至0.02%(万二)。

2、印花税:由国家制定固定的,投资者在买卖证券成交后支付给财税部门的税收,由券商代扣后由交易所统一代缴。目前沪深两市收取不同的印花税,均为成交金额的0.1%(千分之一)。

3、过户费:由国家制定固定的,是指股票成交后,更换户名所需支付的费用,交易过户费为中国结算收费,证券经营机构不予留存。买入股票和卖出股票均需收取过户费。目前沪深两市收取相同的过户费,2015年8月1日起,A股交易过户费同意调整为按照成交金融0.002%.

(二)交易规则是怎样的

H. 股票手续费是怎么计算的

股票交易手续费就是指投资者在委托买卖证券时应支付的各种税收和费用的总和的总和。其计算方法详情如下:
1.不同的营业部的佣金比例不同,极个别的营业部还要每笔收1-5元的委托(通讯)费。
2.交易佣金一般是买卖金额的1‰-3‰(网上交易少,营业部交易高,可以讲价,一般网上交易1.8‰,电话委托2.5‰,营业部自助委托3‰),每笔最低佣金5元,印花税是买卖金额的1‰(基金,权证免税),上海每千股股票要1元过户手续费(基金、权证免过户费),不足千股按千股算。
3.每笔最低佣金5元,所以每次交易在1666.67元以上比较合算。(1666.67*3‰=5元)
4.如果没有每笔委托费,也不考虑最低佣金和过户费,佣金按3‰,印花税1‰算,买进股票后,上涨7‰以上卖出,可以获利。
5.买进以100股(一手)为交易单位,卖出没有限制(股数大于100股时,可以1股1股卖,低于100股时,只能一次性卖出。),但应注意最低佣金(5元)和过户费(上海、最低1元)的规定.
当前交易费由三部分组成:佣金、印花税、过户费(仅上海股票收取)
佣金如果按照1‰计的话,买卖一次股票的手续费为 1‰(买进佣金)+1‰(卖出佣金)+1‰(卖出印花税)
所谓粗略计算,应该是忽略掉上海股票所产生的过户费之后的算法。