Ⅰ MT4如何新建指標腳本及EA文件
一、MT4自定義指標保存在C:\Program Files\MetaTrader 4\experts\indicators這個目錄中, 該目錄中主要有二種回類型的文件, 一種是mq4文件,這是答MT4自定義指標的源碼文件,是一種高級語言文件,可以人工編寫修改,機器不能直接執行
Ⅱ 如何編寫簡單的EA 交易和自定義指標
要編寫程序,您可以啟動 MetaTrader 5 客戶端,從 Tools(工具)菜單選擇MetaQuotes 語言編輯器,或按 F4 鍵。在 MetaEditor 5 窗口中,從 File菜單選擇 New(新建),或按 Ctrl+N。在 MQL5 Wizard窗口中選擇您想要創建的程序類型。
Ⅲ 怎樣把指標轉換成EA(2)
接下來將指標EA化大致的做法是: 在EA中通過函數iCustom讀取這個指標的當前K線輸出值,得出當前的狀態,來決定是否入場或者平倉並反向入場。 iCustom的具體用法: 指標一般都是曲線或者箭頭兩種。在這里我們要把曲線和箭頭都看成是數組就容易理解了。 對於指標來說每一條曲線或者箭頭都是寫在與每個K線對應的數組中的,也就是說一條曲線對應一個數組,一個方向的箭頭也是對應一個數組(有箭頭的數組值是當時的價格,沒箭頭地方的數組值是「空」) iCustom MT4的幫助里說的是:「計算指定的客戶指標並且退回它的值」,即這個函數可以讓你獲取指定指標的第幾個數組對應第幾根K線上的計算數值。 具體如下:double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift) 計算指定的客戶指標並且退回它的值。 必須在terminal_directory\experts\indicators目錄內編寫客戶指標(*.EX4文件)。 參量:symbol-計算指標數據上的貨幣對名稱. NULL表示當前貨幣對. timeframe - 時間周期。 可以時間周期列舉任意值. 0表示當前圖表的時間周期. name - 客戶指標完整的程序名稱. ... - 參量設置(如果需要)。通過的參量和他們的順序必須與desclaration命令和客戶指標的外部可變物的種類對應。 mode - 索引行。 從0到7並且必須對應以其中一個使用的索引的 SetIndexBuffer 函數. shift - 從顯示緩沖採取的值的索引(轉移相對當前柱特定相當數量期間前). 示例:double val=iCustom(NULL, 0, "示例Ind",13,1,0); double va2=iCustom(NULL, 0, "示例Ind",13,0,1); 例如:一個指標,畫了兩條曲線,則可以用iCustom取得這個指標在第4根K線上對應的第一條曲線的數值。 我們現在已經可以根據自己的想法去獲得一個指定指標的任何K線上的狀態數值了。那麽下一步我們就要開始EA的概念。 因為EA只針對當前價格狀態下的動作進行控制。所以一般而言我們就取指定指標在當前K線下的計算數值用於EA的條件判斷。 如果你認為當前K線沒有結束,其數值始終在變化,有可能一會有訊號一會沒訊號,那麽你可以採用取前一K線的指標數值的方式作為基礎。(如果用當前K線指標數值作為條件會有不確定的結果,但如果用前一K線數值做條件則有「錯過最佳入場點」的問題。這是需要程序設計者權衡的問題。) 另外的一個問題,就是怎末去判斷指標輸出的數值與我們肉眼看到的訊號一致起來的問題。 如果參考的指標是一種變色線,則一定是一種顏色一個數組的方式疊加起來顯示的。我們在取其數值的時候只需要看看不同顏色的數組的數值比較一下就知道其結果是哪種顏色,並作為EA的條件進行動作就行了。 如果是箭頭的方式,則一樣是去取其數值,無箭頭的K線上指標對應的數值是「空」,有箭頭的地方數組對應的數值肯定不是空。用這個來判斷是否發生了訊號就行了。 比如雙色線,就一定是兩個數組分別顯示不同顏色,當指標認為應該顯示其中一種顏色的時候就將這個顏色對應的數組在當前K線中的數值設成當前價。反之則設為「空」。這樣循環一遍後你肉眼看到的就是變色線了 現在我們可以輕松獲得指標的當前訊號狀態了!
Ⅳ 請教如何在EA里調用自己寫的指標
自己寫的指標可以用自定調用函數在EA里調用,具體的函數是
int iCustom(
string symbol, // 交易品種名稱
ENUM_TIMEFRAMES period, // 周期
string name // 文件夾/自定義指標_名稱
... // 指標輸入參量列表
);
比如用這個函數調用21日MA均線指標做個列子
double MA_handle=iCustom(NULL,0,"Moving Average",
21,
0,
MODE_SMA,
PRICE_CLOSE // 使用收盤價
);
Ⅳ 怎麼將自己的指標做成EA,比如我做了個箭頭,要求出現下箭頭就空,上箭頭就多,同時帶好止損
這個不是一句話問題,這個涉及到,你自己研究的方案,設計的技術指標,指標參數,要把這些東西,轉化成變成語言,然後要通過編程才可以實現。如果不懂編程語言,基本上EA很遙遠。
Ⅵ 如何編寫一個好的EA
首先要有成熟的思路模型是基礎,是關鍵命脈吧,其實量化的過程比較起模型不算重點,甚至我認為是EA製作過程中最簡單的,因為程序化你不懂可以找人代寫,只要交代清楚,你能有語言量化嚴謹,程序化的實現不是難點,關鍵是你的模型是否可以量化或是否值得量化,當然不是所有的模型都適合量化,比如思路細則中過多倚重組合形態,就不容易實現,單K的形態或少量K線的組合形態是可以實現的,如果是多K的組合形態實現就較為困難,我見過朋友有藉助指標來驗證形態的列子,雖然粗略有驗證行情的價值,但均不能實現精準的程度。
總之吧,如果你自己懂編寫,恰巧你有豐富的交易思路積累,不斷組合驗證,總會有所突破,會跟容易寫出一個適用的EA,因為如果你自己不懂編程,在向代寫的程序猿交代時,程序猿或是不能想你一樣對你的思路理解透徹,對思路的優劣點,做不到精準理解和量化上的側重,這個很重要,如果思路簡單還好,只要稍繞一點,你的理解和程序猿總會有偏差,這樣EA量化完會有「靈魂" 不完整的情況。還有一些思路,手動的驗證使用中效果不錯,但量化完成效果未必好,如果你思路積累豐富,做出適當調整,加入其他優勢條件的介入,逐漸完善才有可能實現一個好的EA. 說的不夠系統,希望對你有幫助。
Ⅶ 對mt4的三個自定義指標進行綜合EA編程
double
icustom(
string
symbol,
int
timeframe,
string
name,
...,
int
mode,
int
shift)
關鍵是將引用指標的名稱寫正確,放在這個參數的位置string
name.
name後面需要把指標中的參數,按順序寫完.
後面的mode指的是引用指標裡面的第幾畫線數組,一般是0-7,最多有8個.具體每個數組代表的意義,需要從引用指標裡面找到.
Ⅷ 在EA中如何調用已有的自己編寫的指標
在EA中可以用iCustom函數調用,具體用法,參看裡面的字典就可以了
Ⅸ 布林帶指標怎麼寫入EA本人剛學 想請教各位大神
你所說的EA指的是什麼,移動平均線?,如果是,可以直接把兩個指標代碼復制到一個裡面,設置好變數,就可以!
Ⅹ 如何編寫簡單的EA 交易和自定義指標
要編寫程序(「EA 交易」、「指標」或「腳本」),您可以啟動 MetaTrader 5 客戶端,從 Tools(工具)菜單選擇MetaQuotes Language Editor(MetaQuotes 語言編輯器),或按 F4 鍵。
在 MetaEditor 5 窗口中,從 File(文件)菜單選擇 New(新建),或按 Ctrl+N。
在 MQL5 Wizard(MQL5 向導)窗口中選擇您想要創建的程序類型:
接下來您可以指定程序名稱、作者信息,以及在啟動程序後向用戶要求的參數。
隨後,系統將創建程序模板(「EA 交易」、「指標」或「腳本」),您可以對其進行編輯或填入代碼:
程序就緒後,必須對其進行編譯。要編譯程序,從 File(文件)菜單選擇 Compile(編譯),或按 F7 鍵:
如果程序代碼沒有錯誤,系統將創建擴展名為 .ex5 的文件。之後,您可以將此新的「EA 交易」、「指標」或「腳本」附加至 MetaTrader 5 客戶端的圖表進行執行。
MQL5 程序是一個運算符序列。每個運算符以分號 ";" 結束。為您方便起見,您可以為代碼添加註釋,注釋位於符號 "/*" 和 "*/" 之中,或在代碼行末尾的 "//" 後。MQL5 是「面向事件」的編程語言。這表示當特定事件(程序啟動或終止、新的報價到來等)發生時,客戶端啟動用戶編寫的相應函數(子程序),以執行指定的操作。客戶端具有以下預定義事件:
Start 事件在「腳本」運行時發生(僅用於「腳本」)。它將會引起 OnStart 函數的執行。MQL4 對應物 -「腳本」中的 start 函數。
Init 事件在「EA 交易」或「指標」啟動時發生。它將會引起 OnInit 函數的執行。MQL4 等價物 - init 函數。
Deinit 事件在「EA 交易」或「指標」終止時發生(例如,從圖表分離後、關閉客戶端等)。它將會引起OnDeinit 函數的執行。MQL4 等價物 - deinit 函數。
NewTick 事件在當前金融工具有新的報價到來時發生(僅用於「EA 交易」)。它將會引起 OnTick 函數的執行。MQL4 對應物 -「EA 交易」中的 start 函數。
Calculate 事件在指標啟動(在 OnInit 函數執行後)以及當前金融工具有新報價到來時發生(僅用於「指標」)。它將會引起 OnCalculate 函數的執行。MQL4 對應物 -「指標」中的 start 函數。
Trade 事件在訂單執行、修改或刪除,以及在開倉、持倉修改或平倉時發生(僅用於「EA 交易」)。它將會引起 OnTrade 函數的執行。MQL4 中沒有該事件和函數的對應物。
BookEvent 事件在「市場深度」改變時發生(僅用於「EA 交易」)。它將會引起 OnBookEvent 函數的執行。MQL4 中沒有該事件和函數以及「市場深度」的對應物。
ChartEvent 事件在用戶使用圖表時發生:在圖表窗口處於焦點狀態時點擊滑鼠和按下按鍵。該事件也會在創建、移動或刪除圖形對象等時發生(用於「EA 交易」和「指標」)。它將會引起 OnChartEvent 函數的執行。MQL4 中沒有該事件和函數的對應物。
Timer 事件在計時器觸發時定期發生,如果計時器已使用 EventSetTimer 函數激活的話。它將會引起OnTimer 函數的執行。MQL4 中沒有該事件和函數以及計時器的對應物。
使用變數前,必須指定每個變數的數據類型。相比 MQL4,MQL 5 支持更多的數據類型:
bool 用於存儲邏輯值(true 或 false)。該數據類型佔用 1 位元組內存。
char 用於存儲從 -128 到 127 的整數值。該數據類型佔用 1 位元組內存。
uchar 用於存儲從 0 到 255 的無符號整數值。該數據類型佔用 1 位元組內存。
short 用於存儲從 -32,768 到 32,767 的整數值。該數據類型佔用 2 位元組內存。
ushort 用於存儲從 0 到 65,535 的無符號整數值。該數據類型佔用 2 位元組內存。
int 用於存儲從 -2,147,483,648 到 2,147,483,647 的整數值。該數據類型佔用 4 位元組內存。
uint 用於存儲從 0 到 4,294,967,295 的無符號整數值。該數據類型佔用 4 位元組內存。
long 用於存儲從 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的整數值。該數據類型佔用 8 位元組內存。
ulong 用於存儲從 0 到 18,446,744,073,709,551,615 的無符號整數值。該數據類型佔用 8 位元組內存。
float 用於存儲浮點值。該數據類型佔用 4 位元組內存。
double 用於存儲浮點值,通常為價格數據。該數據類型佔用 8 位元組內存。
datetime 用於存儲日期和時間值,它是從 01.01.1970 00:00:00 開始流逝的秒數。該數據類型佔用 8 位元組內存。
color 用於存儲顏色信息,它包含三種顏色分量的特性 - 紅色、綠色和藍色。該數據類型佔用 4 位元組內存。
enum 代表枚舉。它允許指定某種限制類型的數據集。該數據類型佔用 4 位元組內存。
string 用於存儲文本字元串。它的內部表示為 8 位元組結構,包括含字元串的緩沖區大小以及指向該緩沖區的指針。
選擇合適的數據類型對於獲得最佳性能及合理的內存使用十分必要。在 MQL5 中有個稱之為結構的新概念。結構將邏輯相關的數據結合在一起。