程式交易教學

誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)

報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達80%的交易利潤分成。



優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。

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」、作者與連結等維持預設值,參數則無須使用。在輸入名稱之後點擊「下一步」。

MQL

在「自定義指標的事件處理程序」中,「OnCalculate」將為已勾選的狀態。由於本次不會使用「OnTimer」「OnChartEvent」,因此無須此兩項目勾選,可直接點擊「下一步」。

OnCalculate

在「繪製自訂性能指標方案」中,指定是否「獨立視窗指標」以及「繪製」。由於本次將於主頁圖表中顯示MA,因此無須勾選「顯示於分頁」。至於繪圖的部分,則將添加與MA數據共融的一個緩衝區;在點擊「新增」之後,將標籤(緩衝區名稱)命名為MA、類型則為Line、顏色則是Red。點擊「完成」之後,將完成程式設計的模板。

繪製自訂性能指標方案

程式的模板

接下來將說明如何使用「MQL嚮導」建立新模板。在下圖中加入英文字母,並統整介紹其所代表的內容。

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++) {

MABuffer[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i );

}

iMA函數的設定項目

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

模板中帶有大量的英文,尚未習慣設計程式的人可能會備感壓力,但實際上僅需寫入幾行相當簡單的程式。

只要透過這樣的步驟,就能完成移動平均

線的製作,未曾設計過程式的人應該也能輕鬆完成。

原始碼

本次製作的原始碼如以下所示。往後的文章將使用此簡易版程式進行說明。

//+——————————————————————+

//| 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

我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。

誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)

報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達80%的交易利潤分成。



優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。

500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。

豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。