誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
全面升級——更多功能、更大靈活性!
優化了“固定最大虧損”,“每日虧損限制”等。查看詳情全新「Boost」計劃
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。
OANDA Excel RTD指標說明
OANDA Excel RTD是什麼?
OANDA Excel RTD是指使用Microsoft的Excel的RTD函數,可透過Excel對MT4/MT5的賬戶情況及貨幣對的價格等進行管理的工具。例如,如下可實時顯示賬戶情況。
由於使用Excel,基於該實時數據可隨意製作圖表。
還可進行持有頭寸的管理及掛單中的訂單管理。
而且,還可顯示實時的價格。
此外,還可取得時間序列數據。
透過使用RTD函數,可取得各種數據,所以可根據用戶要求隨意安排使用。
而且透過與VBA進行組合,還可從Excel進行訂單下訂、變更、結算等。比較熟悉VBA的人可嘗試一下。
OANDA Excel RTD的用法
由於OANDA Excel RTD是EA類型的程序,因此必須選擇進行自動交易。雙擊導航內的OANDA Excel RTD或拖放至圖表上,將顯示設置窗口。
MT4設置
在常規選項中勾選「允許實時自動交易」與「允許導入動態連接庫」。MT5設置
在普通中勾選「允許實時自動交易」,在依存關係中勾選「允許DLL導入」。將會顯示有顯示賬號的對話框。該賬號為與Excel鏈接的號碼。
這樣MT4/MT5上的準備就完成了。
接下來,在Excel上輸入函數。
基本的RTD函數的寫法
顯示某數據時,在以下公式的「賬號」部分輸入自己的賬號,在「屬性」部分輸入希望顯示信息的名稱(屬性名)。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”屬性名”)
屬性名
為「屬性名:內容」。在數式中輸入屬性名。(例)=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”currency”)
賬戶信息相關內容
取得賬戶相關信息。currency :交易賬戶的貨幣類別
balance :賬戶餘額
equity :有效保證金
pl :未實現損益
usedmargin :必要保證金
freemargin :剩餘保證金
tickets :票單數(持有頭寸、未執行訂單)
價格及貨幣對信息
取得價格及貨幣對信息。在貨幣對名的部分輸入貨幣對名。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”askEURUSD”)
bid貨幣對名 :Bid(賣出)的價格
ask貨幣對名 :Ask(買進)的價格
high貨幣對名 :當天的最高價
low貨幣對名 :當天的最低價
symbols :貨幣對的數量
s編號 :相當於輸入編號的貨幣對名
票單相關信息
取得持有的頭寸、掛單中的票單相關信息。編號為按從舊到新的順序從1開始的數字。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”t2s”)
t編號t :票單編號
t編號a :動作名(BUY, SELL,BUYLIMIT,SELLLIMIT,BUYSTOP,SELLSTOP)
t編號s :貨幣對
t編號v :交易量
t編號npl :交易的損益+掉期的損益
t編號pl :交易的損益
t編號swap :掉期的損益
t編號comm :手續費的價格
t編號sl :止損單的價格
t編號tp :止盈單的價格
t編號op :執行訂單、或限價/限損價格
t編號cp :當前的價格
t編號cm :關於訂單的備註
t編號mg :幻數
取得以往的價格
取得以往的價格時進行如下輸入。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@bh,貨幣名,時間軸,價格的種類,切換的數(當前的燭線為0。)”)
(例)顯示最新的1小時線的最高價時=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@bh,EURUSD,H1,high,0″)
時間軸的種類如下。
M1 :1分鐘
M2 :2分鐘
M3 :3分鐘
M4 :4分鐘
M5 :5分鐘
M6 :6分鐘
M10 :10分鐘
M15 :15分鐘
M30 :30分鐘
H1 :60分鐘
H2 :120分鐘
H3 :180分鐘
h4 :240分鐘
h6 :360分鐘
h8 :480分鐘
D1 :1440分鐘
D2 :2880分鐘
W1 :7200分鐘
價格的種類如下。
open :開盤價
high :最高價
low :最低價
close :收盤價
range :最高價和最低價的範圍
median :最高價和最低價的平均
typical :最高價、最低價、收盤價的平均
weighted :最高價、最低價、收盤價×2的平均
change :從開盤價的變動
abschange :從開盤價的變動幅度
time :該時間軸的開始時間
算出指標的數值
OANDA Excel RTD透過使用內置函數,也可算出指標的數值。例如,若輸入如下函數,可顯示英鎊美元五分鐘線的期間14條的RSI的數值。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@rsi,GBPUSD,M5,14,0″)
指標的數值顯示基本上為以下公式。
=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@指標名,貨幣對名,時間軸,參數,轉換條數(0為當前的燭線)”) 轉換條數0顯示為當前燭線的數值,若輸入1則顯示上1條的數值。
可顯示的指標的種類和設置方法
簡單移動平均線(SMA)
簡單移動平均線的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@sma,貨幣對名,時間軸,價格的種類,期間,切換條數”)
價格的種類從收盤價(close)等進行選擇。下例中是以中間值(最高價和最低價的平均)顯示的情況。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@sma,GBPUSD,M5,median,10,0″)
指數平滑移動平均線(EMA)
指數平滑移動平均線(EMA)的公式基本上是與簡單移動平均線相同設置。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@ema,貨幣對名,時間軸,價格的種類,期間,切換條數”)
價格的種類從收盤價(close)等進行選擇。下例中是以中間值(最高價和最低價的平均)顯示的情況。
例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@ema,GBPUSD,M5,median,10,0″)
平滑移動平均線(SMMA)
平滑移動平均線也是指標的種類之外的設置相同。=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@smma,GBPUSD,H1,close,21,0″)
加權移動平均線(WMA、LWMA)
加權移動平均線也是指標的種類之外的設置相同。 =RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@lwma,GBPUSD,1440,range,21,0″)MACD與MACD的信號
顯示MACD、MACD的信號的數值時的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@macd(信號的情況為@magcsig),貨幣對名,時間軸,價格的種類,短期的EMA的期間,長期的EMA的種類,信號的移動平均期間,切換條數”)
具體例子如下。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@macd,GBPUSD,30,high,12,26,9,0″)
真實波幅均值(ATR)
真實波幅均值的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@atr,貨幣對名,時間軸,期間,切換條數”)
具體例子如下。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@atr,GBPUSD,D1,21,0″)
RSI
RSI的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@rsi,貨幣對名,時間軸,期間,切換條數”)
具體例子如下。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@rsi,USDJPY,H1,14,0″)
隨機指標
隨機指標的%K、隨機指標的%D的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@stoch(%D的情況為@stochslow),貨幣對名,時間軸,隨機指標的參數(例5,3,3),切換條數”)
具體例子如下。
(例)=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@rsi, USDJPY,H1,5,3,3,0″)
布林線指標
布林線指標的上軌線、布林線指標的下軌線的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@bbupper(下軌線的情況為bblower),貨幣對名,時間軸,價格的種類,期間,標準偏差的數,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@bbupper,GBPUSD,10,close,30,2,0″)
標準偏差
標準偏差的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@vol,貨幣對名,時間軸,價格的種類,期間,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@vol,GBPUSD,10,close,21,0″)
CCI
CCI的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@cci,貨幣對名,時間軸,價格的種類,期間,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@cci,EURUSD,60,typical,14,0″)
顯示一定期間的最高價
顯示一定期間的最高價的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@high,貨幣對名,時間軸,high,燭線的條數,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@high,GBPUSD,D1,high,20,0″)
顯示一定期間的最低價
顯示一定期間的最低價的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@low,貨幣對名,時間軸,low,燭線的條數,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@low,GBPUSD,D1,low,20,0″)
分形的擺動H和擺動L
顯示分形的擺動H和擺動L的數值的公式如下。關於分形切換條數的部分為0或1。相對於0是無視當前的欄目以確定的燭線進行判斷,1是包括當前的欄目進行判斷。
=RTD(“FXBlueLabs.ExcelRTD”, , “賬號”, “@swingh(擺動L的情況為@swingl),貨幣對名,時間軸,high(擺動L的情況為low),擺動條數,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,, “156734”,”@swingh,GBPUSD,D1,high,2,0″)
Keltner indicator的上軌線和下軌線
顯示Keltner indicator的上軌線和下軌線的數值的公式如下。=RTD(“FXBlueLabs.ExcelRTD”,,”賬號”,”@keltlower,貨幣對名,時間軸,價格的種類,EMA的期間,ATR的期間,,ATR的倍數,切換條數”)
具體例子如下。
=RTD(“FXBlueLabs.ExcelRTD”,,”156734″,”@keltlower,GBPUSD,60,close,20,10,0.5,0″)
貨幣對名的表示
根據使用的交易服務器,貨幣對就像“USDJPY-2”會在貨幣對名的後面加上字符串。在OANDA excel RTD上默認為去除該字符,顯示為「USDJPY」。將其解除,喜歡「USDJPY.oj1m」的顯示形式時不勾選使用MT4/MT5的標準化品種名稱。
發送指令
OANDA excel RTD使用Excel的VBA代碼還可發送交易指令。而且,透過RTD函數可以讀取相同數據。
接下來的功能不僅是Excel的VBA,還可以使用支持COM的編程語言。
利用VBA代碼讀取數據
可利用FXBlueLabs.ExcelReader對象讀取數據。Set reader = CreateObject(“FXBlueLabs.ExcelReader”)
reader.Connect (“156734”)
MsgBox reader.Read(“balance”)
也就是說,製作FXBlueLabs.ExcelReader對象的例證,使用Connect函數鏈接特定的賬號。
可使用Read函數取得賬戶相關的信息。
使用Read函數時的屬性名與在RTD函數下使用時的為相同名稱。
確認引線是否正常連接
ExcelReader對像如果正常製作,即使OANDA excel RTD不運行時也可調用Connect函數。為確認數據是否可實際使用,使用Read函數,確認餘額等屬性沒有空白,或讀取LastUpdatetime屬性,確認時間比2000年1月1日更晚。
讀取多個數據時的數據的連續性
在查驗多個數據,特別是多個票單的數據時,要注意更新和數據的連續性。例如,思考一下循環票單列表的下一個代碼。
For i = 1 To reader.Read(“tickets”) strSymbol = reader.Read(“t” & i & “s”) vVolume = reader.Read(“t” & i & “v”) Next
有可能發生以下事情。
・最初有2個票單。
在Read函數使用了2次的期間,也就是說,在實行第2行和第3行的期間,票單之一被關閉。
因此,原來為票單2的將成為票單1。
其結果是最初的循環結束,strSymbol保持當前關閉的票單的貨幣對,vVolume顯示仍持有的票單的交易量。
在讀取多個數據的同時,為了確保連續性使用Reader.ReaderLock函數。這樣在使用Reader.ReaderUnlock函數前數據的變更將被中斷。
舉例如下。
但是,使用了Reader.ReaderLock函數時不要忘記Reader.ReaderUnlock函數。
Reader.ReaderLock()
For i = 1 To reader.Read(“tickets”)
strSymbol = reader.Read(“t” & i & “s”)
vVolume = reader.Read(“t” & i & “v”)
Next
Reader.ReaderUnlock()
從Excel發送交易指令
在OANDA Excel RTD中默認為無法發送指令的狀態。
在可發送指令的狀態時勾選「接受命令」的複選框。
該複選框關閉時所有指令均以「ERR:Commands not allowed」返回。
若使用FXBlueLabs.ExcelCommand對象,可從Excel發送簡單的指令。
例如可發送如下程序。
Set cmd = CreateObject(“FXBlueLabs.ExcelCommand”) strResult = cmd.SendCommand(“156734”, “BUY”, “s=EURUSD|v=10000”, 5) The SendCommand() function has four parameters:
在SendCommand()函數中有4個參數。
-
①賬號(例:156734)
②指令(動作)
③指令的參數(貨幣對和容量)
④等待應答的秒數
(超時不是指市價訂單等被取消/撤銷,而是指經紀人/平台在允許時間內未應答)。
由SendCommand函數的返回值是由為顯示發生故障的「ERR:」或動作已完成的「OKAY:」的任何一項開始的字符串。唯一的例外是返回HELLO文本的TEST指令。
指令與參數
指令的參數作為用橫線斷開的字符串被發送,並以name = value的形式進行若干項的設置。參數可以任意順序列表,若干項的參數為選項。cmd.SendCommand(”156734″,”BUY”,”s=EURUSD|v=10000″,5)
交易量不是批次大小,而是交易貨幣數。貨幣對的形式因在RTD是否勾選「使用標準化品種名稱」的複選框而異。
指令的種類
BUY與SELL指令
參數S (必填):貨幣對
V (必填):交易數量
sl (任意):止損單價格
tp (任意):止盈單價格
comment (任意):備註
magic (任意):幻數
BUYLIMIT、SELLLIMIT、BUYSTOP、SELLSTOP指令
參數S (必填):貨幣對名
V (必填):交易數量
price (必填):價格
sl (任意):止損單價格
tp (任意):止盈單價格
comment (任意):備註
magic (任意):幻數
CLOSE指令
關閉頭寸,取消掛單中的訂單。若成功返回「OKAY:」。參數
t (必填):票單ID
PARTIALCLOSE指令
在持有頭寸進行部分結算時使用。若輸入超過頭寸大小的數量,頭寸將全部關閉。不進行反手交易。此外,對掛單中的訂單無法使用。參數
t (必填):票單ID
v (必填):結算的數量
REVERSE指令
結算已買頭寸,並進行轉為賣出的交易。是所謂的反手交易。參數
t (必填):票單ID
v (任意):新頭寸的數量。省略時為與結算的頭寸數量相同的數量。
sl (任意):止損單價格
tp (任意):止盈單價格
comment (任意):備註
magic (任意):幻數
CLOSESYMBOL指令
取消所有持有的特定貨幣對頭寸、掛單中的訂單。若成功返回「OKAY:」。
參數
s (必填):貨幣對名
CLOSEALL指令
取消所有持有的貨幣對頭寸、掛單中的訂單。若成功返回「OKAY:」。
無參數
(例)cmd.SendCommand(“156734″,”CLOSEALL”,””,20) ’20-second timeout
ORDERSL指令
進行持有的頭寸、掛單中的止損單的變更。t (必填):票單ID
sl (必填):止損單價格、若為0則取消
ORDERTP指令
進行持有的頭寸、掛單中的止盈單的變更。參數
t (必填):票單ID
tp (必填):止盈單價格、若為0則取消
ORDERMODIFY指令
除了能用於持有的頭寸、掛單中的訂單的斬倉、止盈單的雙方的變更之外,還可進行掛單中的訂單限價/限損的價格變更。參數
t (必填):票單ID
p (訂單變更時必填):價格
sl (必填):止損單價格、若為0則取消
tp (必填):止盈單價格、若為0則取消
通常的錯誤提示
ERR:Need account :賬戶信息空白時ERR:Need command :指令空白時
ERR:No listening app :RTD在特定的賬戶無法運行時
ERR:No response within timeout :在規定時間內經紀人或平台未回复時
ERR:Commands not allowed :在RTD未允許使用指令時
ERR:Unrecognised command :SendCommand函數的值無法識別時
ERR:Missing parameters :由於必要的參數不足無法執行指令時
非同期指令
還可在指令結束或超時前,並非鎖定VBA的代碼執行,還能以非同期進行發送。這將如下進行執行
代替SendCommand函數,使用SendCommandAsync函數。
使用CheckAsyncResult函數,定期查看非同期動作的結果。
已結束時、或者決定放棄時,將釋放出在FreeAsyncCommand函數中使用的指令內存。
例如,有如下情況。
Set cmd = CreateObject(“FXBlueLabs.ExcelCommand”) lCommandId = cmd.SendCommandAsync(“10915”, “BUY”, “s=EURUSD|v=10000”, 60) strResult = “” While strResult = “” strResult = cmd. CheckAsyncResult(lCommandId) If strResult = “” Then MsgBox “Still waiting…” Wend cmd.FreeAsyncCommand (lCommandId)
SendCommandAsync函數使用與SendCommand函數相同的4個參數,但代替返回指令結果,返回為了在CheckAsyncResult函數及FreeAsyncCommand函數中之後使用的「指令ID」。
要注意在SendCommandAsync函數中依然存在超時值的情況。
在SendCommandAsync函數之後,最終需要調出FreeAsyncCommand函數。若不那樣操作,代碼雖然較少,但內存會出現浪費。
CheckAsyncResult函數指令仍在執行中,未達到指定的超時時,返回空字符串,若完成將返回與SendCommand函數相同的字符串響應。
點擊下方連結獲取下載安裝流程。
指標安裝教學
誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)
報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達90%的交易利潤分成。
全面升級——更多功能、更大靈活性!
優化了“固定最大虧損”,“每日虧損限制”等。查看詳情全新「Boost」計劃
500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。
豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。