誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
運用MQL程式語言製作移動平均線的方法解析
新增參數
在「運用MQL程式語言,在圖表中顯示移動平均線的方法」文章中可製作簡易的MA程式,透過在簡易版上新增功能,使其修改至可被稱為MA的狀態。參考文章:運用MQL程式語言,在圖表中顯示移動平均線的方法
首先將設定參數;透過此步驟,將能夠變更指標的各種設定。在定義參數的時候,將先嘗試設定MA週期(計算期間),在一開始就輸入「input」。此處的整數型為「int」的「PERIOD」,預設值為「20」。
input int PERIOD = 20; // 週期另外,如果在input的「PERIOD」旁邊輸入「//」及,就可為參數命名。只要將此「PERIOD」貼上至iMA函數的週期處(前一節文章中製作的簡易版程式),便完成了準備工作。
for (int i = 0; i < Bars; i++) {修改前並無「輸入參數」的標籤,因此可透過編譯修改程式的動作來新增,如此便能任意變更週期數值。
MABuffer[i] = iMA(NULL, 0, PERIOD, 0, MODE_SMA, PRICE_CLOSE, i );
}
週期以外也使用相同的步驟來設定
與前述的步驟相同,其他的參數也能設定「SHIFT」(移動)、「MA_METHOD」(MA類別)、「APPLIED PRICE」(適用價格)等項目。另外,「MA_METHOD」等等並非使用int型,而是預先準備於MT4的列舉型(ENUM)。input int PERIOD = 20; // 週期將此進行編譯後,便可全數顯示。使用列舉型的項目中,並非輸入數值的形式,而是從MT4中的「插入」,在從技術指標中選取趨勢指標「MA」,MA類別中設定Simple、Exponential…等選項。
input int SHIFT = 0; // 移動
input ENUM_MA_METHOD METHOD = MODE_SMA; // MA類別
input ENUM_APPLIED_PRICE PRICE = PRICE_CLOSE; // 適用價格
將其各自製作的定數貼上至iMA函數。
for (int i = limit; i >= 0; i–) {
MABuffer[i] = iMA(NULL, 0, PERIOD, SHIFT, METHOD, PRICE, i );
}
變更顏色與線條種類
除了可設定週期與變更參數之外,顏色與線條種類也能透過修改來加以設定。簡易版程式中是透過「#property」來設定,此處則將嘗試以參數來自由變更。步驟則如出一轍。「CLR」是顏色、「input LINE_STYLE」是線條種類、「WIDTH」則是寬度。
input color CLR = clrWhite; // 顏色此處將以「SetIndexStyle」設定顏色、線條種類、寬度。第一個項目為緩衝區,因此為「0」,類型則是「DRAW_LINE」、風格為「STYLE」、寬度是「WIDTH」,顏色則是「CLR」。
input ENUM_LINE_STYLE STYLE = STYLE_SOLID; // 線條種類
input int WIDTH = 1; // 寬度
SetIndexStyle (0, DRAW_LINE, STYLE, WIDTH, CLR);接著在「SetIndexLabel」中,將Index編號設定為「”MA”」,如此便能使用參數來進行設定。
SetIndexLabel(0, “MA”);
透過以上的方式,原本設定顏色等項目的部分將不再需要;不要的部分可使用「/*」及「*/」括號來註解排除。此記號中的內容將不被當作程式,而是單純的文字(註記、註解)。
/*#property indicator_label1 “MA”若將至此處為止的階段進行編譯,將可如同下方畫面所示進行修改,並變更顏色、線條種類、寬度等等。
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1*/
變更計算上限值
在簡易版程式的Calculate函數中,每一次都會計算所有的Bars數量;此處將進行修改,藉以減少多餘的計算次數。將於「limit」中使用「IndicatorCounted」來定義計算的上限值。「IndicatorCounted」可輸出目前所計算的指標數,最初為0,計算結束後則會變成其數值。
int limit = Bars – IndicatorCounted() – 1;接著將改變計算的方向。從上限開始至0為止,依序朝著越來越小的數值計算。
for (int i = limit; i >= 0; i–)此處從「編號Bars-1」開始,至0號為止進行計算。下一次的「IndicatorCounted」將是當時的Bars條數量,因此只會計算最少的數量。最少的數量將出現小數點,而最低可設定成從1號到0號之間的條列來計算。
一旦伺服器長時間靜止,1號數據的設定可能不甚正確,因此0號條列是改變未確定數值的條列,1號條列則是甫確定的條列。
int limit = Bars – IndicatorCounted() – 1;本次依照以上的步驟,將能夠從簡易的MA修改為一般的MA。
if (limit < 1) limit = 1;
使用設計器
雖然前述的文章並未提及,但MetaEditor的模板中有一些格式化的問題。例如空格過多或過少等細微的部分都將有所影響。透過「設計器」的功能,將可一次變更這些格式。設計器位於工具列當中(名稱為「調整原始碼」)、首先可從選單的「工具」→「選項」來進行參數的初始設定。預設的風格為「MetaQuotes」,亦可依照喜好變更風格與空格等插入項目。在以下的畫面範例中,風格設定為「Linux」,並勾選空格相關的選項。
完成此處的設定之後,只要點選工具列的設計器(調整原始碼),即可修改原始碼的外觀。
原始碼
本次製作的原始碼如下列所示,並已刪除先前註解排除的部分。//+——————————————————————+
//| MA_demo.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+——————————————————————+
#property copyright “Copyright 2020, 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
//— parameters
input int PERIOD = 20; // 週期
input int SHIFT = 0; // 變更
input ENUM_MA_METHOD METHOD = MODE_SMA; // MA類別
input ENUM_APPLIED_PRICE PRICE = PRICE_CLOSE; // 適用價格
input color CLR = clrWhite; // 顏色
input ENUM_LINE_STYLE STYLE = STYLE_SOLID; // 線條種類
input int WIDTH = 1; // 寬度
//— indicator buffers
double MABuffer[];
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit()
{
//— indicator buffers mapping
SetIndexBuffer(0, MABuffer);
SetIndexStyle(0, DRAW_LINE, STYLE, WIDTH, CLR);
SetIndexLabel(0, “MA”);
//—
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–)
{
MABuffer[i] = iMA(NULL, 0, PERIOD, SHIFT, METHOD, PRICE, 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美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。