期貨量化交易軟件:工作必須繼續(xù),再次討論鋸齒形調(diào)整浪
簡介
大量的鋸齒形調(diào)整浪證實了,人們對此指標(biāo)一直非常感興趣。這是一個相當(dāng)值得研究的主題。這可能是唯一一個能夠直接影響交易者情感的指標(biāo),通過以圖形的形式鮮明生動地顯示主要的市場變動,迫使立即采取行動。很顯然,這種現(xiàn)象只能解釋如下:大多人都完全了解此指標(biāo)并非用于產(chǎn)生直接交易信號,然而,直接交易信號一直在嘗試將此指標(biāo)與當(dāng)前市場情況最大限度的相關(guān)聯(lián)。能夠觀察到上一個預(yù)測裂縫的無限重繪未必是優(yōu)勢,尤其是正對其進(jìn)行察覺時。
赫茲量化來稍作討論。不管你是否相信,但它是一切事情的開端。
敘述
赫茲量化所有來到這個市場中的人遲早都會發(fā)現(xiàn),市場并不像我們最初想象的那么簡單。一旦我們認(rèn)識到了這一點,我們就會開始閱讀資料(當(dāng)然是能夠閱讀的人)。但是,從某種程度上講,我們發(fā)現(xiàn)自己閱讀的資料會非常奇特。簡而言之,我們會選擇最簡單的資料,而不是合適的資料。相應(yīng)地,我們將僅在我們的工具庫中添加很膚淺的東西,這些東西顯然易于理解,而且可輕松(快速)地轉(zhuǎn)換為算法語言。有很多這樣的例子。下面是其中一個例子,可能不是最好的例子,然而,我們來看看它的真面目。
每個人都了解并記得基本的 TA 理論,這些理論尚未被反駁,但仍未獲得嚴(yán)格的證實,然而:
價格是我們的一切!
在直接按字面意義理解這句話后,赫茲量化開始尋找的不是市場的控制點,而是通過所有方式實現(xiàn)價格的最大化和最小化 - 這更加簡單明了。我們使用標(biāo)尺繪制支撐/阻力位,基于這些位計算斐波那契位,計算柱中的循環(huán)等等。越來越糟糕的是 - 我們開始僅從某個人的交易系統(tǒng)中提取我們易于理解的東西,而沒有注意到相關(guān)警告、此交易系統(tǒng)適用于哪個市場以及此交易系統(tǒng)的創(chuàng)建時間等因素。更糟糕的是,我們開始簡化…簡化 Gann (!!!) 的理論,是他(我認(rèn)為)發(fā)現(xiàn)了(或者非常接近于發(fā)現(xiàn)了)價格/時間問題的解決方案,這簡直是精神錯亂,怎么能簡化還尚未被任何人完全理解的東西?
然而,當(dāng)我們意識到所有的一切在一定程度上都運行錯誤時,略好于 50% 概率,赫茲量化很可能又會大聲說專家在騙人,他們的方法沒有用,他們著書都是為了錢,黃金分割不存在等等。而出現(xiàn)這個結(jié)果是我們忘記了,極值不是最大值或最小值的同義詞,但實際上又是最大值或最小值,只是采用了內(nèi)在本質(zhì)的另一個表現(xiàn)形式,我們?nèi)孕鑼ζ溥M(jìn)行研究。因此,基于這種膚淺的看法,我們就開始試著分析未來,甚至都沒有去分析這個結(jié)論(這就是正確的時間,正確的地點)從何而來。
盡管我們要賺錢,但這一點并不會妨礙我們,赫茲量化有時需要停下來稍作思考。你要知道,這是很有用的。你開始清楚理解“人類是唯一一種一遍遍地做同一件事卻期待不同的結(jié)果的生物”的正確性。我們不是在砍柴,不是嗎?:)
我被熱情沖昏了頭腦。我可能也會這樣。該停下來了。只是讓我們了解,并非所有專家都是真正的專家,而真正的專家不會告訴你所有的東西,尤其是他們知道,填鴨式的東西既不容易理解也沒有多大幫助。
回到主題上來。

編輯切換為居中
多幀分形鋸齒形調(diào)整浪
我需要一個指標(biāo),此指標(biāo)不僅僅顯示最小值和最大值,還顯示價格變動通過邏輯推理(LREP - 此縮寫能否采納?)得出的市場極值點,以及進(jìn)行確認(rèn)(如果可能)。起初,并沒有提及使它成為交易信號產(chǎn)生器的問題。首先,我嘗試了使用標(biāo)準(zhǔn)的(不是 赫茲量化中內(nèi)嵌的,而是常規(guī)意義的“標(biāo)準(zhǔn)”)鋸齒形調(diào)整浪,但有些問題使我警惕起來,迫使我放棄了這個想法:
所有算法的一致性,盡管在互聯(lián)網(wǎng)中有大量的討論以及各種各樣的版本(順便說一下,問題可能在于我眼力不好,但我從未在任何地方見過這種清晰解碼的算法);
缺乏它應(yīng)尋求的“目標(biāo)”的概念;
極其頻繁的重繪,最糟的是重繪的可預(yù)測性不佳;
直接依賴于時間范圍和/或之前指定的價格偏移;
它讓我有所顧慮,尤其是最后一點最不能接受。它對我沒有吸引力。沒有什么個人隱私。
我記得,Demark 有他的 TD 點,Williams 有他的“分形”(我不知道是誰借鑒誰的,但它們就像一個模子里印出來的)。看起來是同一個東西 - 它至少是使用先前和后續(xù)的價格變動推理而來的??赡埽⒎撬腥硕枷矚g用這種方法來選擇這些點。然而,還沒有任何人發(fā)明出更準(zhǔn)確的方法來對它們進(jìn)行最初的識別,當(dāng)然“重要的極值”、“局部極大值”等詞語除外。
自己的東西可能不是更好的,但肯定是更“相似的”。這就是我沒有求助借鑒的代碼而是編寫了自己的簡單分形指標(biāo)的原因,此指標(biāo)更加準(zhǔn)確,具有相似性:選擇點的原則略微不同于標(biāo)準(zhǔn)原則。我嘗試使用 iCustom 在不同的時間范圍調(diào)用它,但隨后認(rèn)識到,在當(dāng)前(工作)時間范圍 (TF) 上計算所有內(nèi)容則更為合理。再往前,編程邏輯提醒所有內(nèi)容:關(guān)于未來自我預(yù)測的模塊結(jié)構(gòu),以及不符合標(biāo)準(zhǔn)的 TF。下面是得出的結(jié)果。
下圖顯示了使用 TF 參數(shù) 1440、360、60 的外觀。H1 圖表被選擇用于展示目的,從中你可以看到黑線 (60) 沒有使用全部分形點,而是拒絕了一些分形點。第一個圖片用于查看提示,第二個圖片只是從圖中的中間部分截取而來。

