誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
運用MQL程式語言顯示移動平均線圖表的方法
熟記MQL語言
如果要以MT4(MT5)製作指標或是智能交易(EA:Expert Adviser),就必須使用MQL語言來設計程式。許多人可能對程式語言抱有艱深難懂的印象,實際上只要從基礎開始循序漸進地學習,便可理解其中的意義。在本文內容中,將實際使用MQL語言來設計程式。
為了先從基礎層面開始認識MQL,此處將製作單純的指標程式:「在圖表中顯示移動平均線」。
透過MQL進行程式設計時,需使用到MetaEditor。在MT4的畫面中,可透過下列的操作方式來啟動。
MetaEditor的啟動方式 |
・按F4鍵 ・點選工具列中的「MetaQuotes語言編輯器」 ・點選選單中的「工具」→「MetaEditor」 |
MetaEditor「MQL嚮導」的操作步驟
開啟MetaEditor之後,點擊左上方的「新增檔案」按鈕,「MQL4嚮導」便會啟動。由於本次將製作移動平均線(MA:Moving Average),因此要點選「自訂指標」後按「下一步」。在「常規指示程式的常規自訂」中,設定「名稱」「作者」「連結」「參數」等項目。本次的名稱為「MA_demo」、作者與連結等維持預設值,參數則無須使用。在輸入名稱之後點擊「下一步」。
在「自定義指標的事件處理程序」中,「OnCalculate」將為已勾選的狀態。由於本次不會使用「OnTimer」「OnChartEvent」,因此無須此兩項目勾選,可直接點擊「下一步」。
在「繪製自訂性能指標方案」中,指定是否「獨立視窗指標」以及「繪製」。由於本次將於主頁圖表中顯示MA,因此無須勾選「顯示於分頁」。至於繪圖的部分,則將添加與MA數據共融的一個緩衝區;在點擊「新增」之後,將標籤(緩衝區名稱)命名為MA、類型則為Line、顏色則是Red。點擊「完成」之後,將完成程式設計的模板。
程式的模板
接下來將說明如何使用「MQL嚮導」建立新模板。在下圖中加入英文字母,並統整介紹其所代表的內容。A | 指標的檔案名稱 |
B | 著作權 |
C | 連結 |
D | 版本編號 |
E | 編譯方式 |
F | 指標的顯示位置(chart_window意指主要圖表) |
G | 緩衝區數量 |
H | 顯示的緩衝區數量 |
I | 指標的名稱 |
J | 指標的類型 |
K | 指標的顏色 |
L | 指標的線條種類 |
M | 指標的寬度 |
N | 緩衝區使用的序列 |
O | OnInit函數。在圖表中設定指標時,需於最初步驟執行一次。 |
P | OnCalculate函數。伺服器每次傳輸Tick時都需執行。此處將寫入MA相關的公式。 |
MA相關公式
認識完模板的構造之後,將在OnCalculate函數之下寫入MA公式。由於需要計算所有顯示於圖表中的長條列,因此使用可重複計算的「for文」。for (int i = 0; i < Bars; i++)
此模式為從i=0號開始,至 Bars編號為止重複執行(Bars代表圖表中顯示的K線數量)。
接下來將在緩衝區的序列中寫入MA的計算公式。此時使用的是iMA函數,其會於MT4之上進行初期搭載,因此可設定必要的參數來計算MA。
for (int i = 0; i < Bars; i++) {iMA函數的設定項目
MABuffer[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i );
}
const string symbol(貨幣對名稱) | NULL意指使用目前顯示的圖表 |
timeframe(時間週期) | 0意指使用目前顯示的時間週期 |
period(週期) | 指標的計算週期。此處設定為20 |
ma_shift(移動) | 將MA左右滑動進行設定。如不滑動,則為0 |
ma_method(種類) | 設定MA的種類。單純的移動平均線則為SMA |
applied_price(價格) | 適用於MA計算的價格。收盤則為CLOSE |
shift(變換) | 使用第幾編號的線來計算。此處設定為編號i |
如此即為完成。此處完成的公式,是將編號i的MA值將寫入編號i的MA緩衝區。此處的i將從0開始至Bars編號為止重複計算,並顯示出MA。
編譯的步驟
完成程式設定之後,可點擊儲存圖示來進行儲存(「檔案」→「儲存」亦可)。此處需要注意的地方,在於如果僅儲存程式的部分,後續將無法執行指標,因此需要進行編譯的工作。透過在實際寫入的來源檔案中進行編譯,可變換為MT4適用的執行檔案(ex4檔案)。
點擊編譯的圖示(「檔案」→「編譯」亦可)即可完成。在編譯之後, MT4將顯示於製作完成的指標瀏覽器中。將該檔案拖曳至圖表中即可顯示。
本次製作的顯示方式為紅色MA。
模板中帶有大量的英文,尚未習慣設計程式的人可能會備感壓力,但實際上僅需寫入幾行相當簡單的程式。
只要透過這樣的步驟,就能完成移動平均
線的製作,未曾設計過程式的人應該也能輕鬆完成。
原始碼
本次製作的原始碼如以下所示。往後的文章將使用此簡易版程式進行說明。//+——————————————————————+
//| MA_demo.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+——————————————————————+
#property copyright “Copyright 2020, MetaQuotes Software Corp.”
#property link “https://www.mql5.com”
#property version “1.00”
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//— plot MA
#property indicator_label1 “MA”
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//— indicator buffers
double MABuffer[];
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit()
{
//— indicator buffers mapping
SetIndexBuffer(0,MABuffer);
//—
return(INIT_SUCCEEDED);
}
//+——————————————————————+
//| Custom indicator iteration function |
//+——————————————————————+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//—
for (int i = 0; i < Bars; i++) {
MABuffer[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i );
}
//— return value of prev_calculated for next call
return(rates_total);
}
//+——————————————————————+
將EA自動程式交易應用於外匯與差價合約交易中
我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。