獨有指標

誠邀您參加全球知名外匯經紀商OANDA的自營交易(Prop Trader)

報名OANDA自營交易(Prop Trader),並通過我們的考核,您就可以使用OANDA提供的資金進行交易,獲得高達75%的交易利潤分成。

限時優惠代碼
在購買挑戰時,輸入"LABS20",即可獲得20%的限時優惠(此優惠截止日期為2024年3月17日)。

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函數為同期。 RTD在完成指令時,或超時期限到期時返回。

(超時不是指市價訂單等被取消/撤銷,而是指經紀人/平台在允許時間內未應答)。

由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提供的資金進行交易,獲得高達75%的交易利潤分成。

限時優惠代碼
在購買挑戰時,輸入"LABS20",即可獲得20%的限時優惠(此優惠截止日期為2024年3月17日)。

500,000美元交易資金
您可以使用最高500,000美元的資金進行交易。

豐富的交易商品
您可以交易包括外匯、黃金、原油、股票指數等多種商品。