誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
全面升級——更多功能、更大靈活性!
優化了“固定最大虧損”,“每日虧損限制”等。查看詳情全新「Boost」計劃
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
RSI的EA(自動交易)透過實際源碼製作說明
什麼是RSI?
RSI是「Relative Strength Index」的簡稱,可以翻譯為「相對強弱指數」。計算公式為「一定週期內價格上漲幅度總計」除以「一定週期內價格上漲幅度和價格下跌幅度總計」,可以根據得出的數值判斷市場是否超買超賣。
從圖表的形態和RSI的形態可以看出,RSI的走勢和圖表的走勢基本相同。
RSI是以圖表的信息為基礎進行計算,所以圖表動的話RSI也會跟著動。
但是,並不會預測未來走勢,還請多加注意。
RSI的優勢是,可以0至100之間顯示圖表的價格波動。
因為數值只限於在0至100之間,所以可以判斷為「RSI低於20為超賣」、「RSI超過80為超買」,也是一種很容易編寫到程式中的指標。
關於RSI的詳細內容請參考以下文章。
>介紹RSI的基本解讀、使用方法以及交易策略
EA說明
首先介紹關於製作的EA內容。在這裡整理好內容的話,有助於提高程式的質量。
下單條件
RSI低於超賣線後下多單RSI高於超買線後下空單
平倉條件
根據停利價格和停損價格平倉其他條件
Copyright設置為「OANDA」透過滑點和點差限制下單數量
設置為只能持有1個部位
可以修改Magic Number和手數
製作EA
程式按照「前置處理」「領域」「函數(OnInit)」「函數(OnInit以外)」的順序進行介紹。另外,因為文章是日文翻譯內容,所以請參考圖片上對應的中文。
プリプロセッサ:前置處理
フィールド:領域
関数:函數
前置處理
#property copyright " Copyright(C) 2023, OANDA "在默認的前置處理中,把copyright的地方修改為「Copyright(C) 2023, OANDA」。
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
這樣,當用戶把EA放到圖表是就可以清楚的知道版權屬於誰。
TIPS版權:
編寫Copyright除了明確誰是版權持有人以外,還有「明確版權發行年份」的目的。
另外,正確的Copyright圖標是「©」,但是,由於在MT4中「©」不能明確顯示,所以會用「Copyright(c)」代用。
領域
input int MAGICMA = 23498721; // Magic Number這次的RSI的基本參數為「週期」「價格來源」「上線」「下線」。
input double Lots =0.01; // 1手為10萬貨幣
input int Slippage = 4; // 限制下單滑點
input double MaxSpread = 5; // 限制下單點差
input double TakeProfit = 10.0; // 停利點數(pips)
input double LossCut = 20.0; // 停損點數(pips)
input int RSIPeriod=14; // 週期
input ENUM_APPLIED_PRICE RSIAppliedPrice = PRICE_CLOSE; // 價格來源
input int UpLine = 70; // 上線
input int DownLine = 30; // 下線
double dSpread;
當價格RSI高於設定的「上線」數值時將會下空單,當低於設定的「下線」時將會下多單。
另外,還添加了停利和停損用的參數「TakeProfit」和「LossCut」。
為了用戶使用方便,設定為用pips設置停利和停損。
OnInit函數
int OnInit()OnInit函數與上次一樣,不需要另作說明。
{
return(INIT_SUCCEEDED);
}
OnTick函數
void OnTick()OnTick函數也與上次一樣。
{
dSpread = (Ask - Bid) / (Point * 10);
if(CalculateCurrentOrders()==0 && dSpread < MaxSpread) CheckForOpen();
}
使用CalculateCurrentOrders函數計算現在未平倉的部位數量,當部位數量為0,且點差低於在參數中設定的點數時,會使用CheckForOpen函數進行下單。
這樣,把「計算部位的函數」和「進行下單的函數」分開使用的話,可以節省更多時間,也可以讓代碼更加簡單。
CheckForOpen函數
void CheckForOpen()使用CheckForOpen函數,當RSI數值低於參數中所設定「下線」時就會下多單,當高於「上線」是就會下空單。
{
int res;
double RSI = iRSI(Symbol(), 0, RSIPeriod, RSIAppliedPrice, 1);
if(RSI < DownLine)
{
res=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Bid - LossCut * Point * 10, Ask + TakeProfit * Point * 10,"", MAGICMA, 0, Red);
}
if(RSI > UpLine)
{
res=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask + LossCut * Point * 10, Bid - TakeProfit * Point * 10, "", MAGICMA, 0, Blue);//
}
}
首先將iRSI函數存儲至double型的變數RSI中。
然後在後面加入if語句確認超買超賣,進行反向交易。
OrderSend函數的第6參數和第7參數可以分別指定為停利價格和停損價格。
下圖為換做MT4下單介面時的示意圖,日文對應的中文如下。
買いエントリー場合:買入進場時
利確価格:停利價格
損切価格:停損價格
完整源碼
#property copyright "Copyright(C) 2023, OANDA"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
input int MAGICMA = 23498721; // Magic Number
input double Lots =0.01; // 1手為10萬貨幣
input int Slippage = 4; // 限制下單滑點
input double MaxSpread = 5; // 限制下單點差
input double TakeProfit = 10.0; // 停利點數(pips)
input double LossCut = 20.0; // 停損點數(pips)
input int RSIPeriod=14; // 週期
input ENUM_APPLIED_PRICE RSIAppliedPrice = PRICE_CLOSE; // 價格來源
input int UpLine = 70; // 上線
input int DownLine = 30; // 下線
double dSpread;
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnTick()
{
dSpread = (Ask - Bid) / (Point * 10);
if(CalculateCurrentOrders()==0 && dSpread < MaxSpread) CheckForOpen();//如果沒有部位的話可以建新部位
}
void CheckForOpen()
{
int res;
double RSI = iRSI(Symbol(), 0, RSIPeriod, RSIAppliedPrice, 1);
if(RSI < DownLine)
{
res=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Bid - LossCut * dPoint, Ask + TakeProfit * dPoint,"", MAGICMA, 0, Red);
}
if(RSI > UpLine)
{
res=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask + LossCut * dPoint, Bid - TakeProfit * dPoint, "", MAGICMA, 0, Blue);
}
}
int CalculateCurrentOrders()
{
int positions = 0;
for(int i=0;i{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
positions++;
}
}
return positions;
}
將EA自動程式交易應用於外匯與差價合約交易中
我們以圖文形式詳細介紹有關EA自動程式交易的基本知識,以及在MT4/MT5平台上的安裝、參數設定方法、編碼等等內容。另外,對持有OANDA帳戶的客戶,還可以免費使用我們的獨有EA與指標工具。
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
全面升級——更多功能、更大靈活性!
優化了“固定最大虧損”,“每日虧損限制”等。查看詳情全新「Boost」計劃
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。