誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
使用File函數來保存交易紀錄的方法
幫助保存數據的函數
在本章節中,將介紹使用File函數保存交易紀錄的方法。File函數恰如其名,是可供操作檔案的函數;其中亦有著各式各樣的種類,可從MQL4幫助檔的內容選單中點擊「File Functions」加以確認。File函數能夠保存半永久數據,並且大多用於此類目的。由於程式的記憶體會在MT4結束時一併消失,因此其可有效運用於長時間保存的領域。另外,也因交易數據會在數個月之後從伺服器中消失,故亦可使用File函數來加以保存。
但是File函數具有條件限制,基本上只能透過MT4畫面上方選單的「文件」→「打開數據文件夾」→「MQL4」→「Files」資料夾中的檔案來進行操作。
開啟CSV檔案寫入數據
本次將製作能把伺服器內數據保存於CSV檔案的工具。可使用單次執行並結束的程式,故在製作時選擇「草稿」;在創建新文檔的畫面勾選「腳本」並點擊「下一步」,檔案名稱則命名為「FileTest」。
完成製作新項目之後,從方才MQL相關參考的File函數一覽中,複製可作為參考的編碼;本次使用的是記載於「FileOpen」頁面的下列編碼。將其貼上於「OnStart」函數下方。
ResetLastError();接下來,在「filehandle=FileOpen(“fractals.csv”,FILE_WRITE|FILE_CSV);」的「filehandle」前方添加「int」,並將「fractals.csv」變更為「result.csv」;如此進行編譯,並將腳本中的「FileTest」拖曳至圖表上,即可在「Files」資料夾中自動製作名為「result.csv」的CSV檔案。
filehandle=FileOpen(“fractals.csv”,FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)));
FileClose(filehandle);
Print(“FileOpen OK”);
}
else Print(“Operation FileOpen failed, error “,GetLastError());
若開啟此檔案進行確認,即可看見單一窗格中顯示了日期、時間、貨幣對名稱以及時間週期。
將交易數據個別納入方格中
接下來將進行修改,一邊確認過去的交易數據、一邊依照順序將其個別納入方格當中。首先將使用取得for文體中部位數據的「OrderSelect」函數,並寫入 if文體;如此即可在選擇過去的交易紀錄時進行處理。
for (int i = 0; i <="" p="">其次,將以「string」累加計算當時的資訊。第一項為訂單號(OrderTicket)、第二項為交易的貨幣對名稱(OrderSymbol)、第三項為交易的結算時間(OrderCloseTime)。如欲透過CSV檔案納入個別的方格,便須以逗號來區隔每個數據。另外,結算時間能以「TIME_DATE | TIME_SECONDS」來將每秒作為單位。
string str = NULL;
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
str = (string)OrderTicket() + “,”;其次,可使用「OrderType」來紀錄交易類型為「買進」或「賣出」,OrderType的值,「0」代表買進訂單、「1」代表賣出訂單,所以,如果是「OP_BUY」就代表買進,否則就代表賣出。其後再添加交易的單位數量與損益,最後輸入換行的「\n」;如此即可依照交易順序,將每行數據寫入個別的方格中。
str += OrderSymbol() +”,”;
str += TimeToString(OrderCloseTime(), TIME_DATE | TIME_SECONDS) + “,”;
最後使用「FileWriteString」,將寫入數據的編碼記載於檔案範圍中,如此即可完成。
str += (OrderType() == OP_BUY ? “Buy” : “Sell”) + “,”;如此進行編譯,並將「FileTest」拖曳於圖表上、再更新「result.csv」,即可將交易數據個別納入方格當中。
str += (string)OrderLots() + “,”;
str += (string)OrderProfit() + “\n”;
FileWriteString(filehandle, str);
新增第1行的標題
單憑交易數據可能難以辨認,故可在第1行顯示標題。如欲在第1行顯示「Ticket」「Symbol」「Time」「Type」「Lot」「Profit」,可在for文體之前寫入下列編碼。string title = “Ticket,Symbol,Time,Type,Lot,Profit\n”;以此先進行編譯,並將「FileTest」拖曳至圖表、開啟更新過後的「result.csv」,即可在第1行新增標題。以此方式將交易數據寫入CSV檔案中,便能夠簡單地計算損益。
FileWriteString(filehandle, title);
順道一提,將編譯過後的「FileTest」拖曳至圖表時,若CSV檔案仍在開啟中,便可能出現錯誤;因此需特別留意,務必在CSV檔案關閉的狀態下進行拖曳。
原始碼
本次製作的原始碼如以下所示。//+——————————————————————+
//| FileTest.mq4 |
//| Copyright 2021, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+——————————————————————+
#property copyright “Copyright 2021, MetaQuotes Software Corp.”
#property link “https://www.mql5.com”
#property version “1.00”
#property strict
//+——————————————————————+
//| Script program start function |
//+——————————————————————+
void OnStart()
{
ResetLastError();
int filehandle = FileOpen(“result.csv”, FILE_WRITE | FILE_CSV);
if(filehandle != INVALID_HANDLE) {
// FileWrite(filehandle, TimeCurrent(), Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)));
string title = “Ticket,Symbol,Time,Type,Lot,Profit\n”;
FileWriteString(filehandle, title);
for (int i = 0; i <="" p="">
string str = NULL;
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
str = (string)OrderTicket() + “,”;
str += OrderSymbol() +”,”;
str += TimeToString(OrderCloseTime(), TIME_DATE | TIME_SECONDS) + “,”;
str += (OrderType() == OP_BUY ? “Buy” : “Sell”) + “,”;
str += (string)OrderLots() + “,”;
str += (string)OrderProfit() + “\n”;
FileWriteString(filehandle, str);
}
}
FileClose(filehandle);
Print(“FileOpen OK”);
} else Print(“Operation FileOpen failed, error “, GetLastError());
}
//+——————————————————————+
將EA自動程式交易應用於外匯與差價合約交易中
我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。