試用例思維做交易:把“我覺(jué)得”變成“如果→那么”)
我做測(cè)試快十年了最熟悉的一句話是這個(gè)bug必現(xiàn)嗎。需求文檔是產(chǎn)品經(jīng)理寫(xiě)的行情K線是市場(chǎng)畫(huà)的兩者有個(gè)共同點(diǎn)都不靠譜。但區(qū)別在于產(chǎn)品提了個(gè)模糊需求我有評(píng)審會(huì)可以拍桌子問(wèn)清楚市場(chǎng)給了根大陰線我連個(gè)問(wèn)話的對(duì)象都沒(méi)有。直到某天復(fù)盤(pán)我突然意識(shí)到自己每天都在用測(cè)試思維處理一大堆不確定因素卻從來(lái)沒(méi)把這套方法論用在交易決策上。后來(lái)我試著把用例設(shè)計(jì)、缺陷管理、回歸測(cè)試一整套流程搬進(jìn)個(gè)人交易里發(fā)現(xiàn)效果出奇地好——不是說(shuō)我多會(huì)挑票而是我犯錯(cuò)的次數(shù)明顯變少了犯錯(cuò)的代價(jià)也明顯變小了。這篇文章不是什么薦股指南更不是什么莊家思維揭秘。標(biāo)題里操控股市四個(gè)字純屬調(diào)侃真實(shí)情況恰恰相反市場(chǎng)根本操控不了但你可以用測(cè)試用例原理把應(yīng)對(duì)市場(chǎng)這件事變成一套可執(zhí)行、可復(fù)盤(pán)、可改進(jìn)的標(biāo)準(zhǔn)動(dòng)作。我會(huì)從測(cè)試人員的視角把手里的用例設(shè)計(jì)方法一個(gè)個(gè)映射到行情分析、交易執(zhí)行、風(fēng)險(xiǎn)控制上再給你一套可以直接抄走的模板。適合誰(shuí)來(lái)讀如果你寫(xiě)過(guò)測(cè)試用例這文章會(huì)幫你打開(kāi)一個(gè)新腦洞如果你完全不懂測(cè)試我會(huì)把每個(gè)概念都用大白話解釋清楚也不影響你拿走一套交易前先寫(xiě)檢查清單的思維框架。唯一的前提是你愿意承認(rèn)自己以前那些我覺(jué)得它要漲的判斷本質(zhì)上跟我覺(jué)得這個(gè)功能沒(méi)問(wèn)題一樣不靠譜。1. 行情K線就是一張沒(méi)人寫(xiě)清楚的需求文檔1.1 市場(chǎng)從不告訴你驗(yàn)收標(biāo)準(zhǔn)但異常路徑天天在觸發(fā)做測(cè)試的人有個(gè)職業(yè)病拿到任何東西第一反應(yīng)不是看效果而是找條件。一個(gè)登錄框放在我面前我腦子里自動(dòng)開(kāi)始列用例——正常賬號(hào)能登進(jìn)去、密碼錯(cuò)誤要提示、網(wǎng)絡(luò)超時(shí)要重試、多次失敗要鎖定。這些條件是我根據(jù)需求推導(dǎo)出來(lái)的而需求文檔再爛總歸有文字描述和驗(yàn)收標(biāo)準(zhǔn)。行情市場(chǎng)呢根本沒(méi)有需求文檔。K線圖上每根柱子都是市場(chǎng)走完之后的結(jié)果沒(méi)有人給你寫(xiě)當(dāng)出現(xiàn)某某信號(hào)時(shí)應(yīng)該買(mǎi)入當(dāng)?shù)颇衬硟r(jià)格時(shí)應(yīng)該止損。更麻煩的是市場(chǎng)的異常分支觸發(fā)得比任何系統(tǒng)都頻繁突發(fā)消息導(dǎo)致跳空高開(kāi)、流動(dòng)性枯竭導(dǎo)致閃崩、業(yè)績(jī)暴雷直接一字跌停。這些場(chǎng)景在測(cè)試領(lǐng)域叫異常流在交易領(lǐng)域叫風(fēng)險(xiǎn)。但換個(gè)角度想這恰恰是測(cè)試思維最值錢(qián)的地方。測(cè)試人員處理的本來(lái)就是文檔沒(méi)寫(xiě)清楚、開(kāi)發(fā)理解不到位、用戶實(shí)際亂操作的混沌局面。我們?cè)缇土?xí)慣了在殘缺的信息里提取出有效條件再把條件組合成判定步驟。市場(chǎng)只是把這種混沌放大了十倍但底層邏輯沒(méi)變你得先承認(rèn)自己面對(duì)的是一個(gè)充滿未知分支的系統(tǒng)然后才能談怎么設(shè)計(jì)應(yīng)對(duì)方案。1.2 測(cè)試用例的本質(zhì)把我覺(jué)得翻譯成如果→那么散戶看盤(pán)最典型的操作方式是我覺(jué)得。我覺(jué)得它跌到位了我覺(jué)得明天會(huì)反彈我覺(jué)得這個(gè)板塊有機(jī)會(huì)。這種認(rèn)知模式的問(wèn)題在于它把判斷和決策混成了一件事。判斷錯(cuò)了決策必然跟著錯(cuò)而判斷本身是情緒化的根本沒(méi)經(jīng)過(guò)驗(yàn)證。測(cè)試用例的思維方式是反過(guò)來(lái)的。一條標(biāo)準(zhǔn)用例長(zhǎng)這樣前置條件當(dāng)前處于登錄頁(yè)網(wǎng)絡(luò)正常操作步驟輸入正確用戶名密碼點(diǎn)擊登錄預(yù)期結(jié)果跳轉(zhuǎn)首頁(yè)顯示用戶昵稱(chēng)翻譯成交易語(yǔ)言就是前置條件標(biāo)的處于上升趨勢(shì)大盤(pán)不處于系統(tǒng)性下跌操作步驟當(dāng)價(jià)格回踩20日均線且成交量縮至前日一半時(shí)建立底倉(cāng)預(yù)期結(jié)果價(jià)格在3個(gè)交易日內(nèi)不跌破入場(chǎng)價(jià)5%繼續(xù)持有否則止損離場(chǎng)看出區(qū)別了嗎我覺(jué)得要漲是一句沒(méi)有驗(yàn)證標(biāo)準(zhǔn)的空話。如果回踩均線且縮量那么入場(chǎng)跌破5%則離場(chǎng)是一句可以被驗(yàn)證、被復(fù)盤(pán)、被優(yōu)化的判定規(guī)則。測(cè)試人員天生就習(xí)慣把模糊的需求表述轉(zhuǎn)成可執(zhí)行的用例。這套能力用在交易上解決的不是看準(zhǔn)方向的問(wèn)題而是當(dāng)方向看錯(cuò)時(shí)你怎么知道錯(cuò)、怎么認(rèn)錯(cuò)、怎么退出去的問(wèn)題。1.3 測(cè)試分層思想的交易映射單元、集成、系統(tǒng)全都有對(duì)應(yīng)物做測(cè)試的人都熟悉測(cè)試金字塔最底層是大量單元測(cè)試中間層是集成測(cè)試頂層是少量端到端系統(tǒng)測(cè)試。我后來(lái)發(fā)現(xiàn)這套分層理論放在交易里也成立。單元測(cè)試對(duì)應(yīng)的是你的每一個(gè)單項(xiàng)判斷依據(jù)MACD金叉是不是真的出現(xiàn)了成交量有沒(méi)有放大到閾值財(cái)報(bào)里的毛利率是否符合預(yù)期每一個(gè)單一條件都可以單獨(dú)驗(yàn)證單獨(dú)寫(xiě)下預(yù)期結(jié)果。集成測(cè)試對(duì)應(yīng)的是多個(gè)條件組合后的信號(hào)均線多頭排列、量?jī)r(jià)配合、龍頭板塊帶動(dòng)幾個(gè)單元條件組合在一起才能構(gòu)成一個(gè)可靠的入場(chǎng)信號(hào)。系統(tǒng)測(cè)試對(duì)應(yīng)的則是你的整個(gè)交易策略從買(mǎi)入、持有、加倉(cāng)、減倉(cāng)到清倉(cāng)的全流程跑通加上資金管理、倉(cāng)位控制、情緒規(guī)則。很多人在交易里犯的最大的錯(cuò)就是拿系統(tǒng)級(jí)的資金去賭單元級(jí)的信號(hào)??吹揭粋€(gè)MACD金叉就全倉(cāng)殺入這在測(cè)試領(lǐng)域相當(dāng)于單元測(cè)試還沒(méi)跑就把整個(gè)系統(tǒng)扔到生產(chǎn)環(huán)境上了。后面我會(huì)詳細(xì)展開(kāi)如何用用例設(shè)計(jì)方法來(lái)給信號(hào)分級(jí)、給倉(cāng)位分級(jí)。2. 用例設(shè)計(jì)三件套直接改造成行情分析工具2.1 等價(jià)類(lèi)劃分行情狀態(tài)不是無(wú)限種先歸類(lèi)再?zèng)Q策等價(jià)類(lèi)劃分是所有測(cè)試人員入行學(xué)的第一個(gè)方法。它的核心思想是輸入數(shù)據(jù)太多了測(cè)不完但很多輸入對(duì)程序的處理邏輯來(lái)說(shuō)是等價(jià)的選一個(gè)代表就能覆蓋一整類(lèi)。比如登錄框的用戶名你不需要測(cè)試一萬(wàn)個(gè)不同長(zhǎng)度的字符串劃分成小于6位6到20位大于20位包含特殊字符為空這幾個(gè)等價(jià)類(lèi)就足夠了。行情數(shù)據(jù)也一樣。很多人覺(jué)得K線千變?nèi)f化每個(gè)時(shí)刻都是獨(dú)一無(wú)二的。但站在決策角度市場(chǎng)狀態(tài)完全可以劃分成有限個(gè)等價(jià)類(lèi)。我自己常年在用的劃分方式是行情狀態(tài)判定特征標(biāo)準(zhǔn)動(dòng)作上升趨勢(shì)高點(diǎn)不斷抬高低點(diǎn)不斷抬高均線多頭排列持有或回調(diào)企穩(wěn)后加倉(cāng)下降趨勢(shì)高點(diǎn)不斷降低低點(diǎn)不斷降低均線空頭排列空倉(cāng)等待或僅做反抽橫盤(pán)震蕩價(jià)格在一個(gè)箱體內(nèi)往復(fù)無(wú)明顯方向不參與或輕倉(cāng)高拋低吸轉(zhuǎn)折臨界趨勢(shì)線被突破但還沒(méi)確認(rèn)新趨勢(shì)少量試探嚴(yán)格止損異常波動(dòng)跳空、閃崩、連續(xù)漲停等極端行情停止交易觀察確認(rèn)有了這個(gè)等價(jià)類(lèi)表格你每次打開(kāi)行情軟件的第一件事就不是看看它漲沒(méi)漲而是先判斷當(dāng)前屬于哪個(gè)等價(jià)類(lèi)再?zèng)Q定這個(gè)類(lèi)對(duì)應(yīng)的標(biāo)準(zhǔn)動(dòng)作是什么。這個(gè)習(xí)慣養(yǎng)成了最大的好處是減少了隨意交易。橫盤(pán)時(shí)候手癢想進(jìn)場(chǎng)等價(jià)類(lèi)劃分表告訴你這個(gè)狀態(tài)下你的標(biāo)準(zhǔn)動(dòng)作是不參與。這個(gè)表格你可以打印出來(lái)貼在顯示器邊上它就是你的測(cè)試環(huán)境檢查單。2.2 邊界值分析支撐、壓力、成本線都不是擺設(shè)邊界值分析是等價(jià)類(lèi)劃分的姐妹方法。既然輸入被劃分成了等價(jià)類(lèi)那等價(jià)類(lèi)之間的邊界就特別容易出bug。程序里最常見(jiàn)的問(wèn)題都出在邊界上充值金額剛好等于0元、字符串長(zhǎng)度剛好等于20個(gè)字符、并發(fā)數(shù)剛好達(dá)到上限。測(cè)試?yán)鲜侄记宄吔缰当販y(cè)。交易里的邊界值是什么是那些市場(chǎng)反復(fù)確認(rèn)過(guò)的價(jià)格位置。前期的低點(diǎn)是支撐邊界前期的平臺(tái)是壓力邊界你的持倉(cāng)成本是心理邊界整數(shù)關(guān)口是情緒邊界。這些邊界位置的共同特點(diǎn)是價(jià)格一旦觸及資金行為和情緒反應(yīng)會(huì)顯著變化方向可能就此反轉(zhuǎn)。實(shí)際操作中邊界值分析可以這么用。一只票從10元跌到8元開(kāi)始橫盤(pán)8元就是關(guān)鍵下邊界。根據(jù)邊界值理論你不能等價(jià)格跌破8元才做決定你要在8元附近就預(yù)設(shè)好兩套方案如果價(jià)格在8元上方放量企穩(wěn)視為邊界有效持有底倉(cāng)如果價(jià)格跌破8元且3天內(nèi)收不回來(lái)視為邊界失效無(wú)條件離場(chǎng)。這就是把程序思維里的邊界條件判斷搬到了行情分析上。很多人栽在支撐位不是不知道有支撐而是沒(méi)提前把支撐有效和支撐失效兩種場(chǎng)景的應(yīng)對(duì)方案寫(xiě)下來(lái)真到邊界的時(shí)候全憑臨時(shí)情緒操作。2.3 場(chǎng)景法把一筆完整的交易拆成主流程、備選流、異常流場(chǎng)景法在測(cè)試?yán)锏挠猛臼悄M用戶真實(shí)操作路徑。用戶不會(huì)像測(cè)試用例那樣只點(diǎn)一個(gè)按鈕他會(huì)走完整個(gè)業(yè)務(wù)流程登錄→搜索→下單→支付→查單→退款。每條主流程上都可能岔出備選流和異常流。設(shè)計(jì)測(cè)試用例的時(shí)候你得把這些路徑全部覆蓋到。我把一筆完整的交易也拆成了標(biāo)準(zhǔn)流程建倉(cāng)確認(rèn)趨勢(shì)狀態(tài)按計(jì)劃買(mǎi)入底倉(cāng)持有價(jià)格按預(yù)期發(fā)展持有并設(shè)置跟蹤止盈加倉(cāng)價(jià)格回調(diào)到合理位置且趨勢(shì)未破壞增加倉(cāng)位減倉(cāng)價(jià)格到達(dá)目標(biāo)位或出現(xiàn)滯漲信號(hào)分批兌現(xiàn)清倉(cāng)止盈止損條件觸發(fā)全部離場(chǎng)對(duì)應(yīng)的用例設(shè)計(jì)表長(zhǎng)這樣場(chǎng)景類(lèi)型觸發(fā)條件操作步驟預(yù)期結(jié)果主流程入場(chǎng)信號(hào)出現(xiàn)按計(jì)劃倉(cāng)位建倉(cāng)持倉(cāng)成本在合理區(qū)間方向未被證偽備選流A入場(chǎng)信號(hào)出現(xiàn)但倉(cāng)位已滿不再新開(kāi)倉(cāng)保留觀察不因?yàn)殄e(cuò)過(guò)機(jī)會(huì)而追高備選流B持倉(cāng)中回調(diào)判斷回調(diào)級(jí)別決定持有或減倉(cāng)不在回調(diào)中恐慌割肉異常流A價(jià)格跌破止損線無(wú)條件執(zhí)行止損單次虧損控制在總資金2%以內(nèi)異常流B突發(fā)利空跳空低開(kāi)第一時(shí)間評(píng)估消息級(jí)別決定是否離場(chǎng)避免僥幸心理先離場(chǎng)再重新評(píng)估異常流C連續(xù)漲停無(wú)法買(mǎi)入放棄追漲等待回調(diào)或換標(biāo)的不因踏空情緒而沖動(dòng)交易這張表設(shè)計(jì)好之后剩下的工作就是嚴(yán)格執(zhí)行。測(cè)試人員最清楚一個(gè)道理用例設(shè)計(jì)得再全執(zhí)行的人不按步驟走一切都白搭。交易里的執(zhí)行的人恰恰是你自己所以這條更考驗(yàn)紀(jì)律。我的經(jīng)驗(yàn)是把這張表打印出來(lái)每次下單前強(qiáng)制自己走一遍流程像測(cè)試執(zhí)行一樣打勾。剛開(kāi)始很別扭習(xí)慣了之后你會(huì)有一種奇妙的安心感——同樣面對(duì)波動(dòng)別人在猜而你在按流程執(zhí)行。3. 缺陷思維才是核心武器市場(chǎng)不是沒(méi)bug是沒(méi)人寫(xiě)B(tài)ug報(bào)告3.1 把錯(cuò)誤交易當(dāng)缺陷來(lái)報(bào)你會(huì)拿到一份能救命的復(fù)盤(pán)記錄測(cè)試工程師有個(gè)別人沒(méi)有的職業(yè)習(xí)慣遇到問(wèn)題第一反應(yīng)不是完蛋了而是怎么復(fù)現(xiàn)、什么條件下觸發(fā)的、現(xiàn)在是什么狀態(tài)、日志在哪里。這個(gè)習(xí)慣放在交易里就是傳說(shuō)中的復(fù)盤(pán)但絕大多數(shù)人的復(fù)盤(pán)做得極其敷衍。普通人的復(fù)盤(pán)是唉昨天不該買(mǎi)那只票買(mǎi)進(jìn)去就跌。這種復(fù)盤(pán)除了增加悔恨情緒沒(méi)有任何信息量。缺陷報(bào)告式的復(fù)盤(pán)長(zhǎng)這樣缺陷標(biāo)題[操作失誤] 未按計(jì)劃在壓力位減倉(cāng)導(dǎo)致利潤(rùn)回吐觸發(fā)條件持倉(cāng)浮盈達(dá)到8%接近前期壓力位但當(dāng)天大盤(pán)情緒較好實(shí)際結(jié)果貪婪心理占上風(fēng)未執(zhí)行減倉(cāng)方案持有過(guò)夜預(yù)期結(jié)果按計(jì)劃在壓力位分批減倉(cāng)30%缺陷等級(jí)嚴(yán)重違反交易紀(jì)律復(fù)現(xiàn)概率高頻——每次出現(xiàn)大額浮盈時(shí)都容易觸發(fā)改進(jìn)措施在持倉(cāng)浮盈超過(guò)5%時(shí)強(qiáng)制設(shè)置移動(dòng)止盈提醒避免人為判斷看到了嗎同樣是一次錯(cuò)誤操作普通人只留下懊悔這個(gè)情緒殘留而缺陷報(bào)告把這筆錯(cuò)誤變成了一個(gè)可以被定位、被修復(fù)、被回歸驗(yàn)證的系統(tǒng)缺陷。你積累的每一份交易缺陷報(bào)告都是在給自己這個(gè)交易系統(tǒng)打補(bǔ)丁。我堅(jiān)持寫(xiě)了大概半年之后翻看之前的報(bào)告發(fā)現(xiàn)我反復(fù)犯的錯(cuò)誤其實(shí)集中在兩三類(lèi)上比如浮盈后拿不住虧損后死扛震蕩行情頻繁交易。知道自己的高發(fā)缺陷是什么比知道明天哪個(gè)板塊會(huì)漲重要一百倍。3.2 偶現(xiàn)缺陷和黑天鵝為什么重試三次在市場(chǎng)中行不通做測(cè)試的人都碰到過(guò)那種偶爾閃現(xiàn)、怎么都復(fù)現(xiàn)不了的偶現(xiàn)缺陷。我們的標(biāo)準(zhǔn)處理流程是先讓問(wèn)題掛著附加日志持續(xù)觀察復(fù)現(xiàn)了再提交。這個(gè)方法在軟件領(lǐng)域沒(méi)問(wèn)題因?yàn)檐浖到y(tǒng)里偶現(xiàn)缺陷通常不影響整體上線而且總能等來(lái)復(fù)現(xiàn)的機(jī)會(huì)。市場(chǎng)里的偶現(xiàn)缺陷就是黑天鵝。它們的問(wèn)題不在于偶現(xiàn)而在于一旦發(fā)生你等不到修復(fù)的機(jī)會(huì)。閃崩、流動(dòng)性枯竭、極端波動(dòng)這類(lèi)事件你只能提前預(yù)防不能事后復(fù)現(xiàn)。軟件測(cè)試?yán)镎f(shuō)先復(fù)現(xiàn)再修市場(chǎng)里不適用因?yàn)槭袌?chǎng)從來(lái)不給你復(fù)現(xiàn)后修復(fù)的機(jī)會(huì)。這就是為什么風(fēng)控規(guī)則必須在交易之前設(shè)定好等黑天鵝飛出來(lái)的時(shí)候你只能執(zhí)行不能思考。我在虧過(guò)一大筆錢(qián)之后給自己定了一條死規(guī)矩任何標(biāo)的、任何理由、任何行情單筆虧損不得超過(guò)總資金的2%這屬于系統(tǒng)保護(hù)機(jī)制不經(jīng)過(guò)任何主觀判斷直接生效。你把它理解成交易系統(tǒng)里的熔斷機(jī)制就對(duì)了——先有應(yīng)急預(yù)案再談捕捉機(jī)會(huì)。3.3 缺陷等級(jí)與倉(cāng)位處理Bug嚴(yán)重級(jí)映射資金處理方式軟件里的Bug分四級(jí)致命、嚴(yán)重、一般、輕微。致命bug阻斷上線嚴(yán)重bug必須修復(fù)后才能發(fā)布一般bug可以帶病上線但要有計(jì)劃修復(fù)輕微bug記錄在案攢著處理。這個(gè)分級(jí)思想搬到交易里直接映射的就是倉(cāng)位處理和資金管理。信號(hào)等級(jí)對(duì)應(yīng)場(chǎng)景倉(cāng)位建議風(fēng)險(xiǎn)處理致命級(jí)大盤(pán)破位、個(gè)股基本面惡化、監(jiān)管政策轉(zhuǎn)向空倉(cāng)或清倉(cāng)無(wú)條件離場(chǎng)禁止抄底嚴(yán)重級(jí)趨勢(shì)破壞、跌破關(guān)鍵支撐、量?jī)r(jià)嚴(yán)重背離減倉(cāng)至底倉(cāng)反彈即離場(chǎng)不抱幻想一般級(jí)短期超買(mǎi)、臨近壓力位、市場(chǎng)情緒過(guò)熱倉(cāng)位減半設(shè)緊止損不追高輕微級(jí)盤(pán)中正常波動(dòng)、板塊輪動(dòng)、情緒起伏持倉(cāng)不動(dòng)忽略噪音不頻繁操作這個(gè)映射表的意義在于你把行情信號(hào)分類(lèi)分級(jí)之后倉(cāng)位處理和風(fēng)險(xiǎn)控制會(huì)自動(dòng)跟著等級(jí)走不會(huì)出現(xiàn)看到一個(gè)一般級(jí)信號(hào)卻用了致命級(jí)倉(cāng)位這種錯(cuò)配。測(cè)試行業(yè)的經(jīng)驗(yàn)已經(jīng)無(wú)數(shù)遍地證明最高級(jí)的質(zhì)量事故很少是單個(gè)bug導(dǎo)致的往往是一個(gè)個(gè)看起來(lái)不起眼的小問(wèn)題累積之后集中爆發(fā)。交易同樣如此真正讓你巨虧的從來(lái)不是一次獨(dú)立決策失誤而是你在信號(hào)等級(jí)判斷、倉(cāng)位控制、止損執(zhí)行多個(gè)環(huán)節(jié)同時(shí)出錯(cuò)。缺陷分級(jí)思維就是給這套多環(huán)節(jié)出錯(cuò)加一道防火墻。3.4 單測(cè)、集成測(cè)試、系統(tǒng)測(cè)試把資金分成不同測(cè)試環(huán)境前面提到測(cè)試分層這里展開(kāi)說(shuō)說(shuō)資金怎么按環(huán)境管理。軟件研發(fā)有開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、預(yù)發(fā)布環(huán)境、生產(chǎn)環(huán)境代碼是逐步從這個(gè)環(huán)境升到那個(gè)環(huán)境的誰(shuí)也不會(huì)直接把沒(méi)測(cè)過(guò)的代碼扔到生產(chǎn)上。我把自己的總資金也劃分成了四個(gè)環(huán)境生產(chǎn)環(huán)境大頭60%以上只用于執(zhí)行已經(jīng)被驗(yàn)證過(guò)多次的成熟策略嚴(yán)格控制單筆風(fēng)險(xiǎn)預(yù)發(fā)布環(huán)境20%左右用于執(zhí)行有部分歷史數(shù)據(jù)支撐、但還沒(méi)經(jīng)過(guò)足夠?qū)嵄P(pán)驗(yàn)證的新策略測(cè)試環(huán)境10%到15%用來(lái)驗(yàn)證自己的新想法新方法虧光算學(xué)費(fèi)觀察環(huán)境5%以內(nèi)純學(xué)習(xí)用途的一手觀察倉(cāng)虧了不影響心態(tài)資金分環(huán)境管理之后最大的好處是心理壓力被物理隔離了。你用測(cè)試環(huán)境的錢(qián)去試一個(gè)新想法虧了也不會(huì)產(chǎn)生完蛋了這是養(yǎng)家糊口的錢(qián)的恐懼而測(cè)試想法一但連續(xù)驗(yàn)證成功再逐步升到預(yù)發(fā)布和生產(chǎn)。這正是軟件工程里的持續(xù)集成、持續(xù)驗(yàn)證、灰度發(fā)布思路。很多人在交易上虧錢(qián)核心原因不是沒(méi)能力而是拿生產(chǎn)環(huán)境的錢(qián)去測(cè)試一個(gè)未經(jīng)驗(yàn)證的想法一旦失敗傷筋動(dòng)骨之后的心態(tài)又會(huì)讓所有決策變形。4. 實(shí)測(cè)復(fù)盤(pán)一套交易用例集如何覆蓋一波完整行情4.1 先寫(xiě)測(cè)試計(jì)劃交易前先定義發(fā)布標(biāo)準(zhǔn)測(cè)試工程師在執(zhí)行一輪測(cè)試之前會(huì)先寫(xiě)測(cè)試計(jì)劃測(cè)什么、不測(cè)什么、通過(guò)標(biāo)準(zhǔn)是什么、風(fēng)險(xiǎn)在哪里。沒(méi)有發(fā)布標(biāo)準(zhǔn)的測(cè)試是測(cè)了個(gè)寂寞。放到交易里我以前看上一只票就直接買(mǎi)買(mǎi)完才想為什么買(mǎi)。學(xué)了測(cè)試思維之后我給自己加了一道強(qiáng)制工序先寫(xiě)交易測(cè)試計(jì)劃再動(dòng)手。模板是這樣的【標(biāo)的】XXX觀察標(biāo)的 【趨勢(shì)狀態(tài)判定】周線均線多頭排列日線處于上升趨勢(shì)回調(diào)段 【入場(chǎng)觸發(fā)條件】日線縮量回踩20日均線且收盤(pán)價(jià)站回5日均線上方 【倉(cāng)位計(jì)劃】總資金5%測(cè)試環(huán)境倉(cāng)位分兩筆買(mǎi)入 【止損條件】入場(chǎng)價(jià)下方3%止損 【止盈條件】到達(dá)前高壓力位減半倉(cāng)剩余倉(cāng)位跟蹤10日均線持有 【持倉(cāng)周期預(yù)判】2到4周 【失效條件】若一周內(nèi)未觸發(fā)入場(chǎng)信號(hào)放棄本次計(jì)劃 【風(fēng)險(xiǎn)提示】大盤(pán)如果同步走弱取消本次計(jì)劃這份測(cè)試計(jì)劃就是我說(shuō)的發(fā)布標(biāo)準(zhǔn)——沒(méi)有它的交易全部算違規(guī)操作。它最大的作用不是預(yù)測(cè)行情而是把要不要買(mǎi)這個(gè)容易情緒化的問(wèn)題拆成條件成不成立這個(gè)客觀判斷問(wèn)題。寫(xiě)測(cè)試計(jì)劃的這個(gè)過(guò)程其實(shí)就是在強(qiáng)制你走一遍需求分析把模糊的想法變成清晰的條件。4.2 手工執(zhí)行一次完整的用例集從觀望到離場(chǎng)為了讓你更直觀地理解這套東西怎么跑起來(lái)我復(fù)盤(pán)一次完整的實(shí)盤(pán)操作過(guò)程。標(biāo)的某只處于上升趨勢(shì)的科技類(lèi)個(gè)股我給它起了個(gè)代號(hào)叫X標(biāo)的。當(dāng)時(shí)日線級(jí)別在走上升趨勢(shì)中的回調(diào)符合我交易測(cè)試計(jì)劃中預(yù)設(shè)的入場(chǎng)場(chǎng)景。第一步執(zhí)行入場(chǎng)用例。我在連續(xù)三天縮量回調(diào)之后觀察到第四天價(jià)格低開(kāi)高走收盤(pán)站回5日均線上方同時(shí)成交量相比前一日放大。入場(chǎng)用例的所有前置條件全部滿足我按計(jì)劃價(jià)買(mǎi)入測(cè)試環(huán)境倉(cāng)位的2%。這時(shí)候我并沒(méi)有確定它一定漲我執(zhí)行的是條件滿足則執(zhí)行的規(guī)則。第二步執(zhí)行持倉(cāng)用例。買(mǎi)入后價(jià)格走勢(shì)符合預(yù)期連續(xù)兩天收陽(yáng)。但在第三天價(jià)格沖高回落留下了根長(zhǎng)上影線。這一步用例要求我判斷當(dāng)前屬于哪個(gè)等價(jià)類(lèi)上升趨勢(shì)中的正常震蕩還是轉(zhuǎn)折臨界我看了下成交量沒(méi)有明顯放大5日線也沒(méi)有拐頭判定為正常震蕩按用例繼續(xù)持有。第三步執(zhí)行加倉(cāng)用例。又過(guò)了三個(gè)交易日價(jià)格回踩5日均線后再次拉升且突破了前一個(gè)高點(diǎn)。加倉(cāng)條件觸發(fā)我按計(jì)劃補(bǔ)了剩余的2%倉(cāng)位總倉(cāng)位到4%。第四步執(zhí)行異常流。當(dāng)天晚上出了個(gè)行業(yè)利空消息第二天直接低開(kāi)3%。缺陷思維在這一刻救了我我提前寫(xiě)過(guò)異常流預(yù)案單只標(biāo)的最多虧損3%止損線。低開(kāi)3%沒(méi)有跌破止損線但擊穿了5日均線。我執(zhí)行了減倉(cāng)一半的操作等盤(pán)中觀察。下午價(jià)格慢慢收回來(lái)一部分但明顯感覺(jué)到上攻乏力。我按計(jì)劃在收盤(pán)前把剩余倉(cāng)位也清掉了。這一波操作因?yàn)樘崆霸O(shè)計(jì)了用例我只虧損了約1.5%的總資金而如果是以前我很可能死扛著等回本然后越虧越多。更重要的是事后我把這次操作寫(xiě)成了缺陷報(bào)告入場(chǎng)沒(méi)問(wèn)題但加倉(cāng)的觸發(fā)條件是突破前高而我忽略了前高成交量更大的事實(shí)導(dǎo)致買(mǎi)入后承接不足。這個(gè)缺陷后來(lái)被我寫(xiě)進(jìn)了用例集的回歸測(cè)試清單里。4.3 用例維護(hù)每周回顧刪過(guò)時(shí)用例加新場(chǎng)景軟件系統(tǒng)的功能會(huì)變測(cè)試用例當(dāng)然要跟著維護(hù)。市場(chǎng)更是如此每波行情的邏輯不一樣如果用例集三年不更新等著你的就是回歸測(cè)試全掛。我的用例維護(hù)節(jié)奏是每周日晚上花一個(gè)小時(shí)。第一步把當(dāng)周實(shí)際走勢(shì)和預(yù)測(cè)走勢(shì)對(duì)照逐條檢查用例預(yù)期是否準(zhǔn)確發(fā)現(xiàn)與市場(chǎng)行為不符的用例直接標(biāo)記待修訂或作廢。第二步把當(dāng)周觸發(fā)過(guò)的異常流記錄下來(lái)補(bǔ)充新的異常場(chǎng)景——比如業(yè)績(jī)預(yù)告超預(yù)期跳空高開(kāi)這種以前沒(méi)考慮過(guò)的場(chǎng)景現(xiàn)在就要加進(jìn)異常流用例里。第三步清理掉已經(jīng)失效的邊界條件——之前某只票的支撐位反射在走勢(shì)失效后就把它從邊界值表里劃掉。這個(gè)堅(jiān)持做了大概一年之后我的交易用例集已經(jīng)迭代到了第三版?;仡^翻第一版很多當(dāng)時(shí)的鐵律后來(lái)都被推翻了但這就是用例維護(hù)的價(jià)值你的交易系統(tǒng)在進(jìn)化進(jìn)化的前提是先有一個(gè)能改的基線。沒(méi)有基線就沒(méi)有優(yōu)化對(duì)象。5. 這套方法的天花板測(cè)試思維管不了的事5.1 市場(chǎng)是活需求測(cè)試思維默認(rèn)需求是穩(wěn)定的我得誠(chéng)實(shí)地說(shuō)測(cè)試思維不是萬(wàn)能的。它最根本的預(yù)設(shè)前提是被測(cè)系統(tǒng)的需求相對(duì)穩(wěn)定bug可以被修復(fù)回歸測(cè)試有意義。因?yàn)榇a不會(huì)自己長(zhǎng)出新功能今天測(cè)過(guò)的頁(yè)面明天大概率還是這樣。但市場(chǎng)不是。市場(chǎng)是一個(gè)會(huì)自我演化的復(fù)雜系統(tǒng)。你測(cè)試出來(lái)的規(guī)則可能只適用于某段時(shí)間的特定行情風(fēng)格。適用于震蕩市的策略放在單邊牛市里會(huì)賣(mài)飛適用于普漲行情的策略放在結(jié)構(gòu)性行情里會(huì)連續(xù)止損。這是測(cè)試思維在交易里的第一道天花板你可以把市場(chǎng)當(dāng)成一個(gè)待測(cè)系統(tǒng)來(lái)觀察但不能真的把市場(chǎng)當(dāng)成一個(gè)需求穩(wěn)定的老系統(tǒng)來(lái)套用規(guī)則。所以我的建議是用例集必須短周期更新并且永遠(yuǎn)對(duì)規(guī)則失效保持警覺(jué)。5.2 回歸測(cè)試有效是因?yàn)榇a不會(huì)自我演化市場(chǎng)會(huì)繼續(xù)說(shuō)上面這點(diǎn)。軟件里的回歸測(cè)試之所以有效是因?yàn)榇a的bug是固定的——一個(gè)空指針不放指針修正它永遠(yuǎn)不會(huì)自己變成好的。你可以跑一百遍回歸測(cè)試只要開(kāi)發(fā)不提交新代碼結(jié)果就永遠(yuǎn)是同樣的。市場(chǎng)恰恰相反一個(gè)過(guò)去成功率80%的信號(hào)一旦用的人多了它就會(huì)迅速失效因?yàn)槭袌?chǎng)是無(wú)數(shù)交易者博弈的結(jié)果而不是一行固定的代碼。這就是為什么我強(qiáng)調(diào)每次復(fù)盤(pán)都要更新用例集而不是一招鮮吃遍天。你在用測(cè)試思維構(gòu)建交易系統(tǒng)的同時(shí)必須有一個(gè)另外的元測(cè)試在盯著一件事這套用例本身還有沒(méi)有效這個(gè)元測(cè)試是測(cè)試思維之外的東西它更多靠的是市場(chǎng)嗅覺(jué)、信息敏感度、博弈理解。5.3 最危險(xiǎn)的誤區(qū)把回測(cè)通過(guò)當(dāng)上線無(wú)缺陷做過(guò)測(cè)試的人對(duì)測(cè)試通過(guò)四個(gè)字有本能的警惕因?yàn)槲覀円?jiàn)過(guò)太多開(kāi)發(fā)說(shuō)環(huán)境沒(méi)問(wèn)題結(jié)果一上線就崩的事故。奇怪的是同樣的邏輯漏洞放在交易上無(wú)數(shù)人會(huì)犯拿著幾個(gè)月的回測(cè)數(shù)據(jù)一看年化收益30%就以為策略穩(wěn)了結(jié)果實(shí)盤(pán)跑三個(gè)月虧到姥姥家?;販y(cè)數(shù)據(jù)本質(zhì)上是歷史樣本和軟件測(cè)試?yán)锏臏y(cè)試數(shù)據(jù)是兩碼事。測(cè)試數(shù)據(jù)是你可以控制的已知條件回測(cè)數(shù)據(jù)是市場(chǎng)已經(jīng)走過(guò)的未知路徑?;販y(cè)最大的坑是過(guò)擬合參數(shù)調(diào)得越精細(xì)、回測(cè)曲線越漂亮大概率越?jīng)]用。我的經(jīng)驗(yàn)是回測(cè)只是萬(wàn)里長(zhǎng)征第一步它最大的價(jià)值是幫你排除明顯不靠譜的策略而不是幫你確認(rèn)某個(gè)策略一定能賺錢(qián)。新策略必須先在測(cè)試環(huán)境小倉(cāng)位跑足夠久連續(xù)驗(yàn)證有效后才升到預(yù)發(fā)布和生產(chǎn)環(huán)境。5.4 擺正位置這套思維是減少錯(cuò)誤的工具不是找到圣杯的捷徑把話說(shuō)回來(lái)測(cè)試思維在交易里最重要的價(jià)值不是幫你看得更準(zhǔn)而是幫你錯(cuò)得更少、錯(cuò)得更小。軟件測(cè)試圈有句老話測(cè)試不能保證沒(méi)有bug但能顯著降低bug流入生產(chǎn)的概率。交易里同樣如此沒(méi)有哪個(gè)策略能保證你每次都對(duì)但一套好的交易用例集能保證你在判斷錯(cuò)誤的時(shí)候代價(jià)是可控的。踩過(guò)幾次坑之后我的感受是大多數(shù)人虧錢(qián)不是因?yàn)榉较蚺袛嗄芰Σ疃且驗(yàn)檫B最基本的執(zhí)行紀(jì)律都沒(méi)有。買(mǎi)之前沒(méi)有觸發(fā)條件賣(mài)之前沒(méi)有止損線浮盈了拿不住浮虧了死扛到底。這套像測(cè)試用例一樣的行為框架幫我把這些低級(jí)失誤一個(gè)個(gè)堵住了。它不會(huì)讓你一夜暴富但會(huì)讓你在市場(chǎng)上活得更久而活著本身就是復(fù)利的前提。最后再分享一個(gè)我堅(jiān)持了很久的小習(xí)慣每次交易結(jié)束無(wú)論是賺是虧都要寫(xiě)一條交易執(zhí)行記錄格式跟缺陷報(bào)告一樣。賺了也寫(xiě)虧了也寫(xiě)一筆都不落下。一年之后你回看這些記錄會(huì)比任何技術(shù)指標(biāo)都更能幫你認(rèn)清自己。這大概是測(cè)試這份職業(yè)送給我最大的禮物——面對(duì)不確定的復(fù)雜系統(tǒng)不要靠感覺(jué)要靠用例不要怕出錯(cuò)要怕的是出錯(cuò)了不報(bào)、不修、不改。