量化交易軟件:隨機游走和趨勢指標
簡介
擲硬幣游戲很久以來就存在了。讓我們來玩這個游戲,不過目的在于測試并理解 FOREX 市場中的技術交易機制。赫茲量化并不是第一個將硬幣拿在手中的人。那些希望更加詳細地學習概率論的人可以參考 William Feller 所寫的《An Introduction to Probability Theory and Its Applications》(概率論及其應用)一書。我們的目標是理解交易機制。

編輯切換為居中
隨機游走及其特性
赫茲量化先使用隨機數生成器模擬擲硬幣游戲的結果。那么,讓正面為 +1,反面為 -1。第 i 次擲硬幣的結果為 x (i) = p (1/2),其中 p (1/2) 為一個函數,取值為 +1,其概率為 1/2 以及 -1,其概率同樣為 1/2。
則隨機游走將只是 x(i) 的和。為了簡化,我們從零開始。

編輯
圖 1. 隨機游走:(垂直軸 - 線條上的當前位置,水平軸 - 時間步數)
隨機游走經過充分的研究,并且具有某些顯著的特性。讓我們總結一下對我們有用的特性:
反正弦律。赫茲量化擲硬幣的時間越長,隨機游走位置穿越零值的次數就越少。
大約 90% 的時間隨機游走位于零值的一側。實際上,這兩條理論在實際交易中毫無用處。我們基本上只需要它們來強調實際貨幣匯率與隨機游走之間的差異。
隨機游走圖是不規(guī)則碎片形,即隨著比例的變化,它保持與本身類似。不規(guī)則碎片形是一個優(yōu)美的詞,如同不規(guī)則圖像一樣。隨機游走的統(tǒng)計參數在比例上保持不變時,這點非常有用。
醉酒水手理論。隨機游走是醉酒水手在花錢之后,離開酒館,以和步數(或擲硬幣的次數)的平方根成正比的平均速度走過的軌跡。這是一條非常有用的理論,因為它允許我們評估事件的隨機性或非隨機性。如果我們在擲 100 次硬幣中神奇地擲出 65 次正面,則我們非常幸運,或者我們應該分享部分獎金及此類奇跡的用處?
隨機游走可用于交易。實際上,長久以來,學生們已經注意到這種現象,并且在課間休息時玩“正面或反面”的游戲。隨機游走可用于組織一個賭博市場。當前市場中的所有交易規(guī)則都適用,但是代替采有貨幣匯率,我們采用隨機游走匯率。同平常一樣,將有一些收取點差、手續(xù)費和稅費的中間人。但是我們將善意地請求他們從現在起不要拿走任何東西了,并且不要破壞我們的游戲。
關于交易的一些解釋:
使用隨機游走,能夠猜測隨機游走位置在下一時刻將移往何處。
在經過足夠多的時間步長之后,位置可以從任意距離上的零值移到正值或負值。
平均而言,沒有任何一個交易系統(tǒng)能夠以隨機游走匯率實現既不贏,也不輸。在這里,值得指出,盡管這是一個賭博市場,交易系統(tǒng)的余額也可能變?yōu)樨摂?。赫茲量化以有限時間步數進行交易。在擲最后一次硬幣時,所有交易結束?!捌骄浴币辉~的意思是“對所有可能的值的集合取平均值”。 如果交易系統(tǒng)預付款受限并且無法進入負值,則以下說法成立:任何依據隨機游走數據積極交易的系統(tǒng)都將一直虧錢,直到全部賠光為止。
如果我們允許中間人從每筆交易中抽取少量點差,則資金將以與交易數量成正比的速率減少。有中間人交易時的最佳策略是根本不參與。如果您真的想交易,則您的最佳下注是將所有一切都放在一筆交易中。在這種情形下,贏的概率最大,但是仍然小于 0.5。
大多數指標和 EA 交易將采用隨機游走數據。其中很多將提供買入或賣出信號。但是它們的信號絕對是沒有意義的。在使用隨機游走數據進行交易并存在中間人的情形中,正確的 EA 交易應只提供一個建議:“不要入市”。
任何依據隨機游走數據的交易策略的 Z 帳戶的值通常以零為中心分布。對于某些隨機游走數據,Z 帳戶的具體值并不會突顯某個交易策略的特征。在使用隨機游走數據時,所有的貓都是灰貓,在某種意義上所有交易策略都是一樣的。交易策略的不同之處在于猜測將來變化的方式,而隨機游走的位置是不可預測的。
在隨機游走數據中,赫茲量化可以觀察到趨勢、循環(huán)、反轉圖案、通道以及其他技術分析特征。這些都是想象的圖案,在交易中并不會提供幫助。這是交易者的心理 - 看到沙漠中的綠洲,而在那里真的找不到一丁點兒信息。
如果兩個人,將使用數量有限的硬幣玩“正面或反面”的擲硬幣游戲,則平均而言,贏家將是具有更多硬幣的那個人,因此游戲將在另一個人輸光錢之后自動終止。如果交易者和市場玩“正面或反面”游戲,則平均而言,交易者獲勝的機會與交易者的資金和市場的量的比例成正比。簡單而言 - 交易者沒有機會。即使沒有主持人。
使用隨機游走數據也可奪冠。向每名參賽者提供虛擬預付款。贊助商承諾向獲得最多虛擬金錢的人獎勵真錢。盈利的數學期望值變?yōu)檩^大的正值。出現專為奪冠而優(yōu)化的加倍下注策略實施問題。最大膽的玩家會在結束之前用光他們的所有預付款,而謹慎的玩家不會贏得足夠多的資金。在兩者中間的玩家中,將依據隨機游走玩抽彩。有趣的是,除了針對擲硬幣的次數以及初始預付款優(yōu)化策略以外,還應針對大膽型玩家和其他類型的玩家的數量優(yōu)化策略。但是我們會在另一篇文章討論這個問題。隨機游走的好處在于它允許我們在模擬期間以數字和分析方式解決此類優(yōu)化問題。并且一旦解決并理解了問題,則可用于實際生活中。
真實貨幣報價和隨機游走數據之間的差異
第 1-8 條說法非常悲觀。它們預測在隨機游走市場中交易的任何交易者都會無條件損失預付款。但是貨幣對的報價不同于隨機游走數據。這些差異是制定一個可盈利(平均而言)的交易策略的關鍵。讓我們列出真實貨幣匯率和隨機游走數據之間的主要差異。
真實貨幣匯率受基礎經濟因素的限制,并且位于某個基礎水平通道以內。依據此事實,舉例而言,我們可以按照長時間框架的“波動”制定一個交易策略。
真實貨幣匯率的變化有時可依據當前的新聞進行預測。
在真實貨幣匯率和隨機游走的參數的統(tǒng)計分布之間存在差異。這一非常普遍的說法是大量交易策略的關鍵。真實貨幣匯率或隨機游走被視為一系列的數字。任務是在這些序列中找出統(tǒng)計規(guī)律,并依據這些規(guī)律預測將來的值。
隨機游走中的眾多變化是一系列的隨機取值 +1 和 -1。那么,赫茲量化如何在這個序列中找到統(tǒng)計趨勢?此問題與驗證序列是否具有隨機性的任務一致。已經開發(fā)出很多隨機性測試。如果任何測試在一個序列中顯示出“隨機性”,則可以據其制定交易策略。
趨勢的概念
最簡單的測試如下所述。一個序列中 +1 和 -1 的數量大體是相同的。按照醉酒水手理論,一般而言,+1 的數量與 -1 的數量之差不會超過序列中數據數量的平方根。對于實際匯率,通過基礎通道對真實匯率施加的限制來執(zhí)行此隨機性測試。在這里,我們不能制定一個交易策略。
另一測試要有趣得多。讓我們統(tǒng)計 "+1,+1"、"+1,-1"、"-1,+1" 和 "-1,-1" 鏈的數量。在一個隨機序列中,各個數字的數量應大體相同(再一次指出,類似于醉酒水手理論)。如果 "++" 鏈(重命名為 "+1+1")的數量突然遠大于 "+-" ("+1,-1") 鏈的數量,則我們制定一個策略:在每個 "+" 之后,我們下注于 "+"。依據統(tǒng)計,我們應該有一半以上的贏錢可能。
讓我們將最后一段轉換為交易者的語言。最流行的交易策略為順勢策略。及時辨別趨勢,從而及時進入或退出是這些策略的主要目的。但存在錯誤的趨勢幻想,如同隨機游走。上述鏈的數量測試,將有助于從真實趨勢中區(qū)分出錯誤趨勢。如果 "++" 和 "--" 鏈的數量大于 "+-" 和 "-+" 的數量,則隨機游走具有趨勢,并且順勢策略將起作用。如果不是,則我們不應依據基于順勢策略的信號進入市場。
赫茲量化可以不僅僅考慮二項鏈 (++,+-,-+,--),還可以考慮三項鏈 (+++, ++-, +-+, ...),甚至更長的鏈。我們可以統(tǒng)計順勢 (+++, ---, ++++) 和逆勢 (-+-, +-+, +-+-) 鏈的數量,或者向每個鏈賦予一個趨勢系數并使用系數計算和值。最終,這些步驟將讓我們得出 Z 分的計分。但是在這里,Z 分并不是按交易者習慣的一系列贏-輸策略計算的,而是按匯率改變計算的。負的 Z 分表示序列有趨勢,而正的 Z 分表示序列無趨勢。
長鏈的考慮和 Z 分的計算需要足夠長的序列(從 30 個元素起)。我們的目的是構建趨勢指標,而考慮長序列將導致指標的延遲。二項鏈的考慮可從 8 個元素的序列開始。因此,為了構建指標,讓我們考慮二項鏈。為了認真研究隨機游走(比如構建隨機游走模擬程序),我們需要使用 Z 分。
隨機游走中趨勢的說明
讓我們說明隨機游走中的趨勢概念。
趨勢的一個定義如下:趨勢 - 以前變化的記憶。隨機游走不會記住其歷史。讓我們向其添加記憶,讓第 i 次擲硬幣的結果為 x (i) = p(1/2 + a*x(i-1)),其中 a 是介于 -1/2 和 +1/2 之間的順勢參數。函數 P (...) 在 1/2+a*x(i-1) 的概率時值為 +1,在 1/2-a* x(i-1) 的概率時值為 -1。
如果 а<0,則隨機游走是逆勢。如果 а>0,則隨機游走是趨勢。如果 а=0,則隨機游走沒有趨勢。
下圖顯示了以相同序列的隨機數字生成的隨機游走。

