誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
優化了挑戰塞交易規則
無最低交易天數限制等優化了挑戰賽的交易規則。
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
運用MQL程式語言顯示移動平均線交易訊號的方法解析
顯示2條MA
在本章內容中,將使用「運用MQL程式語言,在圖表中製作移動平均線的方法」中製作的簡易版程式,並說明顯示2條MA交會的程式製作方法。參考文章:運用MQL程式語言,在圖表中製作移動平均線的方法
首先將修改MA為2條。
將緩衝區變更為「2」、複製參數,並將第1個MA的結尾添加「0」、第2個添加「1」以便區別。接著為了使參數容易分辨,將製作並分段暫存文字列(MA1、MA2)。
第一個短期MA的週期設定為「5」,另一個長期MA的週期則維持20,並將顏色變更為黃色。
#property indicator_buffers 2以上製作的部分將如以下畫面所示;若於圖表中如此設定,將會週期5的MA(白)以及週期20的MA(黃色)。
#property indicator_plots 2
//— parameters
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 color CLR0 = clrWhite; // 顏色
input ENUM_LINE_STYLE STYLE0 = STYLE_SOLID; // 線條種類
input int WIDTH0 = 1; // 寬度
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; // 適用價格
input color CLR1 = clrYellow; // 顏色
input ENUM_LINE_STYLE STYLE1 = STYLE_SOLID; // 線條種類
input int WIDTH1 = 1; // 寬度
至於計算所需的每個緩衝區,第1個為「0」、第2個則為「1」。
double MABuffer0[], MABuffer1[];
OnInit函數也準備2條MA,並分別設定為「0」「1」。
SetIndexBuffer(0, MABuffer0);
SetIndexBuffer(1, MABuffer1);
SetIndexStyle (0, DRAW_LINE, STYLE0, WIDTH0, CLR0);
SetIndexStyle (1, DRAW_LINE, STYLE1, WIDTH1, CLR1);
SetIndexLabel(0, “MA1”);
SetIndexLabel(1, “MA2”);
OnCalculate函數也設定為「0」「1」。
for (int i = limit; i >= 0; i–) {
MABuffer0[i] = iMA(NULL, 0, PERIOD0, SHIFT0, METHOD0, PRICE0, i );
MABuffer1[i] = iMA(NULL, 0, PERIOD1, SHIFT1, METHOD1, PRICE1, i );
箭頭訊號的意義
接下來將說明在MA交會處顯示箭頭訊號的方法。由於目的是買進及賣出,因此需新增兩個緩衝區(2→4的改變)。#property indicator_buffers 4分別設定為「UP」及「DN」。
#property indicator_plots 4
double UP[], DN[];
為了顯示箭頭,類型設定為「ARROW」、「STYLE」是「SOLID」、寬度(符號的大小)則是「2」。第一個買進符號的顏色為紅色,第二個賣出符號則為藍色,名稱則分別為「Buy」及「Sell」。
在設定箭頭訊號時,必須設定訊號的形狀;此處買進的形狀編碼為向上箭頭「233」、賣出則是向下箭頭「234」。
//— indicator buffers mapping另外,如果想確認訊號的形狀,可以啟動選單中的「幫助」→「MQL4相關參考」,並在「wingdings」中搜尋,其中將可一覽各式各樣的符號。
SetIndexBuffer(0, MABuffer0);
SetIndexBuffer(1, MABuffer1);
SetIndexBuffer(2,UP);
SetIndexBuffer(3,DN);
SetIndexStyle (0, DRAW_LINE, STYLE0, WIDTH0, CLR0);
SetIndexStyle (1, DRAW_LINE, STYLE1, WIDTH1, CLR1);
SetIndexStyle (2, DRAW_ARROW, STYLE_SOLID, 2, clrRed);
SetIndexStyle (3, DRAW_ARROW, STYLE_SOLID, 2, clrDodgerBlue);
SetIndexLabel(0, “MA1”);
SetIndexLabel(1, “MA2”);
SetIndexLabel(2, “Buy”);
SetIndexLabel(3, “Sell”);
SetIndexArrow(2, 233);
SetIndexArrow(3, 234);
箭頭的顯示設定
接下來將製作2條MA交叉的訊號顯示條件。「若短期MA大於長期MA、但是在前1根K線中,短期仍位於長期之下」;這樣的條件即為黃金交叉。短期MA從下方穿出長期MA時,在低價的部位顯示買進訊號,並在顯示箭頭的條件尚未成立時形成空值。如此即可完成買進訊號。
if (MABuffer0[i] > MABuffer1[i] && MABuffer0[i + 1] <= MABuffer1[i + 1]){如此大致完成後即可進行編譯。只要確認圖表,就能辨認MA交會處的買進訊號位於低價處、賣出訊號的箭頭則位於高價處。
UP[i] = Low[i];
} else {
UP[i] = EMPTY_VALUE;
}
賣出訊號的部分將倒轉不等號,並顯示於高價的位置。
if (MABuffer0[i] < MABuffer1[i] && MABuffer0[i + 1] >= MABuffer1[i + 1]){
DN[i] = High[i];
} else {
DN[i] = EMPTY_VALUE;
}
原始碼
本次製作的原始碼如下列所示。//+——————————————————————+
//| MA_Cross_Sign_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 4
#property indicator_plots 4
//— parameters
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 color CLR0 = clrWhite; // 顏色
input ENUM_LINE_STYLE STYLE0 = STYLE_SOLID; // 線條種類
input int WIDTH0 = 1; // 寬度
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; // 適用價格
input color CLR1 = clrYellow; // 顏色
input ENUM_LINE_STYLE STYLE1 = STYLE_SOLID; // 線條種類
input int WIDTH1 = 1; // 寬度
//— indicator buffers
double MABuffer0[], MABuffer1[];
double UP[], DN[];
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit()
{
//— indicator buffers mapping
SetIndexBuffer(0, MABuffer0);
SetIndexBuffer(1, MABuffer1);
SetIndexBuffer(2,UP);
SetIndexBuffer(3,DN);
SetIndexStyle (0, DRAW_LINE, STYLE0, WIDTH0, CLR0);
SetIndexStyle (1, DRAW_LINE, STYLE1, WIDTH1, CLR1);
SetIndexStyle (2, DRAW_ARROW, STYLE_SOLID, 2, clrRed);
SetIndexStyle (3, DRAW_ARROW, STYLE_SOLID, 2, clrDodgerBlue);
SetIndexLabel(0, “MA1”);
SetIndexLabel(1, “MA2”);
SetIndexLabel(2, “Buy”);
SetIndexLabel(3, “Sell”);
SetIndexArrow(2, 233);
SetIndexArrow(3, 234);
//—
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–) {
MABuffer0[i] = iMA(NULL, 0, PERIOD0, SHIFT0, METHOD0, PRICE0, i );
MABuffer1[i] = iMA(NULL, 0, PERIOD1, SHIFT1, METHOD1, PRICE1, i );
if (MABuffer0[i] > MABuffer1[i] && MABuffer0[i + 1] <= MABuffer1[i + 1]){
UP[i] = Low[i];
} else {
UP[i] = EMPTY_VALUE;
}
if (MABuffer0[i] < MABuffer1[i] && MABuffer0[i + 1] >= MABuffer1[i + 1]){
DN[i] = High[i];
} else {
DN[i] = EMPTY_VALUE;
}
}
//— 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美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。