誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
全面升級——更多功能、更大靈活性!
優化了“固定最大虧損”,“每日虧損限制”等。查看詳情全新「Boost」計劃
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
【MQL編程基礎】|保存圖表畫面並以外部應用程式開啟的方法
1.製作新檔並選擇「OnChartEvent」
在本篇文章中,將說明如何將圖表畫面保存為檔案,並使用MT4以外的外部應用程式開啟。首先,將利用最早寫入MT4的ChartScreenShot函數,解釋如何透過鍵盤操作來保存畫面。在製作新檔案處選擇「自訂指標」,檔案名稱設定為「ExecuteTest」。由於本次將使用鍵盤操作,因此要在「自訂指標程式的事件處理常式」中勾選「OnChartEvent」,並在下一步點擊「完成」即是雛形。
2.確認分配給P鍵的編號
開啟檔案之後,將在OnChartEvent函數內寫入處理步驟。本次使用「CHARTEVENT_KEYDOWN」,並希望在按下鍵盤P鍵時執行處理,因此須先確認分配給P鍵的編號。寫入以下編碼,並試著顯示按下的按鍵編號。if (id == CHARTEVENT_KEYDOWN) {如此進行編譯並設定圖表,便會於按下鍵盤P鍵時,在終端視窗的「expert」標籤中,以訊息顯示「25」。此25即為P鍵所分配的編號。
Print(sparam);
}
3.以ChartScreenShot函數保存畫面
接下來,將使用得出的編號,寫入在按下P鍵時會執行處理的程序。本次將使用ChartScreenShot函數來保存圖表的畫面。ChartScreenShot是能夠指定欲保存的圖表ID、檔案名稱、畫面寬度與高度、標準位置,並將圖表畫面擷取保存的函數。畫面會保存於資料檔案的「Files」目錄中。至於畫面檔案的種類,則會依據檔案名稱的副檔名,以GIF圖像、PNG圖像、BMP圖像等方式保存。此處的圖表ID為「0」、檔案名稱為「chart.png」、尺寸的寬度為「600」、高度為「400」、標準位置則維持預設。
if (id == CHARTEVENT_KEYDOWN) {如此進行編譯之後,嘗試按下鍵盤的P鍵。若開啟資料檔案的「MQL4」→「Files」,即可見到檔案名稱為「chart.png」的圖表畫像。
if (sparam == 25) {
ChartScreenShot(0, “chart.png”, 600, 400);
}
Print(sparam);
}
4.以「import」叫出外部檔案
在上述文章中,使用了P鍵所分配的編號,並以 ChartScreenShot函數保存了圖表畫面。接下來,將利用稱為ShellExecuteW function的Windows API來開啟保存的檔案。ShellExecuteW function存在於稱為「Shell32.dll」的動態連結程式庫(Dynamic Link Library:DLL)中,因此可從該處調出使用。當調出外部檔案時,需將「import」指定為檔案名稱,並在其中寫入欲使用的函數。在「#property indicator_chart_window」如下寫入。
#import “Shell32.dll”順道一提,此函數編碼是複製自微軟開發人員網站,並改變成可用於MT4的形式。
int ShellExecuteW(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
#import
5.以「ShellExecuteW」開啟
接下來,在OnChartEvent函數內的「ChartScreenShot(0, “chart.png”, 600, 400);」之下,叫出製作的ShellExecuteW。ShellExecuteW能夠以備註的型態指定應用程式的動作,由於本次希望開啟檔案,因此使用「open」。接下來需指定欲開啟的檔案名稱,但由於「TERMINAL_DATA_PATH」代表早於MQL4資料夾的路徑,因此需以接續的形式來寫入資料夾名稱與檔案名稱。最後的「1」,則是用來指定以何種狀態來開啟。1代表正常開啟「SHOWNORMAL」,若指定其他的數字,還能夠縮至最小或放至最大。ShellExecuteW(0, “open”, TerminalInfoString(TERMINAL_DATA_PATH) + “\MQL4\Files\chart.png”, “”, “”, 1);另外,若使用Windows API,則需先在指標的屬性畫面中,於「常規」標籤勾選「允許導入動態連接庫」。若在未核准使用DLL的狀態下執行,將會導致錯誤出現,故須特別留意。
如此進行編譯並設定圖表。按下鍵盤的P鍵時,便會保存圖表的畫面,並開啟該畫面檔案。
6.運用ShellExecuteW的使用方式
在上述文章中,完成了以import調出外部檔案、並利用 ShellExecuteW函數來開啟保存的圖表畫像。接下來,將以 ShellExecuteW作為運用模型加以改造,使其能開啟儲存目的地的資料夾、而非檔案。設定的方式相當簡單,只需將 ShellExecuteW指定的檔案名稱從「”\MQL4\Files\chart.png”」改成「”\MQL4\Files\”」,如此刪除檔案名稱中「chart.png」即可。
ShellExecuteW(0, “open”, TerminalInfoString(TERMINAL_DATA_PATH) + “\MQL4\Files\”, “”, “”, 1);在此時進行編譯並按下P鍵,即可見到開啟的並非檔案、而是Files資料夾。
另外,亦能以ShellExecuteW開啟指定的URL網頁。本次的設定,將在按下鍵盤H鍵時,開啟「OANDA(安達)Lab」的網頁。由於H鍵所分配的編號是「35」,因此在「Print(sparam);」前方新增if文體,使sparam在35時執行處理。接著沿用先前寫入的ShellExecuteW編碼,以OANDA(安達)Lab的URL取代地址即可。
if (sparam == 35) {在此時進行編譯並按下H鍵,便會啟動瀏覽器並開啟指定的OANDA(安達)Lab網頁。ShellExecuteW屬於相當便於活用的函數,亦可如此開啟相關的檔案、資料夾與URL。
ShellExecuteW(0, “open”, “https://www.oanda.jp/lab-education/”, “”, “”, 1);
}
7.原始碼
本次製作的原始碼如以下所示。//+——————————————————————+
//| ExecuteTest.mq4 |
//| Copyright 2022, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+——————————————————————+
#property copyright “Copyright 2022, MetaQuotes Software Corp.”
#property link “https://www.mql5.com”
#property version “1.00”
#property strict
#property indicator_chart_window
#import “Shell32.dll”
int ShellExecuteW(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
#import
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit()
{
//— indicator buffers mapping
//—
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[])
{
//—
//— return value of prev_calculated for next call
return(rates_total);
}
//+——————————————————————+
//| ChartEvent function |
//+——————————————————————+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//—
if (id == CHARTEVENT_KEYDOWN) {
if (sparam == 25) {
ChartScreenShot(0, “chart.png”, 600, 400);
ShellExecuteW(0, “open”, TerminalInfoString(TERMINAL_DATA_PATH) + “\MQL4\Files\”, “”, “”, 1);
}
if (sparam == 35) {
ShellExecuteW(0, “open”, “https://www.oanda.jp/lab-education/”, “”, “”, 1);
}
Print(sparam);
}
}
將EA自動程式交易應用於外匯與差價合約交易中
我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
全面升級——更多功能、更大靈活性!
優化了“固定最大虧損”,“每日虧損限制”等。查看詳情全新「Boost」計劃
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。