明顯的 MT4 新手在這裡..
想知道在 MT4 中繪製方框以自動突破交易是否有最佳實踐。
非常感謝任何幫助。
哈爾
Printable View
明顯的 MT4 新手在這裡..
想知道在 MT4 中繪製方框以自動突破交易是否有最佳實踐。
非常感謝任何幫助。
哈爾
Ps.: EA 並不完美,他們有一些錯誤,比如 Close。如果您使用 Close[x] 或在當前柱上使用收盤價的指標,您將獲得無效數據...為什麼?在 EA 中,Current bar 沒有 Close Value 只有 Open,所以如果你使用 RSI 作為例子,RSI[0] 在 RSI[1] 之前不會給出一個好的值,因為 RSI 使用 PRICE_CLOSE 來計算是東西...... . 所以 EA 很好,但是為了幫助我們定義 egie,它必須進行現場測試......
需要做一些澄清:
錯誤(好吧,只是為了不讓您感到困惑):#property indicator_separate_window lt;- CI 是否將是 #property indicator_buffers 1 lt;- 只需告訴有多少緩衝區,因為有時您會有更多緩衝區,但只有 1 或 2繪製... #property indicator_color1 Red lt;- 告訴 API 使用紅色作為第一行緩衝區Quote:
Originally Posted by ;
錯誤:SetIndexBuffer(0,ExtMapBuffer1);lt;- 0 僅適用於要繪製的第一個緩衝區,1 將是繪製的第二個緩衝區(在隨機中,由於第 2 行,您有 0,1)SetIndexStyle(0, DRAW_LINE);lt;- DRAW_LINE 將應用於由 0 定義的緩衝區,因此 ExtMapBuffer1Quote:
Originally Posted by ;
它從左到右:所以最後一根柱線(最舊)到最近一根柱線(0:當前)Quote:
Originally Posted by ;
我一直致力於此及其意義!我寫了我的第一個 EA,我想我大大地打擊了初學者的運氣!非常感謝您的指導!沒有你我做不到。我知道這是一段漫長旅程的開始。我不期待奇蹟馬上出現。但我現在正著手測試我的天性,到目前為止效果非常好! (在模擬 FXDD 賬戶上)我稱其為天生的怪事,因為 MQL4 經驗如此之少的人不應該能夠編寫出在正向測試中實際運行良好的東西。過去 24 小時內上漲 180 點。 FWD 演示測試(初學者運氣好,只有一天。)http://www.venexys.com/HP002A2_FWD_DET_TEST_DAY001.gif
http://www.venexys.com/HP002A2_FWD_TEST_RESULTS.htmhttp://www.venexys.com/HP002A2_FWD_TEST_RESULTS.htm
我已經按照您的指示完成並編輯了 CI Compiled,沒有錯誤,當我將它應用到圖表時,我發現它與我在同一圖表上運行的 RSI(21) 完全相同。到目前為止,這是我能理解的:對於 CI,所有這些:#property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 紅色應用於此:double ExtMapBuffer1[];和這個:extern int MyPeriod = 21;只是一個外部變量。 (我明白什麼是變量。外部變量使它啟動,因此您可以在它啟動時在小 GUI 中設置它。)這裡是:int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1);返回(0);這表示將以圖形方式繪製的內容,位於“啟動時運行一次”部分。在這種情況下,繪製一條從 0 開始的線並使用以下緩衝區繪製自身 [ buffer =(從 0 開始是 ExtMapBuffer1 的值)] 然後我們一直走到腳本的“開始”部分並且這裡我們有.... int start() { int limit = Bars-IndicatorCounted();*聲明整數常量等於(計數圖表中的柱數減去指標最後啟動後未改變的柱數)的結果 */for(int x=limit ; x gt;=0 ; x --)* For (聲明整數“x”等於“limit”且“x”大於或等於零,將“x”減一。)這是否使得狗屎從 0 開始並繼續每次回來一個。 (?) */{ ExtMapBuffer1[x]=iRSI(NULL,0,MyPeriod,PRICE_CLOSE,x);* ExtMapBuffer1[x] 等於 iRSI(......,x) */} 我會慢慢檢查每一行代碼以更好地理解它,並按照您的建議更改指示器、顏色、緩衝區等。它慢慢開始陷入困境。我相信我會在短時間內提出更多問題。這是任何人都可以要求的最詳細的解釋。感謝您花時間向新手解釋這些平凡的細節。給你很大的業力!再次感謝男人!哈爾
現在在 double ExtMapBuffer1[] 下面;添加 extern int MyPeriod = 21; extern 用於與指標交互,當您安裝 CI 時會有一個彈出窗口,然後在輸入選項卡中您會看到您的 extern 變量...現在替換 ExtMapBuffer1[x]=1;其中:ExtMapBuffer1[x]= iRSI(NULL,0,MyPeriod,PRICE_CLOSE,x) ;刪除:#property indicator_minimum 0 #property indicator_maximum 2 並編譯...如果您什麼也沒看到。沒關係。刪除指標並將其放回...編譯時比例不會改變。因為 RSI 值不在 0 和 2 之間...給您...現在您有了基本...嘗試修改值,添加緩衝區,更改顏色,使用其他指標(而不是 RSI,使用 iCCI),所有你需要知道的就是開始......之後會看到......如果你有其他問題,請繼續......: -) 節日快樂
https://www.forex-pedia.com/attachments/1531688990.pnghttps://www.forex-pedia.com/attachments/1531688990.pnghttps://www.forex-pedia.com/attachments/1531688990.png
1 個附件嘿!有效!我得到了我的扁平紅線。最後一篇文章中有很多內容需要我消化。我將多次檢查它以很好地理解正在發生的一切。感謝您花時間做這個人。市場休市,假期臨近。希望您和您的家人度過一個愉快的假期和新年快樂!哈爾
https://www.forex-pedia.com/attachme...1210488381.mq4
好的。所以 resume Init lt;- 程序將僅執行此函數一次(當加載指標時) deInit lt;- 程序將僅執行一次此函數(當卸載指標時) Start lt;- 程序將每次執行此函數它從服務器接收數據。現在,什麼是自定義指標?為了讓它簡短。主要原因是構建自定義指標(目前為 CI)是為了以圖形方式表達想法(是的,您可以做更多,聲音、導出、文件讀/寫、警報等)。但是之前...... CI 使用 Array(Or buffer or table) 。這些是什麼?您應該知道什麼是變量(如果不知道,請閱讀它)。假設您要聲明 100 個變量(variable1、varaiable2 等)。這樣做會花費很多時間和精力...所以 Array 只是一個名稱下的多個變量組合(同樣,不止於此,但現在已經足夠了)。想像 100 個盒子並排放置。第一個是 0,然後是 1,然後是 2,等等...(數組從 0 開始到(數組大小)-1)如果你想從 Box #5 中獲取/寫入值,那麼你可以使用 Box[4]( Box [BoxSize-1] ) 通常,您將在聲明時定義緩衝區的大小。因為程序不知道你想要多少尺寸! ___ 簡而言之:程序必須在內存中分配緩衝區所需的空間(例如:int buffer[2]={1,2}; 將在內存中創建 2 個 int 類型的空間)。當你聲明一個變量時(int test
https://www.forex-pedia.com/attachments/1531688990.png,程序會自動分配1個'int'類型的空間來接收信息。 (你也可以在你的代碼中擴展或縮回緩衝區:但現在忘記它)。 ___ CI 顯示圖形。那麼你必須使用 Buffer 來這樣做。 CI 會使用你告訴他使用的 Buffer。指標最多可使用 8 個緩衝區(但您可以使用多個表,稍後您會看到)。圖形上的每個方框(用於解釋示例)等於 1 根蠟燭。 Buffer[0] 與 Candle #0 對齊,依此類推...從右到左(最近到最舊)線從一個框繪製到另一個框:如果框 [0] 中有 10 個和 5 個在 box[1] 中,這條線將從右到左,從 10 到 5(上行)。對於第一個演示,我們只將 1 作為指標中的值(平線)。我們開始:首先,我們放置 CI 的屬性“#property”#property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 2 #property indicator_buffers 1 #property indicator_color1 紅色“indicator_minimum”和“indicator_maximum”將定義比例(值在CI 的權利)。如果您刪除“indicator_minimum”和“indicator_maximum”,它將根據 CI 緩衝區中的值計算高值和低值以對其進行縮放。 (只有 1 作為她的演示的值,如果你不輸入最小值/最大值,你將看不到平線)'indicator_buffers' 用於告訴程序我們將使用多少緩衝區來輸出圖形(我們想要多少行:最多 8). 'indicator_color1' 很簡單,就是告訴你想要的線條顏色。在所有“#property”下面,你放了 double ExtMapBuffer1[]; 'ExtMapBuffer1' 是嚮導輸入的默認名稱,但我每次都更改它;讓我們說 Buffer[];在這種情況下,您不必說我們需要多少空間(Buffer[x]
https://www.forex-pedia.com/attachments/1531688990.png,因為它將在“初始化”功能上完成;在你輸入的初始化函數中:SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); 'SetIndexStyle'用於定義圖形的類型(線條,直方圖等...)0代表您初始化的第一個緩衝區,它將採用'indicator_color1',#1將使用'indicator_color2'等來關聯顏色......你放置緩衝區的順序並不那麼重要,但它會一個接一個地繪製它們,所以 0 將在 1 之下,所以 2 將在 1 之上,等等。現在想像一個 MACD,如果 MACD 線在直方圖後面!它只是一個可見性問題。(但它必須是從 0 到 x) 'SetIndexBuffer' 將 'ExtMapBuffer1' 關聯到 0 並使用它來識別緩衝區並使用它在 CI 上繪製線條。就是這樣了。你有你的基本聲明......現在讓我們使用它......放入“開始”函數:int limit = Bars-IndicatorCounted(); for(int x=limit ; x gt;=0 ; x--){ ExtMapBuffer1[x]=1;你完成了...有關其他功能的任何信息。雙擊它,然後按“F1”試一試……然後告訴我它是否有效……你會得到你的扁平線……
不得不讀了幾遍,但我想我現在明白了。隨意繼續。
順便在你閱讀理解的時候通知我。所以我可以繼續......我會等待,然後再繼續......
https://www.forex-pedia.com/attachments/1531688990.png
1. #property 版權 2. #property 鏈接 1 和 2 僅用於標識您的腳本(對編碼不重要)3。 #property indicator_chart_window 每個窗口作為一個值,帶有圖表的窗口為 0,然後底部的每個指標接收值 1 到 x。因此,如果您使用 indicator_chart_window 創建指標,圖形將放置在窗口 #0(圖表窗口)中。如果您使用 indicator_separate_window 那麼它將在單獨的窗口中創建指標,如 MACD 或 RSI...嚮導(複選框)#property 用於定義指標的各個方面,稍後會看到...4。 int init() Init 是放置指標加載時必須初始化的代碼的地方。像 Buffer 或 Global Variable 一樣,它只執行一次...5。 int deinit() deinit 是 init 的逆過程。因此它將在指標從圖表中移除時執行。例如,如果您將文本對象放在圖表窗口上,您希望在刪除指標時將它們刪除,否則它們將保留在那裡。6。調用 init 之後的 int start() 每次輸入新輸入(每個刻度值)時,應用程序都會執行啟動函數...這就是基礎...現在示例:如果您聲明一個全局變量在 init 之上(不在函數內部,見下文)像 double test=0;然後在 init 中放入 test=1;一開始你把 test = 2;然後當您加載指標時,測試將收到 1 作為值;每次啟動被觸發時,測試將收到 2 作為值 double test=0; int init(){ 測試=1; Comment(test:,test);} int start(){ test=2;評論(測試:,測試); } Ps.: Comment 用於在窗口圖表左上角放置Text,並在終端窗口的expert 選項卡下打印。此外,如果你從開始刪除測試,你會看到它總是輸出 1 實施的方式是無用的,因為它會立即執行初始化和啟動,所以測試將始終有 2。但它只是為了展示 init 和 start 是如何為基本工作的. Ps.: 對於那些讀到這裡的人……這只是一個基本的解釋。創建課程不是我的注意力......去看看這個線程。做得很好。
是的,我當然想要!我已嚴格按照您的指示進行操作。我的 Indicators 文件夾中有一個名為 IndicatorProto001.mq4 的新指標。準備好下一步。與此同時,我將重新閱讀與指標相關的第 10 至 12 課。
我可以幫助您構建您的第一個指標並展示基本的...當然,您必須通過查看課程 (pdf) 來完成您的課程,以深入了解所有內容...第 1 步 - 創建一個空白, Custom Indicator (FilenewCustom indicator) 給它起一個你喜歡的名字(一個不存在的名字) 現在一切都默認(Do next) 然後什麼都不寫, Compile the indicator by do F5 It should buy now be在您的 MT4 自定義列表中 我們將從那裡開始...當然如果您想要!!! :-)
GT;GT;順便問一下……您清楚地了解指標的工作原理嗎? lt;lt;當然不是。 GT;GT;在構建任何 EA 之前,您應該嘗試構建小型自定義指標。 lt;lt;我因在吸引我的主題上胡思亂想而臭名昭著。 (就像編寫 EA 一樣)一開始非常令人困惑,但最終一切都會變得有意義和哇啦!你是專家!在檢查完第 3 步到第 5 步之後,我將轉到第一步。但我不會忽略更有經驗的人的建議。所以我會聽取您的建議並首先使用 RSI 指標。現在我將讓 EA 休息,同時我學習更多基本的東西...... gt;gt;將真實指標和您的自定義指標並排放置,看看您是否做對了 lt;lt;這似乎是個好主意。再次感謝您對我的幫助和耐心。
我也這樣寫:for(int x=0 ; x lt; limit ; x ) 但事實上你想從最後開始直到最近的蠟燭所以:for(int x=limit ; xgt;=0 ; x--) 為什麼?如果您的 indior 是從過去的值中添加的,那麼如果您沒有先計算它,您將如何添加?例如:如果您希望您的 indior 顯示當前值是否為 gt; 0 或 lt; 0 與最後一個值比較,你必須能夠得到最後一個值,但是由於你從零開始(Buffer[0])來構建你的數組,那麼 Buffer[1],Buffer[2] 還沒有任何值。 .. 順便說一句... 你清楚地了解室內的工作原理嗎?在構建任何 EA 之前,您應該嘗試構建小型自定義 indior。就像通過示例 RSI 重新創建一樣。不花錢重新發明等式,而是使用 RSI 函數。所以你可以把真正的 indior 和你定制的 indior 並排放置,看看你做的是否正確......
首先 Close[] 由 MQL 框架定義。你只能用它來檢索信息......但你可以使用你的數組。例如:雙 MyArray[];或雙 MyLilttleBuz[];問題?您為什麼要更改蠟燭收盤價?您必須將 RSI 值提供給繪製 indior(line) 的緩衝區,這就是為什麼在“int init()”部分(函數)中您會看到:SetIndexBuffer(0,XYZBuffer); lt;- 用於創建緩衝區 這是將接收值的緩衝區,應用程序將使用這些值來繪製 indior 線。此外,如果您將 4 用於循環,您只會得到一條 4 根蠟燭長度的線...因此您看不到另一根蠟燭的信息(可以說是歷史測試)Quote:
Originally Posted by ;
那麼這是有道理的還是我離開了? int limit = Bars-IndiorCounted();/..Equals 'Bars' minus IndiorCounted() for(int x=0 ; x lt; limit ; x )/對於等於 0 且小於 'Limit' 的 'x',將 'x' 增加 1並繼續執行以下操作.... {/(Buffer[array] = iRSI(......,x) High[x]=iRSI(NULL,0,21,PRICE_CLOSE,x);/Could Close[x] 而不是 High[x]?按理說,如果我只想要最後 5 個柱,那麼 Limit 可以設置為“4”...(?),這只會給我最後 5 個柱(?)類似(?)的東西:int limit = 4; for(int x=0 ; x lt; limit ; x ) { Close[x]=iRSI( NULL,0,21,PRICE_CLOSE ,x); } 如果我要去夢幻島,請告訴我。我會的重新考慮這個。
Buffer(Array) 的值從 0 開始,例如:為了獲得第五根蠟燭的高點,您將編寫 High[4],因此 shift 是從右到左開始的蠟燭位置 1。要獲得所有蠟燭數量,您可以使用 'Bars'-1 因此,如果您想創建一個 RSI indior 來獲得樂趣,您可以對所有蠟燭 -1 進行迭代,例如: for(int x=0 ; x lt; Bars-1 ; x ){ 緩衝器[x]=IRSI(......,x);但實際上你使用:int limit = Bars-IndiorCounted(); for(int x=0 ; x lt; limit ; x )lt;limit ;= x=gt;lt;limit;x ){gt;緩衝器[x]=IRSI(......,x);為什麼 IndiorCounted?因為當你第一次把你的 indior 放在你的圖表上時,沒有繪製蠟燭所以 IndiorCount 等於所有蠟燭(條)之後它只會給出未改變的蠟燭數量(所以每次新值進來。你不是重建每次 indior 只是添加新的蠟燭信息。你使用更少的資源。lt;/limit;x ){gt;lt;/limitgt;
好的,我的實驗已經用笑臉和所有東西進行了一段時間,但什麼也沒做。我開始懷疑我的代碼很糟糕的情況。我認為該線程的更好名稱應該是 EA Coding for Dummies 101 Its ok。隨著時間的推移它會變得更好。我必須經歷這個階段。無論如何.. 這是一個問題。在下面的表達式中: iRSI(string symbol, int timeframe, int period, int applied_price, int shift ) 這個偏移是什麼意思?我認為這意味著當前圖表上的柱形過去的時期。但即使我也意識到這可能是一個非常模糊的解釋。 (有時這些變量的在線文檔對它們有一個非常通用的定義,並沒有真正很好地解釋它們。)即使是朝著正確方向邁出的一小步也比沒有好。
啊哈!感謝 Zeuzere 對 Point 的更好解釋,這正是我所需要的。我現在明白點是什麼了。
擴大庫存...我很難理解 ;-)(我是法國人)..假設你是想解釋一下?如果是這樣...您如何從 1.2500 加或減 30pip? 30 * Point == 30 * 0.0001 == 0.0030 所以 1.2500 0.0030 它給倍數帶來了很好的價值。 4位小數貨幣:點數給0.0001 2位小數貨幣:點數給0.01Quote:
Originally Posted by ;
1 個附件是的,我是從頭開始,但那是昨天的事了。今天,即使是現在,我已經不僅僅是從頭開始了。編碼大師的那些課程非常棒。另一個很棒的資源在這裡:
http://articles.mql4.com/84這篇文章非常有幫助,因為它列出了 EA 代碼的不同部分。這是我到目前為止所學到的。 • 顯然,從一個 EA 到下一個 EA,有些代碼塊在某種程度上是不變的,例如檢查柱線的部分,以及檢查您的賬戶餘額的部分等等。 • 似乎唯一真正變化很大的部分是用於決定如何進入和退出市場的“if”語句。真正酷的是,如果你編譯並在底部出現錯誤,你可以選擇並右鍵單擊錯誤並從彈出菜單中選擇“轉到行”,一個紅色的小指針會告訴你你在哪裡做了你的代碼本身的錯誤!多麼方便!一個一個地修復它們,不久我就能夠得到一個文件來編譯而沒有錯誤或警告。是的!我剛剛寫了我的第一個 EA。當然不是財富製造者(但)我恰當地稱呼它:Prototype001 它檢查 RSI 水平並檢查 RSI 水平在過去 5 個柱中的移動。並以此為基礎開多頭或空頭。 (至少我認為它是這樣做的,我現在正在測試它是否真的有效。)到目前為止,這是否可以以不同的方式完成?我確定它可以。這是我第一次寫其中的一個。隨意看看我不起眼的 EA 並提出您的批評。到現在為止你會怎麼做?另外,有人可以擴展名為 Point 的預定義變量的庫存定義嗎?謝謝!哈爾
https://www.forex-pedia.com/attachme...0340543145.mq4
感謝 Zeuzere 的指導,我今天正在閱讀所有這些課程。看起來很有前途。這應該讓我開始。再次感謝
去看看這個: MT4 learning how to program Post#1
https://www.forex-pedia.com/attachments/1529195386.png
您是否了解以下基本知識:For、switch、function、parameter、double、int 等....或者您是白手起家?如果你是白手起家,我建議你參加一個小型的基礎 C 語言課程。它們在網上是免費的,而且很容易(好吧,對初學者來說不是這樣)...如果您認真對待的話,您可以在一個週末內編寫基本的東西...因為我不會解釋如何編程,但我可以提供幫助如果您了解編程的基礎知識,您可以刪除一些雲讓您繼續前進。
我一直不願意問問題,因為我不想問愚蠢的問題,但我不得不承認,對於一個從一開始就沒有編程經驗的人來說,這比我想像的要難。 ......我覺得卡住了。在我繼續前進之前,這是我現在正在嘗試做和理解的事情.....我正在嘗試編寫這樣的代碼:如果 RSI(21) >= 50 並且 RSI(21) 已經在最後 5 根蠟燭中上漲,如果 ADX(14) 從 40 以南穿越到 40 以北 這只是我的想法的一部分.. 盒子稍後出現。首先,我需要讓這部分工作。我以為我會通過閱讀教程知道如何做,但事實並非如此。作為一個完整的編碼初學者(我是誰??),我到處查看代碼並試圖從中理解。我覺得我需要一些嚴肅的支持。我不知道把東西放在編輯器生成的框架內的什麼地方。 (即:初始化、取消初始化或啟動)但是,我決心以某種方式通過我的頭蓋骨敲打這些東西。有誰知道我可以參加的 EA 編碼課程嗎?我很認真地學習。我在這方面太初級了,無法自己完成任何事情,我不想複製別人的代碼,因為我覺得那樣我不會學到任何東西。
感謝 Zeuzere 和特斯拉。現在我有足夠的東西可以玩了,我相信我會在這個過程中遇到更具體的問題。現在是時候編寫代碼並祈禱了!再次感謝你們!
提示......我正在研究一個振盪器,它告訴我何時發生突破,我使用它(0 == BreakOut) - 我定義了 3 個週期:假設 200、100 和 50 - 每時每刻,我都在計算蠟燭的數量在過去被擊中(在當前價格的那個時期)——如果在蠟燭收盤後你得到一個 0 值,那麼你知道,在過去的 X 時期沒有蠟燭被擊中。 -- 這樣你就可以在每一步上設置價值(就像一個儀表) -- 例如:0 到 5,你做了一些事情,否則就不是真正的突破......我使用這個技術,我最終會把它與交易量結合起來.如果兩者都很好,我有我的突破......但這只是一個提示......你可以通過以下方式定義你喜歡的時間段的高/低: - 可以說,昨天的高/低, - 按時間(如PipBoxer) - 或使用像 CCI 這樣的 indior(要獲得頂部和底部,然後您可以檢索該時期的高價/低價)。如果您需要幫助,請提出一個明確的問題,我會盡力回答!
在 MetaEditor 中,如果您在光標位於代碼中的函數名稱(即 iHighest)上時按 F1,您將獲得該函數及其參數的相當全面的描述。如果您遇到困難,請隨時提出更多問題,這裡有很多人願意提供幫助。
謝謝特斯拉,我不只是想讓它工作..我想真正了解它的方式和原因。我會找出你發布的代碼塊。我相信一旦我理解了它在做什麼,它就會對我有幫助。再次感謝。
This should get you started. Obviously you have to set the start and end times appropriately. PHP Code: <code><span style=”color: #000000”> <span style=”color: #0000BB”>datetimedtBoxStart</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>D</span><span style=”color: #DD0000”>'2006.12.0100:00'</span><span style=”color: #007700”>;</span><span style=”color: #FF8000”>//Definestartday/time
</span><span style=”color: #0000BB”>datetimedtBoxEnd</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>D</span><span style=”color: #DD0000”>'2006.12.0101:00'</span><span style=”color: #007700”>;</span><span style=”color: #FF8000”>//Defineendday/time
</span><span style=”color: #0000BB”>intiStartOffset</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iBarShift</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>dtStart</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>true</span><span style=”color: #007700”>);
</span><span style=”color: #0000BB”>intiEndOffset</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iBarShift</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>dtEnd</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>true</span><span style=”color: #007700”>) </span><span style=”color: #0000BB”>1</span><span style=”color: #007700”>;</span><span style=”color: #FF8000”>//Upto,butnotincludingbarwithendstarttime
</span><span style=”color: #0000BB”>doubledPeriodHigh</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iHighest</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>MODE_HIGH</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iStartOffset</span><span style=”color: #007700”>-</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>1</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”>);
</span><span style=”color: #0000BB”>doubledPeriodLow</span><span style=”color: #007700”>=</span><span style=”color: #0000BB”>iLowest</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>NULL</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>PERIOD_M15</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>MODE_LOW</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iStartOffset</span><span style=”color: #007700”>-</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>1</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>iEndOffset</span><span style=”color: #007700”>);
</span><span style=”color: #0000BB”></span> </span> </code>
如果你不知道如何做虛擬盒子(定義一個盒子)來自動化你的交易(不僅僅是尋找最佳實踐)看看 Pip_Boxer EA 他使用拳擊技術......他使用 CCI 和其他東西......如果你看在代碼中閱讀線程你會找到你的答案......我想你不是要在圖表上畫一個矩形框!
謝謝澤澤爾。我不關心看到盒子,只是定義它並在這種盒子的突破上進行交易。我正在開發一個將箱形突破與 RSI 和 ADX 水平相結合的交易系統。我想編寫一個簡單的 EA,以便我可以回測(和正向測試)系統。我或多或少知道如何告訴 MT4 在特定的 RSI 和 ADX 組合上打開,但我不知道如何繪製一個虛擬框並在框被突破並且我的其他指標被觸發時觸發交易。我會查看 pip boxer 代碼,但我的編碼能力不如這裡的其他人。 (新手警告!)我無法理解盒子的邏輯。我不害怕嘗試和搞砸,我想最終我會做對的。再次感謝!哈爾
謝謝你的澄清。我會確保我理解他們。哈爾