誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
MQL程式語言的全域變數說明解析
使用CHART_EVENT_MOUSE_MOVE
本章將說明全域變數。一般的全域變數意指函數以外所宣告的變數;在具體說明之前,將先製作模板。此處使用的檔案名稱為「LineSync_demo」,「自定義指標的事件處理程序」則選擇「OnTimer」以及「OnChartEvent」。本次使用的是「終端的全域變數」。製作的變數將適用於任何圖表,且一但製作完成之後,即使電腦或MT4斷線,也能保存4週的數據。此處將使用終端的全域變數,並製作能在圖表之間讀取數據的十字線同步工具。
為了顯示十字線,首先將製作「ChartEvent」。在MQL4相關參考中搜尋「ChartEvent」,點擊搜尋結果中的「Types of Chart Events」,使用「CHART_EVENT_MOUSE_MOVE」。第一個參數「lparam」為游標的X座標位置,第二個「dparam」則是Y座標的位置。本次雖然沒有使用第三個「sparam」,但其可顯示游標的按鍵是否處於按下的狀態。
MOUSE_MOVE的參數數值 | |
Id參數的數值 | CHARTEVENT_MOUSE_MOVE |
lparam參數的數值 | X座標 |
dparam參數的數值 | Y座標 |
sparam參數的數值 | 說明游標按鍵狀態的位元遮罩文字列數值 |
運用ChartXYToTimePrice將座標變更為時間與價格
使用MOUSE_MOVE的狀況下,需如以下所示對 OnInit函數旗下進行宣告。ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true);接著從OnChartEvent內的參數取得座標,並將其變更為圖表上的價格與時間資訊。此處使用的函數是「ChartXYToTimePrice」,其為將XY變更為time與price的函數。
if(id == CHARTEVENT_MOUSE_MOVE) {如此一來,便完成了將XY座標變更為價格與時間資訊。
int x = (int)lparam;
int y = (int)dparam;
int win = 0;
double price;
datetime time;
if (ChartXYToTimePrice(0, x, y, win, time, price)) {
GlobalVariableSet(“GVlauePrice”, price);
GlobalVariableSet(“GVlaueTime”, time);
}
}
運用變更數據顯示垂直線與水平線
方才已使用ChartXYToTimePrice將XY座標變更為價格與時間資訊;接下來將利用該變更的數據,嘗試畫出十字線的縱線與橫線。此處將使用MQL4相關參考中複製的範例編碼。在MQL4相關參考的目次中,選擇「Constants, Enumerations and Structures」→「Objects Constants」→「Object Types」即可瀏覽物件;複製其中代表縱線的「OBJ_VLINE」以及橫線的「OBJ_HLINE」編碼,再貼上於檔案中。
接下來,將設定OnChartEvent旗下HLineCreate及VLineCreate的參數。HLineCreate的圖表ID為「0」、名稱為「HLine」、window為「0」、最後則設定為「price」。VLineCreate也相同,圖表為「0」、名稱為「VLine」、window為「0」、最後則設定為「time」。其他的參數將直接使用預設值,因此可以忽略。
HLineCreate(0, “HLine”, 0, price);如此進行編譯,即可顯示垂直線與水平線。
VLineCreate(0, “VLine”, 0, time);
以線條追蹤游標的動作
雖已完成了垂直線與水平線的顯示,但預設為顯示一次之後便會結束,因此需進行修改來反映游標位置的最新數值。在VLineCreate旗下增加「ObjectSetInteger(chart_ID, name, OBJPROP_TIME, 0, time);」、HLineCreate旗下則是增加「ObjectSetDouble(chart_ID, name, OBJPROP_PRICE, 0, price);」。//— create a vertical line如此即可讓垂直線與水平線配合游標的動作。由於其後的各種線條也將改變為所選的狀態,因此在VLineCreate與HLineCreate參數的「selection」中,應將「true」變更為「false」來解除選擇。另外,為了避免製作完成的線條消失,針對刪除指標・再讀取・編譯時會使其消失的OnDeinit函數,將如以下所示先行設定。
if(!ObjectCreate(chart_ID, name, OBJ_VLINE, sub_window, time, 0)) {
/* Print(__FUNCTION__,
“: failed to create a vertical line! Error code = “,GetLastError()); */
ObjectSetInteger(chart_ID, name, OBJPROP_TIME, 0, time);
return(false);
}
//— create a horizontal line
if(!ObjectCreate(chart_ID, name, OBJ_HLINE, sub_window, 0, price)) {
/* Print(__FUNCTION__,
“: failed to create a horizontal line! Error code = “,GetLastError());*/
ObjectSetDouble(chart_ID, name, OBJPROP_PRICE, 0, price);
return(false);
}
//+——————————————————————+另外,在目前的設定下,如果游標在圖表上靜止不動,便會得出該線條位置的價格資訊;如欲避免此狀況,需在各個線條的參數上添加以下文字。
//| Custom indicator deinit function |
//+——————————————————————+
void OnDeinit(const int reason)
{
ObjectDelete(0, “VLine”);
ObjectDelete(0, “HLine”);
}
ObjectSetString(chart_ID, name, OBJPROP_TOOLTIP, “\n”);如此便完成了十字線。
游標指標(十字線)雖已完成,但是當不同時間週期的圖表並列顯示時,將無法進行同步;而同步的方法請參考以下文章的內容。
在不同的時間軸圖表中同步滑鼠游標的方法
將EA自動程式交易應用於外匯與差價合約交易中
我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。