最新のブロッター エントリー トランザクションが行われた (ループ内の) 価格を参照する quantstrat/blotter 内でトレード エグジットをバックテストしたいと考えています。最新の取引が開始からたとえば 5% 下落した場合、一種のストップ ロスとして取引を終了するというルールを追加したいと考えています。
if( !is.na(X) )#if the indicator X has begun (it is NA at start of time series)
{
if(Posn == 0) {#No position test to go long
if(X < 20){
#enter long position
addTxn(a.strategy,Symbol='T',TxnDate=CurrentDate,
TxnPrice=ClosePrice,TxnQty=UnitSize,TxnFees=0)}
}else {#Have a position so check exit
ここで TxnPrice を参照します。
if ( (X > 35) || (ClosePrice < (0.95 * TxnPrice)){
#exit position
addTxn(a.strategy,Symbol='T',TxnDate=CurrentDate,
TxnPrice = ClosePrice,TxnQty = -Posn,TxnFees=0)}
}
}
ClosePrice の場所
ClosePrice <- as.numeric(Cl(T[i,]))
問題は、TxnPrice がグローバル環境内のオブジェクトとして存在しないことです。私はそれを参照するための非常に単純なものが欠けていると確信しています。どんな助けでも大歓迎です。