編輯切換為居中

編輯切換為居中
配色方案不是最好的方案,所附圖片顯示的是我對它的看法。
代碼
赫茲量化來看看它是如何實現(xiàn)的 - 我們不應(yīng)用手勢表示嗎?;)
指標(biāo)在當(dāng)前工作時間范圍 (TF) 上形成一系列的鋸齒形調(diào)整浪節(jié)點,將在三個模擬的較大 TF 上計算這些節(jié)點。它在所有 TF 上工作并使用所有 TF,包括不符合標(biāo)準(zhǔn)的 TF,并在代碼中實行以下限制:
- 較大的 TF 必須能夠被工作時間范圍整除;否則,強制設(shè)置最接近的正確值;
- 工作時間范圍不大于最小的較大 TF;
- 參數(shù)的周期以分鐘為單位指定,并且必須按降序設(shè)置;
- 最大 TF 的周期不能超過 43200(一個月)- 這不是限制,更大的 TF 也可行;
此功能是,每個 TF 僅使用一個緩沖區(qū)。無需使用它們中的兩項,因為在 TF 的合理組合中,在工作 TF 的單個條柱上,出現(xiàn)兩個方向不同的極值的概率過小。
下面是此代碼片段:
//----------------------------------------------------------------------- // MF_Fractal_ZZ_3in1.mq4 //----------------------------------------------------------------------- #property copyright "Copyright ? 2008, BiViSi Corp." #property link ? ? ?"riderfin@bk.ru" #property link ? ? ?"ICQ 499949112" #property indicator_chart_window ? ? #property indicator_buffers 3 //---- style of the indicator line #property indicator_color1 Blue #property indicator_color2 Red #property indicator_color3 Yellow ? ? ? ? #property indicator_style1 0 #property indicator_style2 0 #property indicator_style3 0 #property indicator_width1 5 #property indicator_width2 3 #property indicator_width3 1 //---- INOUT PARAMETERS OF THE INDICATOR extern int VolExt=50; // VolExt+1" calculation of the last control points extern int TFLarge=1440; extern int TFMidle=240; extern int TFSmall=60; //---- Variables double Large[],Midle[],Small[]; ?// control points (indicator bufers) datetime PrevTimePer[4]; ? ? ? ? // the time of the last calculation of every TF datetime PrevTimeCalc=0; double P60,CP60; int CurPeriod, ErrorTF=0, NumberExt, Per, ?largelast=0, midlelast=0, smalllast=0; //----------------------------------------------------------------------- int init() { ? // initialization ? IndicatorBuffers(3); // for perspective" entry :) ? SetIndexBuffer(0,Large); SetIndexStyle(0,DRAW_SECTION); ? SetIndexEmptyValue(0,0.0); ? SetIndexBuffer(1,Midle); SetIndexStyle(1,DRAW_SECTION); ? SetIndexEmptyValue(1,0.0); ? SetIndexBuffer(2,Small); SetIndexStyle(2,DRAW_SECTION); ? SetIndexEmptyValue(2,0.0); ? ArrayInitialize(PrevTimePer,0); ? CurPeriod=Period(); CP60=CurPeriod*60; ? // restrictions: ? // control of TF and inputted parameters ? if (MathCeil(TFSmall/CurPeriod) != TFSmall/CurPeriod) ? ? ?TFSmall=MathCeil(TFSmall/CurPeriod)*CurPeriod; ? if (MathCeil(TFMidle/CurPeriod) != TFMidle/CurPeriod) ? ? ?TFMidle=MathCeil(TFMidle/CurPeriod)*CurPeriod; ? if (MathCeil(TFLarge/CurPeriod) != TFLarge/CurPeriod) ? ? ? TFLarge=MathCeil(TFLarge/CurPeriod)*CurPeriod; ? if (CurPeriod > TFSmall) ? ? ?{Alert ("The chart period must be less than or equal to ", TFSmall," min."); ? ? ? ErrorTF=1;return;} ? if (TFSmall >= TFMidle || TFMidle >= TFLarge || TFLarge>43200) ? ? ?{Alert ("Incorrect choice of timeframes for calulation!!!"); ErrorTF=1;return;} ? return; ? ? ? ? ? ? ? } //--------------------------------------------------------------------