帮你计数的——计数器在日常实操中,我们经常要对某只股票进行买入卖出的次数控制。事实上,卖出相对比较容易,因为有券商、交易所帮咱们控制着呢,你手里要是没有某只股票,或者你有某只股票1000股,但是你现在利用代码进行程序化下单,你下错单、多下了卖单,此时券商柜台可能会提示报错,说你下错了单,但是结果并不糟糕,你卖不了你并不拥有的股票或并不足够的股数。风险较大的,反而是买单,因为,你考虑不周的代码,可能会让你多下买单,直至耗光你账户里所有的现金。
例如下面的代码:
这段代码,定义了一个需要循环5次的for循环,每循环一次,就打印一次“I love you!”,显然,执行这段代码,会打印5次"I love you"。这个我相信朋友们都能看懂。
我们来想象一下另一种情况,在投资交易中,我们在周一买了一只正处于上涨趋势中的股票ABC,周一收盘,该股票收了一根光头阳线,阳线实体部分长度为5%。周二,我们需要在盘中进行判断,假设股价跌到昨日阳线的3/4处,加一次仓,如继续跌,跌到昨日阳线实体部分的1/2处,就再补一次仓,但是,周二全天只允许补2次仓。如果我们在每个tick数据来的时候(一般情况下,交易活跃的股票,是三秒钟刷新一下tick数据),我们需要判断一下是否满足了我们的买入条件,满足则下单。那么问题来了,如果有长达10分钟的时间股价都满足了上述补仓条件,那就会发生频繁买入,不断买入的现象,而这显然是错误的。
此时用上面的简单for循环就不够了,因为,你当然可以设置只循环2次。但是,你循环2次结束了,此时股价并没有下跌到补仓的价位,而过了一会儿,股价下跌了,但是,你的for循环早就结束了,你并没有实现监控股价的功能。
所以,此时,计数器就来发挥作用了。
你可以设计一段代码,在你希望的时间段里持续运行。只要满足补仓条件,就补仓,补过一次仓,计数器就加1。我们来看下面的代码。
发现了没有,虽然初看上去似乎要循环1200次(模拟持续监控股价),但是,我们加上了计数器,每次print之后,计数器的值就加1 ,并且控制了计数器的上限为2,如果达到了2,就break,从而跳出整个循环。结果如我们所愿,当pirnt了2次之后——整个循环结束了。
我们可以想象一下,如果把print替换成补仓下单函数,那么,补仓2次后,是不是就直接跳出了循环,不会再继续执行补仓了?
再补充一个小知识点,那就是python的赋值语句。比如我们我们可以这么写:
在这里,我们首先定义了已叫做counter的变量,并且把counter赋值为0,在下面的那句命令中,我们输入counter后就直接回车,结果输出为0,这说明我们查询counter时,程序就告诉我们counter的值为0。然后,我们可以试一下下图中的代码:
可以看到,我们在把counter赋值为0之后,在下一句命令中,把counter的值(也就是0)加了1,然后再赋值给counter本身。此时,counter的值就变成了1。可是我们也可以像上面那个循环里面写的那样,写成counter += 1,请看下面的代码:
你看,结果是不是完全一样,这说明:counter = counter + 1就等价于counter += 1。
关于计数器还有一些更有效的使用方法,欢迎加入猫哥的星球进行学。