オーバーナイト戦略①

通貨ペア:USDJPY
期間:2002年1月1日~2013年12月6日
ルール①:前日、前々日、3日前の終値が連続上昇、かつ前日終値が前日の200日移動平均線より下なら売り。
ルール②:ポジションは当日始値で決済。
備考①:約定価格は前日終値。
備考②:損益の単位は%。

# パッケージの呼び出し
library(quantmod)
# 開始日
startDate <- as.Date("2002-01-01")
# 終了日
endDate <- as.Date("2013-12-06")
# 始値
op <- dataJPY$USDJPY.Open
# 終値
cl <- dataJPY$USDJPY.Close
# 始値変化率
deltaOp <- diff(op) / lag(op)
# 終値変化率
deltaCl <- diff(cl) / lag(cl)
# 始値/前日終値変化率
deltaOC <- (op - lag(cl)) / lag(cl) * 100
# 200日移動平均線
ma200 <- rollapply(cl, 200, mean)
# ポジション
#long <- (deltaCl < 0) * (lag(deltaCl) < 0) * (lag(deltaCl,k = 2) < 0)
#long <- (deltaOp < 0) * (lag(deltaOp) < 0) * (lag(deltaOp,k = 2) < 0)
long <- (deltaCl < 0) * (lag(deltaCl) < 0) * (lag(deltaCl,k = 2) < 0) &
(deltaOp < 0) * (lag(deltaOp) < 0) * (lag(deltaOp,k = 2) < 0)
long <- long * (cl > ma200) # フィルター
short <- (deltaCl > 0) * (lag(deltaCl) > 0) * (lag(deltaCl,k = 2) > 0)
#short <- (deltaOp > 0) * (lag(deltaOp) > 0) * (lag(deltaOp,k = 2) > 0)
#short <- (deltaCl > 0) * (lag(deltaCl) > 0) * (lag(deltaCl,k = 2) > 0) &
# (deltaOp > 0) * (lag(deltaOp) > 0) * (lag(deltaOp,k = 2) > 0)
short <- short * (cl < ma200) # フィルター
#pos <- long - short # 売買両方
#pos <- long # 買いのみ
pos <- -short # 売りのみ
# リターン
ret <- deltaOC * lag(pos)
totalRet <- cumsum(window(ret, start = startDate, end = endDate))
last(totalRet)

USDJPY.Open
2013-12-06 9.232194
# R2
cor(totalRet, 1:length(totalRet)) ^ 2

[,1]
USDJPY.Open 0.8967106
# グラフ
matplot(totalRet, type = "l")
# 使用済みオブジェクトの削除
rm(cl, deltaCl, deltaOC, deltaOp, endDate, long, ma200, op, pos, ret,
short, startDate, totalRet
)

コメントの投稿

非公開コメント

プロフィール

Author:fxst24
自分用のノートとして作っていますが、同学の方々の参考になれば幸いです。
記事はことわりなく修正、削除、非公開にすることがあります。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
QRコード
QR