一聽到“算法(Algorithm)”這個(gè)詞,你是否覺得很艱深晦澀?
的確,以前,這只是數(shù)學(xué)、計(jì)算機(jī)等理工科的專業(yè)詞匯。
事實(shí)上,隨著近兩年大數(shù)據(jù)、無人機(jī)、人工智能等的出現(xiàn),
你已經(jīng)對(duì)這個(gè)詞不會(huì)感到陌生了。
那么什么是算法?
所謂“算法”,指的就是“對(duì)特定問題的解決步驟”。
關(guān)鍵詞是步驟,
計(jì)算機(jī)完成一系列的指令,按照設(shè)定的步驟。
我們生活、工作中的每一件事情也需要按計(jì)劃,按步驟去完成,
否則就會(huì)亂,事情進(jìn)行就不會(huì)那么順利。
學(xué)習(xí)算法,用理工科的思維考慮問題,會(huì)有什么好處呢?
1. 邏輯性更強(qiáng),如果說計(jì)算機(jī)是邏輯思維的產(chǎn)物,我想大家不會(huì)反對(duì)吧?
2. 做事更有條理性,計(jì)劃性,
3. 思維更發(fā)散,眼界更開闊。
我們先來看看計(jì)算機(jī)的工作方法。
01
人的思考模式,請(qǐng)看
1. 人是會(huì)死的。(大前提)
2. 張三是人。(小前提)
3. 所以張三會(huì)死。(結(jié)論)
這是演繹推理的三段論。
我們看看計(jì)算機(jī)怎么思考:
1. 如果人是會(huì)死的。(大前提)
2. 如果張三是人。(小前提)
3. 那么,張三會(huì)死。(結(jié)論)
把它翻譯成計(jì)算機(jī)語言:
1. if 人是會(huì)死的。(大前提)
2. if 張三是人。(小前提)
3. then 張三會(huì)死。(結(jié)論)
if語句是指編程語言(包括c語言,C#,VB,匯編語言, Python, Matlab等)中用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。
02 ? ?
if 語句三種形式:
1) ?if(表達(dá)式) 語句
如果表達(dá)式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。其過程可表示為下圖。
舉個(gè)栗子:
if ?(今天不下雨)
爬山;
2) ?if-else語句
if(表達(dá)式)
語句1;
else
語句2;
其語義是:如果表達(dá)式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2 。其執(zhí)行過程可表示為下圖。
舉個(gè)例子:
if ?(今天不下雨)
爬山;
else
宅在家里;
3) if-else-if語句
前二種形式的if語句一般都用于兩個(gè)分支的情況。
當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語句,
其一般形式為:
if(表達(dá)式1)
語句1;
else if(表達(dá)式2)
語句2;
else if(表達(dá)式3)
語句3; …
else if(表達(dá)式m)
語句m;
else 語句n;
其語義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語句。然后跳到整個(gè)if語句之外繼續(xù)執(zhí)行程序。 如果所有的表達(dá)式均為假,則執(zhí)行語句n。然后繼續(xù)執(zhí)行后續(xù)程序。 if-else-if語句的執(zhí)行過程如下圖所示。
舉個(gè)栗子:去圖書館借書
if ?(《思考,快與慢》有)
借;
else if (《從0到1》有)
借;
else if(《稀缺》有)
借;
else if(《學(xué)會(huì)提問》有)
借;
else if(《錯(cuò)覺》有)
借;
。。。。。。
03
女兒3歲。
做過父母的人都有經(jīng)驗(yàn),小孩經(jīng)常會(huì)要求買這個(gè)買那個(gè),看到其他小朋友的芭比娃娃,她想要一個(gè),
看到動(dòng)畫片里的小熊,她想要一個(gè)。
早上一起來,要求看動(dòng)畫片......
每天很多要求。而且一提出要求,就想立刻得到滿足。
不要告訴小朋友,等一下,一會(huì),我發(fā)現(xiàn)不好使。
幾歲的小孩,完全沒有時(shí)間概念,在他們看來,一會(huì)、明天、下周,
就意味著永遠(yuǎn)不會(huì)來到。(當(dāng)然可以用轉(zhuǎn)移注意力的方法)
想起我小時(shí)候,物質(zhì)缺乏,玩具都沒見過,
一個(gè)月才吃一兩回肉。每到吃肉時(shí),感覺肉特別香,
每天盼望過年,過年有糖吃,有新衣服穿,
過年前,一拿到村里的裁縫做的土布衣服,
除夕夜,新衣服放在枕頭邊,
摸了又摸,聞了又聞,那種味道,那種感覺我至今還記憶猶新。
這是延遲滿足帶來的高級(jí)感受。
現(xiàn)在物質(zhì)泛濫,追求及時(shí)滿足的時(shí)代,
再也沒法體會(huì)那種愉悅的感覺了。
有人說,從吃飯來說,微波爐和快餐造成了及時(shí)滿足,
微波爐將食物一叮,就可以吃了;
肚子餓了,有“餓了么“,”百度外賣“,一個(gè)電話就來了。
小時(shí)候,燒柴火煮飯,那個(gè)慢呀,遇到下雨天,有時(shí)生火都要半個(gè)小時(shí)。
過年過節(jié),等飯吃,時(shí)不時(shí)到廚房逗一圈,媽媽往我嘴里塞一塊肉,那個(gè)美味呀!
現(xiàn)在還流口水。
我既然是延遲滿足的收益者,
每當(dāng)女兒有要求,
我常常運(yùn)用延遲滿足+if語句:
-我要看電視。
-如果你把數(shù)字從1到10讀3遍,就可以看了。
-我要像一個(gè)這樣的小貓玩具。
-如果你從今天起積分滿50就可以有一個(gè)了。
-我要吃冰淇淋。
-如果夏天來了,我們就可以吃冰淇淋了。
。。。。。。
一開始,各種哭鬧,各種撒橫,一定要馬上要。
慢慢地,知道不能輕易破我們定下的規(guī)矩,就開始來適應(yīng)這些if規(guī)則了。
04
朋友從事外匯行業(yè)。
有一天聊天,我們談到量化交易,自動(dòng)化交易的趨勢(shì)和可能性。
科技方面,從大數(shù)據(jù),無人機(jī),再到人工智能,各種算法發(fā)展日新月異,
能用機(jī)器搞定的就不用人,(近年來人工成本逐年高漲)
科龍美的等大型電器廠,早就開始使用機(jī)械手臂,取代一線工人進(jìn)行危險(xiǎn)、繁重的工作;
富士康已經(jīng)裝備600萬臺(tái)機(jī)器人,取代一線工人的機(jī)械、簡(jiǎn)單重復(fù)的工作。
近年來這類新聞層出不窮,
據(jù)說,不久的將來,現(xiàn)在一半以上的工作將被機(jī)器人取代,
搞到人人自危,焦慮自己的飯碗被機(jī)器人搶走。
金融行業(yè),比如,銀行的柜員,明顯少了很多崗位,人們主要的業(yè)務(wù)自動(dòng)取款機(jī)存取款;
尤其現(xiàn)在微信、支付寶支付非常方便,更加大大減少了銀行的這些業(yè)務(wù)量。
說到外匯,為何沒有人把開發(fā)無人機(jī)的智慧用于外匯交易呢?
有人說,那些高科技的研究發(fā)明者,不屑投身到金融行業(yè),
因?yàn)樵谒麄兛磥?,金融行業(yè)給人總是投機(jī)取巧,貪婪的固有印象。
一家之言,無法考證,一笑了之。
不過,一但有資本巨頭,在這方面投入,自動(dòng)化交易會(huì)徹底改變這個(gè)行業(yè)。
外匯行業(yè),每天成交4萬億美元,24小時(shí)開市,有其獨(dú)特的魅力:公開、透明、公正。
80% 的經(jīng)紀(jì)商用的是Mt4軟件,
是俄羅斯的一家軟件公司開發(fā)的。
正式這家公司,改變了我對(duì)俄羅斯科技的看法。
我只知道俄羅斯的重工業(yè),軍工行業(yè)發(fā)達(dá),最著名的恐怕是AK47,
質(zhì)量好、體積大、重量重。
萬萬沒想到,這個(gè)軟件這么好,小巧,功能強(qiáng)大。
據(jù)說,邁達(dá)克公司的Mt4外匯黃金交易軟件,早期占領(lǐng)了俄羅斯后,招聘世界各地的業(yè)務(wù)員,用各地的語言打電話給經(jīng)紀(jì)商,如果你用Mt4軟件,就在你那里開戶。
逐漸殺入全世界的市場(chǎng)。
2004年,邁達(dá)克公司開發(fā)出Mql4語言,綁定在交易軟件Mt4里,專門用于開發(fā)EA(Expert Advisor)自動(dòng)化交易程序,
這是一個(gè)小語言,簡(jiǎn)單易學(xué)。
可以開發(fā)腳本,EA,指標(biāo)。
腳本就是一段程序,比如下單指令,在指令里設(shè)置好價(jià)格,手?jǐn)?shù)等,一鍵下單,解放人手。
EA就是自動(dòng)化交易的程序,比如,告訴機(jī)器在什么價(jià)位做多,什么條件下做空,什么條件下平倉(cāng)等。
指標(biāo)就是自己開發(fā)一個(gè)K線圖表。
我研究了一下,懂得 if語句和函數(shù),就可以自己開發(fā)簡(jiǎn)單的EA程序,前提是自己要有交易策略,就是自己知道怎么買賣賺錢,然后把你的想法告訴機(jī)器。
比如:
(1) ?如果:價(jià)格爬上50期均線之上;
(2) ?如果:賬戶里還沒有一張訂單;
(3) ?那么:開倉(cāng)做多(1手)!
翻譯一下就是:
1 ?if ?bid>MA_50;
2 ?if ?Total Orders=0;
3 ?then ?Buy 1 lot。
最后寫成機(jī)器懂的代碼就是:
if(Bid>MA_50)
{
if (OrdersTotal()==0)
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, " ",0, 0,Blue);
}
總結(jié):我們的生活中充滿了各種算法,將理工科思維運(yùn)用到生活和工作。從if 語句開始吧!