編輯
圖 2. 生成的隨機游走:順勢(紅色,a = 0.2),無趨勢(藍色,a = 0),逆勢(黃色,a =- 0.2)
如我們所見,順勢隨機游走的特征為相對較高的波動,形成下降通道的趨勢。逆勢隨機游走具有相對較低的波動,形成在一個水平通道中卷起的趨勢。
在實際市場中,順勢和逆勢隨機游走的區(qū)別并不是如此簡單,尤其是在趨勢很弱時。趨勢指標絕對是至關重要的。如前文所述,在無趨勢和逆勢隨機游走情況下使用順勢策略肯定會導致預付款的損失。
在順勢隨機游走情況下,您可以使用順勢策略進行交易。趨勢捕捉和趨勢反轉點的檢查可由數學統(tǒng)計方法來代替。但是問題仍然存在:是否有足夠的非隨機盈利來支付中間人費用并仍然保持盈利?為了獲得近似的答案,赫茲量化將不得不轉到在本文的末尾提供的趨勢指標。
在逆勢隨機游走情況下,赫茲量化可以波段交易。逆勢隨機游走旨在打破任何陡峭的趨勢并移到水平通道。您可以在水平通道的任何位置設置獲利點,無論當前趨勢如何,以及在通道邊界之外設置止損點。無論價格在通道的哪個地方徘徊,最終都將觸碰獲利點。
在無趨勢隨機游走情況下,我們不能采用順勢策略進行交易。我們需要采用其他理念,例如循環(huán)。
針對隨機游走模擬程序的建議
有趨勢的隨機游走對測試交易策略也有用。我們可以依據以下函數創(chuàng)建隨機游走模擬程序:

