程式交易教學

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

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



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

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

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



使用MQL程式語言中OnTimer函數的準備工作

使用OnTimer函數的準備工作

本文將說明Timer函數。透過Timer函數的運用,可在與Tick運作無關的狀態下,定期進行處理的程序。

首先開啟MetaEditor、點擊「創建新文檔」,會顯示「MQL4視窗」。然後點選「自定義指標」、在「名稱」位置輸入名稱(由於本次將定義Timer函數,因此檔案名稱設定為「TimerTest」),按下「下一頁」。在「自定義指標的事件處理程序」選擇「OnTimer」,點擊「下一頁」。在「自定義指標的的繪製屬性」無須進行任何設定,如此即可點擊「完成」。

MQL OnTimer

現在來檢查製作好的模板。雖然已有寫入OnTimer函數,但若要使其順利運作,必須對OnInit函數內的「EventSetTimer」或是「EventSetMillisecondTimer」進行宣告。本次使用的是EventSetMillisecondTimer。

EventSetMillisecondTimer是會依據括弧內秒數來反覆計算的函數,其單位為毫秒,因此若輸入「1000」,就代表會每隔1秒鐘進行處理;若輸入「100」,則是每隔0.1秒鐘。

EventSetMillisecondTimer(100);

另外,使用此函數的另一個要點,便是需要在OnDeinit函數當中,一併定義定時器的取消處理過程;定時器的取消函數則需宣告「EventKillTimer」。

void OnDeinit(const int reason)

{

EventKillTimer();

}

如此即可完成 OnTimer函數的準備工作。

運用Comment函數製作簡易時鐘

那麼,作為一個小測驗,現在來嘗試使用Comment函數在圖表上顯示時間。Comment函數能將括弧內的數字縮小顯示於圖表左上方。本次設定為能顯示PC目前時間的「TimeLocal」。

Comment(TimeLocal());

進行編譯之後,圖表左上方就會顯示目前的時間。

TimeLocal

除了單純顯示時間之外,亦可添加各式各樣的變化。舉例來說,能在目前時間的下方,同時顯示伺服器時間以及兩者之間的時間差。顯示伺服器時間的函數為「TimeCurrent」;由於其單位是秒,因此需進行時間單位的換算,也就是從日本時間減去伺服器時間再除以3600。

Comment(TimeLocal(),”\n”,TimeCurrent(),”\n”,int(TimeLocal() – TimeCurrent()) / 3600);

進行編譯之後,圖表左上方就會同時顯示PC的目前時間、伺服器時間、兩者之間的時間差等三個項目。

顯示K線定型前的剩餘時間

接下來,將顯示K線定型前的剩餘時間。

如欲顯示剩餘的時間需要每根K線的時間,所以需要使用「PeriodSeconds」。PeriodSeconds能在目前觀看的圖表中,顯示與1條K線同等的秒數;例如在1分鐘時間週期圖表中,便會出現60的數值。

int countDown = PeriodSeconds() – (int)TimeLocal() % PeriodSeconds();

上列「TimeLocal() % PeriodSeconds()」的算式,即代表TimeLocal除以PeriodSeconds後的剩餘數字。將60減去目前的秒數,就會顯示剩餘的時間。另外, TimeLocal前面的「(int)」則是為了將時間形式變成整數型,添加此項可避免細微的錯誤(型式轉換導致數據損失的可能性)。

運用Label物件的顯示方法

此處將不使用註解,而是介紹Label物件的顯示方法。Label物件可從MT4畫面選單的「插入」→「內容標籤」加以顯示。

需要使用到的函數是「LabelCreate」,此處的範例將從MQL4相關參考中複製範例編碼。MQL4相關參考的目錄在「Constants, Enumerations and Structures」→「Object Constants」→「Object Types」→「OBJ_LABEL」中,可從該處複製LabelCreate函數,並貼上於檔案中的任一處。

LabelCreate

接著要在OnTimer函數中調出此LabelCreate函數。如以下所示來設定此處括弧內的參數。

LabelCreate(0, “Clock”, 0, 100, 100, CORNER_LEFT_UPPER, (string)countDown, “Arial Bold”, 30, clrWhite);

首先是圖表的編號,由於欲指定目前顯示的圖表,因此設定為「0」;名稱雖設定為「Clock」,但亦可任意替換。至於副窗圖表因為也在主窗中顯示,所以也設定為「0」。

顯示位置的部分,此處的X座標與Y座標總共是「100」,邊角基準位置則是「左上」。顯示文字使用「countDown」,其可將計算剩餘時間的數字變換為文字列。字體選擇「Arial」,並以「Bold」設定粗體;尺寸為「35」、顏色為「白色」。如此進行編譯,就會按照設定顯示數字。

countDown

上述步驟所產生的文字並不會進行倒數計時;下方的文章內容中,將會詳細說明運用LabelCreate函數使數字倒數計時的方法。

運用LabelCreate函數使數字倒數計時的方法

將EA自動程式交易應用於外匯與差價合約交易中

EA

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

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

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



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

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

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