2016-02-17 72 views
2

我正在考慮使用R和quantstrat來回溯測試某些策略。我查看了一些文檔和YouTube視頻,以瞭解是否可以做我想做的事。我對R完全陌生,我願意深入研究必要的文檔,但如果我想要甚至可能,我想獲得一個提示。爲quantstrat使用外部提供的指標數據

我已經通過一些實例工作與quantstrat回測,什麼是共同的所有他們的是,他們使用的是由R的功能基礎上,價格數據

但是我需要使用一個計算指標幾個已經被外部計算的指標,以及我作爲真實/虛假信息以及價格數據。因此,我在CSV中包含許多其他列,其中包含OHLC數據,這些列的值大部分時間都是假的,但在某些行上卻是如此。我想生成信號,例如使用其中的兩列,並且說:「如果兩者都是真實的,則在最後一天的高點設置止損買盤,在最後一天的低點止損並計算倉位大小,以便最高損失是基於高低差異的固定金額

還有更多規則可以應用於何時關閉利潤的位置,何時調整止損或何時取消不觸發停止買入訂單,並且我還要處理接下來的日子已經高於停止買入價格的情況,但那又是另外一個故事了。另外,我必須考慮如何對具有僅結束日期數據的日終策略進行回溯測試(接下來的日子蠟燭可能會高停止買入和停止賣出,並且會比它發生的情況要糟糕)

首先我想知道它是否可能包含量化策略來源等外部指標數據

如果您說「是」或「否」並且可能指向適用的文檔,它將對我有所幫助。謝謝你的建議!

編輯:

我實際上是由現在的CSV OHLC列文件,只是添加了1和0這樣非常簡單的例子另一列:

Date,Open,High,Low,Close,SRot 
2016-02-01,28,31,20,20,0 
2016-01-29,34,35,30,31,1 
2016-01-28,22,30,21,28,0 
2016-01-27,18,23,17,20,0 
2016-01-26,30,32,20,25,0 
2016-01-25,30,35,25,32,1 

我得到這個爲XTS對象並做了設置量化策略,我設法發出停止限制短期訂單後的最後一列是1.

add.rule(strategy.st,name = "ruleSignal", 
arguments=list(sigcol="srotxsignal", 
       sigval=TRUE, 
       ordertype="stoplimit", 
       orderside="short", 
       replace=FALSE, 
       prefer="Low", 
       orderqty=10, 
       tradeSize=tradeSize), 
type="enter",path.dep=TRUE,label="normalEntryShort") 

有第一個信號已經在1月25日的第一支蠟燭上出現,最低爲25,我預計系統會以25的價位發出止損限價單。這也是訂單簿顯示的內容。然而,該系統實際上在第二天以30的價格出售,即開盤價。對於第二天的第二個信號,訂單被解僱,但從未執行。這可能是正確的,因爲開盤價已經低於止損限價水平,但價格在最後一天上漲至31,所以訂單應該已經觸發。

我想,對於第二信號,我需要有更多的邏輯編程,但對於第一次我不知道爲什麼以便在30

out<-applyStrategy(strategy=strategy.st,portfolios=portfolio.st) 
[1] "2016-01-26 00:00:00 adidas 10 @ 30" 

getOrderBook(portfolio.st) 
$dshort 
$dshort$adidas 
     Order.Qty Order.Price Order.Type Order.Side Order.Threshold Order.Status Order.StatusTime  Prefer 
2016-01-25 "10"  "25"  "stoplimit" "short" NA    "closed"  "2016-01-26 00:00:00" "Low" 
2016-01-29 "10"  "30"  "stoplimit" "short" NA    "open"  NA     "Low" 

回答

0

執行既然你正在嘗試做空,您的訂單數量應該是負數。

+0

單行建議應在評論中。 – Rumit

+0

@Rumit:好的。 SE – user8912739

+0

新增功能,就是這樣。:-) – Rumit

相關問題