編輯
其中:
Amp - 幅度,
P(...) - 概率函數,
Trend - 趨勢,以前變化的函數,
Cycle - 周期,一個時間函數,
Limit - 一個隨機游走函數,
Expect - 預期,將來變化的函數。
這些函數的參數被調整到真實匯率的統(tǒng)計參數。
通過隨機游走來模擬真實匯率比人類感知的缺點的說明有更深的含義。用隨機游走來模擬匯率數據允許您依據可能的完整匯率集合(或至少依據完整集合的合理樣本)來測試任何 EA 交易。這樣又允許我們依照給定的 EA 交易構建概率分布函數。此分布函數以特有的方式指出 EA 的盈利能力、進取性和其他參數的特征。
集合完整性的定義:
歷史匯率數據的完整集合意味著:對于實際市場報價,有一個隨機游走圖案與之非常類似。隨著集合中匯率數量的增加,類似程度越來越大(在實際匯率和最接近的模擬匯率之間的匯率空間(函數)內的距離(標準)接近零)。
傀儡策略 - 一種策略,其交易是在不知道歷史匯率和當前匯率的情況下任意進行的。也不知道以前交易的結果。赫茲量化僅知道開始時間或擲硬幣的次數???,作為此類角色的代表,從不支付點差、手續(xù)費和稅款??芤灿胸撁婧x。 匯率集合在數學上是完整的 - 如果任何傀儡策略的概率分布函數在該集合上接近正態(tài)分布。
集合是完整的 - 如果它在數學和歷史意義上都是完整的。
對歷史數據進行測試總比沒有的好。但是缺少歷史數據并且它已經過時了。此外,歷史數據可能以優(yōu)化的形式包含在 EA 的設計中 - 那么我們如何測試它們呢?因此,EA 以歷史數據為基礎的資產凈值曲線只是以歷史上曾經出現過的匯率實施為基礎的資產凈值的概率分布函數的一部分。并且它并不足以完整地描述 EA 交易的特征。
當然,我們絕對不可能在模擬匯率中采用實際匯率的所有細節(jié)和細微差別。實際匯率的模擬會在其他文章和研究中單獨地進行深入討論。但首先要測試順勢系統(tǒng),我們可以依據有趨勢的隨機游走使用相當簡單的模擬程序。
只需要將一個能夠確定分布函數的簡單模擬程序連接到策略測試程序。需要模擬程序的另一個地方是銷售 EA 的店面。否則我們將發(fā)現難以看到我們正在購買的是什么。我只會在對幾個根本上不同的模擬程序和歷史數據測試之后才會購買交易 EA。對于每個正在銷售的 EA,除了價格以外,還應有附帶的資金概率分布函數以及從中得出分布函數的模擬程序。
EA 交易的概率分布函數是生產者提供的 EA 技術通行證和保證。俄羅斯聯邦的消費者權益保護法適用于 EA,如同適用于任何其他產品一樣。然而,在這里,我們首先需要為模擬程序構建一個認證系統(tǒng)。
趨勢指標
使用匯率趨勢這一理念,赫茲量化能夠構建最簡單的趨勢指標。與隨機游走不同,以柱來表示實際匯率。讓我們用隨機游走匯率來代替實際匯率。每根柱被單一的平均值(最高價 + 最低價)/ 2 代替(參見本文末尾的問題)。讓我們拋開變化幅度不管,僅留下符號。我們獲得一系列的加號和頭號,例如 ++-+---+-+-- ....統(tǒng)計最后 N 根柱中 "++" 和 "--" 順勢鏈的數量以及 "+-" 和 "-+" 逆勢鏈的數量。我們采取 "++" + "--" - "-+" - "+-" 的值作為一個指標。
為方便起見,讓我們在指標上畫一條線,該線將評估趨勢的強度:+ 或 - N 的平方根。
在本文的末尾提供了以 MQL5 語言編寫的指標代碼 (TrendingHL.mq5)。

編輯切換為居中