誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
iCustom函數的製作方法與原始碼的介紹說明
製作專用的模板
在本節文章中,將帶來非常便利的iCustom函數。iCustom函數能讀取並利用其他指標程式所輸出的緩衝區資訊;透過這樣的程式,無需建構新的程式即可沿用現有的指標功能。在說明具體的使用方法之前,將先製作模板。具體步驟如下:
①開啟MT4上面列表「工具」當中的「MQ語言編輯器(E)」 。
②進入MetaEditor後再點擊左上角的「製作新按鈕」、勾選「自訂指標」並按「下一步」。
③此處的檔案名稱設定為「iCustom_test」。
④「自訂指標程式的事件處理常式」則維持勾選「OnCalculate」的狀態並按「下一步」。
⑤「繪製自訂性能指標方案」中,點擊「增加」以添加繪圖。
本次的標籤為「custom」、類型為「Arrow」、顏色則是「Magenta紫紅色」,如此點擊「完成」來結束模板。
在OnInit函數當中,要先設定顯示箭頭(符號)的編號。將「PlotIndexSetInteger(0,PLOT_ARROW,159);」修改為以下程式。
SetIndexArrow(0, 181);本次使用「181號」的符號。至於箭頭的形狀,若從選單的「幫助」→「MQL4幫助檔」
從中搜尋「wingdings」,即可瀏覽各式各樣的符號。
寫入iCustom函數公式
本次將運用iCustom函數,調出在「MQL程式的基礎~在移動平均線的交叉處顯示符號~」段落中製作的「MA_Cross_Sign_demo」。首先要複製在MA_Cross_Sign_demo使用的for文法程式,並貼上於OnCalculate函數的位置。int limit = Bars – IndicatorCounted() – 1;接下來,將帶出適用for文法中iCustom函數結果的緩衝區,並於其中寫入iCustom函數的公式。本次如以下所示進行設定。
if (limit < 1) limit = 1;
for (int i = limit; i >= 0; i–) {
int limit = Bars – IndicatorCounted() – 1;
if (limit < 1) limit = 1;
for (int i = limit; i >= 0; i–) {
customBuffer[i] = iCustom(NULL, 0, “MA_Cross_Sign_demo.ex4”, “”, PERIOD0, SHIFT0, METHOD0, PRICE0, clrNONE, 0, 0, “”, “”, PERIOD1, SHIFT1, METHOD1, PRICE1, clrNONE, 0, 0 , 2, i);
}
iCustom函數的設定項目 | |
symbol | 設定貨幣對名稱 |
timeframe | 設定時間週期 |
name | 設定欲使用的自定義指標名稱 |
… | 設定逗號來分段自定義指標的輸入參數表格 |
mode | 以name設定指標的緩衝區(設定顏色的#編號) |
shift | 設定從第幾根K線開始計算 |
最初的參數將是貨幣對的名稱;由於會使用目前顯示的貨幣對,因此設定為「NULL」。下一次的時間條列中使用的是「0」,叫出自定義指標的名稱則是前述提及的「MA_Cross_Sign_demo」。
檔案名稱中的副檔名可省略,如欲添加亦可使用「.ex4」。從此處開始將延伸至各個指標的參數,並在最後兩的項目設定緩衝區的編號。由於本次將設定買進符號的編號,因此選擇「2」。最後設定要使用第幾根K線,本次設定為第i根。
如此便大功告成。來比較一下製作的「iCustom_test」與「MA_Cross_Sign_demo」系列圖表。
在「iCustom_test」系列圖表中,可以看見「MA_Cross_Sign_demo」的買進箭頭符號(紅色箭頭)與同樣位置的紫紅色符號,意即能夠正常運用iCustom函數。
調出並顯示賣出符號
接下來將嘗試調出賣出符號。如欲確認能否調出賣出符號,可將iCustom函數括弧內的緩衝區編號從買進符號的「2」變更為「3」。
customBuffer[i] = iCustom(NULL, 0, “MA_Cross_Sign_demo.ex4”, “”, PERIOD0, SHIFT0, METHOD0, PRICE0, clrNONE, 0, 0, “”, “”, PERIOD1, SHIFT1, METHOD1, PRICE1, clrNONE, 0, 0 , 3, i);如此進行編譯、整理圖表系列之後,將會顯示「MA_Cross_Sign_demo」的賣出箭頭符號(藍色箭頭)與同樣位置的紫紅色符號,意即確認可正常運用iCustom函數。
順道一提,此處iCustom函數的括弧內設定了10個以上的參數,而此數字其實有59個的上限值,一旦超過上限則將無法編譯,並導致後續無法使用,此點務必多加留意。
另外,參數的部分亦可省略;省略的狀況下,將套用叫出指標的部分所設定的預設值。與顯示有關的參數與數值無關,因此可以進行刪除,並作為固定數值來運用。
原始碼
本次製作的原始碼如下列所示。//+——————————————————————+
//| iCustom_test.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
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//— plot custom
#property indicator_label1 “custom”
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrFuchsia
#property indicator_style1 STYLE_SOLID
#property indicator_width1 3
input string _00 = “”; // [ MA1 ]
input int PERIOD0 = 5; // 週期
input int SHIFT0 = 0; // 移動
input ENUM_MA_METHOD METHOD0 = MODE_SMA; // MA類別
input ENUM_APPLIED_PRICE PRICE0 = PRICE_CLOSE; // 適用價格
input string _10 = “”; //
input string _11 = “”; // [ MA2 ]
input int PERIOD1 = 20; // 週期
input int SHIFT1 = 0; // 移動
input ENUM_MA_METHOD METHOD1 = MODE_SMA; // MA類別
input ENUM_APPLIED_PRICE PRICE1 = PRICE_CLOSE; // 適用價格
//— indicator buffers
double customBuffer[];
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit()
{
//— indicator buffers mapping
SetIndexBuffer(0,customBuffer);
//— setting a code from the Wingdings charset as the property of PLOT_ARROW
SetIndexArrow(0, 181);
//—
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[])
{
//—
int limit = Bars – IndicatorCounted() – 1;
if (limit < 1) limit = 1;
for (int i = limit; i >= 0; i–) {
customBuffer[i] = iCustom(NULL, 0, “MA_Cross_Sign_demo.ex4”, “”, PERIOD0, SHIFT0, METHOD0, PRICE0,
clrNONE, 0, 0, “”, “”, PERIOD1, SHIFT1, METHOD1, PRICE1, clrNONE, 0, 0 , 3, i);
}
//— return value of prev_calculated for next call
return(rates_total);
}
//+——————————————————————+
將EA自動程式交易應用於外匯與差價合約交易中
我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。