一听到“算法(Algorithm)”这个词,你是否觉得很艰深晦涩?
的确,以前,这只是数学、计算机等理工科的专业词汇。
事实上,随着近两年大数据、无人机、人工智能等的出现,
你已经对这个词不会感到陌生了。
那么什么是算法?
所谓“算法”,指的就是“对特定问题的解决步骤”。
关键词是步骤,
计算机完成一系列的指令,按照设定的步骤。
我们生活、工作中的每一件事情也需要按计划,按步骤去完成,
否则就会乱,事情进行就不会那么顺利。
学习算法,用理工科的思维考虑问题,会有什么好处呢?
1. 逻辑性更强,如果说计算机是逻辑思维的产物,我想大家不会反对吧?
2. 做事更有条理性,计划性,
3. 思维更发散,眼界更开阔。
我们先来看看计算机的工作方法。
01
人的思考模式,请看
1. 人是会死的。(大前提)
2. 张三是人。(小前提)
3. 所以张三会死。(结论)
这是演绎推理的三段论。
我们看看计算机怎么思考:
1. 如果人是会死的。(大前提)
2. 如果张三是人。(小前提)
3. 那么,张三会死。(结论)
把它翻译成计算机语言:
1. if 人是会死的。(大前提)
2. if 张三是人。(小前提)
3. then 张三会死。(结论)
if语句是指编程语言(包括c语言,C#,VB,汇编语言, Python, Matlab等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。
02
if 语句三种形式:
1) if(表达式) 语句
如果表达式的值为真,则执行其后的语句,否则不执行该语句。其过程可表示为下图。
举个栗子:
if (今天不下雨)
爬山;
2) if-else语句
if(表达式)
语句1;
else
语句2;
其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。其执行过程可表示为下图。
举个例子:
if (今天不下雨)
爬山;
else
宅在家里;
3) if-else-if语句
前二种形式的if语句一般都用于两个分支的情况。
当有多个分支选择时,可采用if-else-if语句,
其一般形式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3; …
else if(表达式m)
语句m;
else 语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if语句的执行过程如下图所示。
举个栗子:去图书馆借书
if (《思考,快与慢》有)
借;
else if (《从0到1》有)
借;
else if(《稀缺》有)
借;
else if(《学会提问》有)
借;
else if(《错觉》有)
借;
。。。。。。
03
女儿3岁。
做过父母的人都有经验,小孩经常会要求买这个买那个,看到其他小朋友的芭比娃娃,她想要一个,
看到动画片里的小熊,她想要一个。
早上一起来,要求看动画片......
每天很多要求。而且一提出要求,就想立刻得到满足。
不要告诉小朋友,等一下,一会,我发现不好使。
几岁的小孩,完全没有时间概念,在他们看来,一会、明天、下周,
就意味着永远不会来到。(当然可以用转移注意力的方法)
想起我小时候,物质缺乏,玩具都没见过,
一个月才吃一两回肉。每到吃肉时,感觉肉特别香,
每天盼望过年,过年有糖吃,有新衣服穿,
过年前,一拿到村里的裁缝做的土布衣服,
除夕夜,新衣服放在枕头边,
摸了又摸,闻了又闻,那种味道,那种感觉我至今还记忆犹新。
這是延迟满足带来的高级感受。
现在物质泛滥,追求及时满足的时代,
再也没法体会那种愉悦的感觉了。
有人说,从吃饭来说,微波炉和快餐造成了及时满足,
微波炉将食物一叮,就可以吃了;
肚子饿了,有“饿了么“,”百度外卖“,一个电话就来了。
小时候,烧柴火煮饭,那个慢呀,遇到下雨天,有时生火都要半个小时。
过年过节,等饭吃,时不时到厨房逗一圈,妈妈往我嘴里塞一块肉,那个美味呀!
现在还流口水。
我既然是延迟满足的收益者,
每当女儿有要求,
我常常运用延迟满足+if语句:
-我要看电视。
-如果你把数字从1到10读3遍,就可以看了。
-我要像一个这样的小猫玩具。
-如果你从今天起积分满50就可以有一个了。
-我要吃冰淇淋。
-如果夏天来了,我们就可以吃冰淇淋了。
。。。。。。
一开始,各种哭闹,各种撒横,一定要马上要。
慢慢地,知道不能轻易破我们定下的规矩,就开始来适应这些if规则了。
04
朋友从事外汇行业。
有一天聊天,我们谈到量化交易,自动化交易的趋势和可能性。
科技方面,从大数据,无人机,再到人工智能,各种算法发展日新月异,
能用机器搞定的就不用人,(近年来人工成本逐年高涨)
科龙美的等大型电器厂,早就开始使用机械手臂,取代一线工人进行危险、繁重的工作;
富士康已经装备600万台机器人,取代一线工人的机械、简单重复的工作。
近年来这类新闻层出不穷,
据说,不久的将来,现在一半以上的工作将被机器人取代,
搞到人人自危,焦虑自己的饭碗被机器人抢走。
金融行业,比如,银行的柜员,明显少了很多岗位,人们主要的业务自动取款机存取款;
尤其现在微信、支付宝支付非常方便,更加大大减少了银行的这些业务量。
说到外汇,为何没有人把开发无人机的智慧用于外汇交易呢?
有人说,那些高科技的研究发明者,不屑投身到金融行业,
因为在他们看来,金融行业给人总是投机取巧,贪婪的固有印象。
一家之言,无法考证,一笑了之。
不过,一但有资本巨头,在这方面投入,自动化交易会彻底改变这个行业。
外汇行业,每天成交4万亿美元,24小时开市,有其独特的魅力:公开、透明、公正。
80% 的经纪商用的是Mt4软件,
是俄罗斯的一家软件公司开发的。
正式这家公司,改变了我对俄罗斯科技的看法。
我只知道俄罗斯的重工业,军工行业发达,最著名的恐怕是AK47,
质量好、体积大、重量重。
万万没想到,这个软件这么好,小巧,功能强大。
据说,迈达克公司的Mt4外汇黄金交易软件,早期占领了俄罗斯后,招聘世界各地的业务员,用各地的语言打电话给经纪商,如果你用Mt4软件,就在你那里开户。
逐渐杀入全世界的市场。
2004年,迈达克公司开发出Mql4语言,绑定在交易软件Mt4里,专门用于开发EA(Expert Advisor)自动化交易程序,
这是一个小语言,简单易学。
可以开发脚本,EA,指标。
脚本就是一段程序,比如下单指令,在指令里设置好价格,手数等,一键下单,解放人手。
EA就是自动化交易的程序,比如,告诉机器在什么价位做多,什么条件下做空,什么条件下平仓等。
指标就是自己开发一个K线图表。
我研究了一下,懂得 if语句和函数,就可以自己开发简单的EA程序,前提是自己要有交易策略,就是自己知道怎么买卖赚钱,然后把你的想法告诉机器。
比如:
(1) 如果:价格爬上50期均线之上;
(2) 如果:账户里还没有一张订单;
(3) 那么:开仓做多(1手)!
翻译一下就是:
1 if bid>MA_50;
2 if Total Orders=0;
3 then Buy 1 lot。
最后写成机器懂的代码就是:
if(Bid>MA_50)
{
if (OrdersTotal()==0)
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, " ",0, 0,Blue);
}
总结:我们的生活中充满了各种算法,将理工科思维运用到生活和工作。从if 语句开始吧!