【利用Python Pattern Recognition捕捉大市升跌】講座
時間: 2021年5月6日 晚上 20:30-21:30
講者: Patrick Tsoi及諗sir
(課程編號: YUQF24)
報名方法 : https://homebloggerhk.com/apply/
內容:
是次教學不會教你用PYTHON做回測、max drawdown或者計return,而是去少人提及之pattern recognition的教學。究竟用機計到有股票或指數中左pattern之後威力有幾強大? 留返星期四諗sir及Patrick同你講解
。將提及一隻港股做研究
。如何預判恆指將急跌?
。本課程不講熱門股ATMX,亦不會叫你買2800
。系統結果已反映熱門股跟買無幸福
現在市場獲利者多用電腦判定入市位置,再用你一個人腦同對家幾部電腦打,未計人地係唔係super-computer,牌面你都輸左九成。
點逆轉? 聽下Patrick講, 佢資訊科技性強,博士生一名。由點簡單做好programing,或者根本唔識programming都可令電腦為你選股的方案,patrick都會教你!
至於點將電腦駁通證券行,自動落盤,Patrick熟手在行。幫你坐定定密密炒。
我地用Python啟動API作接駁,易寫易明。學生亦有辦法自己日後將整套交易軟件植入自家電腦。當然諗sir提供交易方略,獨家野唔少得!
程式交易有咩好?
免除個人情緒影響投資成績,利用電腦找尋晚上於美股市場出現的投資機遇,運用成家博客團隊提供的獨有程式去應對大市,提高賺幅。
亦可作Backtest去不斷改善自己的買賣Forumla
【查詢:(手機可點搫→)WhatsApp91010168】
同時也有17部Youtube影片,追蹤數超過1,120的網紅PossibleHK,也在其Youtube影片中提到,?YOUTUBE一小時免費精讀班? https://bit.ly/2V5wpaV ☝?☝?☝?☝?☝?☝?☝?☝?☝?☝? 很多人都想透過投資/做生意賺錢達至財富自由,而被動收入更是財務自由不可或缺的重要元素。在香港,很多人都會選擇投資股票收息或者投資物業收租。可是除了這些之外其實很多創業家都會選擇...
「backtest教學」的推薦目錄:
- 關於backtest教學 在 Facebook 的最佳貼文
- 關於backtest教學 在 我要做股神 Facebook 的精選貼文
- 關於backtest教學 在 我要做股神 Facebook 的精選貼文
- 關於backtest教學 在 PossibleHK Youtube 的精選貼文
- 關於backtest教學 在 我要做富翁 Youtube 的精選貼文
- 關於backtest教學 在 我要做富翁 Youtube 的最佳解答
- 關於backtest教學 在 [分享] quantstrat 套件分享- 看板R_Language - 批踢踢實業坊 的評價
- 關於backtest教學 在 2022tradingview backtest教學-電腦筆電評比推薦,精選在PTT ... 的評價
- 關於backtest教學 在 清流君- Portfolio Visualizer回測功能因應投資人需求有新增 的評價
- 關於backtest教學 在 tradingview教學回測的推薦與評價,FACEBOOK、PTT ... 的評價
- 關於backtest教學 在 tradingview教學回測的推薦與評價,FACEBOOK、PTT ... 的評價
- 關於backtest教學 在 量化投资学习笔记84——实现量化交易经典策略:网格交易法 的評價
- 關於backtest教學 在 [BACKTEST] Difference between live mode and ... - GitHub 的評價
- 關於backtest教學 在 How to backtest portfolio compositions using backtrader? 的評價
backtest教學 在 我要做股神 Facebook 的精選貼文
上集介紹過KD線,亦試過應用在期指交易,但Backtest表現認真麻麻,今集Dennis會分享他的KD線改良術,回報從而大大改善!他懂得加入一個條件,就能扭轉劣勢,而這個策略也可應用在商品、指數、外匯上面,到底是如何做到的🤔?
════════════════════
❗公開❗施傅【獨家】研究部專用課程
金牌分析員的秘密 環球分享會(online)
免費報名:money-tab.info/mts-trial-ol?fp=f0211
════════════════════
🔥財務自由不是夢!把握機會免費體驗🔥
施傅【10年財務自由】1小時簡介+工作坊
立即試看:gregorysy.com/
════════════════════
有效 極速 儲存千萬❓
【零至千萬加速器】1小時簡介+工作坊
免費試看:edu.money-tab.com/pages/accelerator
════════════════════
本月免費活動【★Top 3】現正接受報名:
1. Kyle英國房地產分享講座(Online)▷ money-tab.info/engkyle?fp=f0211
2. Eric Sir期指策略分享講座(Online)▷ money-tab.info/futeric?fp=f0211
3. 阿業期權計算機分享會(Online)▷ money-tab.info/optyip?fp=f0211
所有課程/活動一覽: money-tab.info/activity?fp=f0211
施傅新書「量化交易」手冊
網上即買: money-tab.info/2020-book-purchase?fp=f0211
✓ APP下載: onelink.to/mtapp
✓ 升級版: money-tab.com/membership
❖訂閱【富翁電視MTTV】頻道:
bit.ly/35dJW4Y
❖訂閱【我要做富翁】頻道:
bit.ly/35LOy2J
❖讚好Facebook專頁:
facebook.com/203349819681082
❖追蹤Instagram專頁:
instagram.com/money_tab
#MultiCharts #kd線 #Stochastic #隨機指數 #ALGO #程式交易 #Algotrade #我要做程式交易
backtest教學 在 我要做股神 Facebook 的精選貼文
連MultiCharts都不懂?不要說自己識程式交易!Algo trade需要有軟件幫助,否則得物無所用,Dennis今集會由零起步,教大家由下載、安裝、匯入數據、回測,逐步學習使用MultiCharts的方法,用實例示範如何操作,今集絕對值得大家Save下來,日後參考!
MultiCharts 國際版:multicharts.com
MultiCharts 中國版:multicharts.cn
════════════════════
回流加國 唯一留下的 - - 電子版投資天書
!!由淺入深毫無保留全公開!!
施傅【10年財務自由】1小時簡介+工作坊 (免費試看)
現在開始 ▶▷▶ gregorysy.com/
════════════════════
「我要幫你畀首期」遊戲 贏高達52萬首期幫你上車!
即玩▶▶ money-tab.info/youtube-games?fp=e1019
✓ 訂閱【我要做富翁】頻道 ▶ bit.ly/35LOy2J
本月免費活動【★Top 5】現正接受報名:
1. 贏在美股試堂分享會(Online)▶ money-tab.info/ussjac?fp=e1019
2. Kyle英國房地產分享會(Online)▶ money-tab.info/engkyle?fp=e1019
3. 阿業期權計算機分享會(Online)▶ money-tab.info/optyip?fp=e1019
4. 陳Sir期指分享會(Online)▶ money-tab.info/optchan?fp=e1019
5. Jasper期滙商品分享會(Online)▶ money-tab.info/comjasp?fp=e1019
6. Jonathan MT4程式交易(Online)▶ money-tab.info/mt4jon?fp=e1019
所有課程/活動一覽: money-tab.info/activity?fp=e1019
✓ APP下載: onelink.to/mtapp
✓ 升級版: money-tab.com/membership
❖訂閱【富翁電視MTTV】頻道:
bit.ly/35dJW4Y
❖訂閱【我要做富翁】頻道:
bit.ly/35LOy2J
❖讚好Facebook專頁:
facebook.com/203349819681082
❖追蹤Instagram專頁:
instagram.com/money_tab/
#Multicharts #回測 #ALGO #程式交易 #Algotrade #我要做程式交易
backtest教學 在 PossibleHK Youtube 的精選貼文
?YOUTUBE一小時免費精讀班?
https://bit.ly/2V5wpaV
☝?☝?☝?☝?☝?☝?☝?☝?☝?☝?
很多人都想透過投資/做生意賺錢達至財富自由,而被動收入更是財務自由不可或缺的重要元素。在香港,很多人都會選擇投資股票收息或者投資物業收租。可是除了這些之外其實很多創業家都會選擇跟不同的平台合作提早退休,或是起碼能夠邊做自己喜歡的工作邊賺錢。當然YouTube賺錢更是近年的大趨勢,因為它本身就是一個很龐大的被動收入系統。
----------------------------------------------------------------------------------------------------------------------
【影片資源】
?網路研討會“10 週突破 10 萬訂閱的秘笈“?
https://bit.ly/2V5wpaV
? 每個Youtuber必備的數據分析工具(免費)
https://bit.ly/2Un7YGO
?無限影片音樂/聲效下載
https://bit.ly/2WQvkGo
----------------------------------------------------------------------------------------------------------------------
【Social Links】
Instagram : https://www.instagram.com/m_jacky/
https://www.instagram.com/ttncc/
https://www.instagram.com/hellstonchc/
----------------------------------------------------------------------------------------------------------------------
【My Gear】
Camera 1: Sony a7III: https://amzn.to/2SsjWOO
Camera 2: DJI OSMO POCKET: https://amzn.to/37eR692
Mic 1: Rode VideoMicro: https://amzn.to/2Mvuc5m
Mic 2: Rode Wireless Go: https://amzn.to/34U5py8
#賺錢 #創業 #被動收入

backtest教學 在 我要做富翁 Youtube 的精選貼文
究竟有沒有能自動達到不錯回報又不用多理會的EA組合?不過要獲取高回報都會有風險的。今集 #我要做程式 Jonathan就透過足球的前鋒、後衛、中場位置作比喻,分享創造盈利的策略。
#回測 #Backtest #街頭智慧 #程式交易 #自動交易 #MT4 #MetaTrader #高回報策略 #強化程式
======================
1) 近期舉辦活動一覽:
Jonathan MT4自動交易程式分享講座+試堂 ▶ https://edu.money-tab.com/mt4jon?yt=1
茶敘44: 2020年四隻煙花股迎牛三回歸 + 股市全年走勢預測!+4隻煙花股 ▶ https://edu.money-tab.com/tt44?tt=yt
新我要做富翁 試堂分享會 (香港站)▶ https://edu.money-tab.com/sharing-trial?mts=yt
Jasper 期滙商品分享講座+試堂▶ https://edu.money-tab.com/activity-reg-c?jaspf=yt
陳Sir期權期指分享會▶ https://edu.money-tab.com/activity-reg-c?jackop=yt
所有課程/活動一覽▶ https://edu.money-tab.com/all-event?all=yt
施傅特別講座▶ 名額已滿
2) 我要做股神APP下載:onelink.to/mtapp / 升級版:money-tab.com/membership
3) 緊貼我們社交平台,不錯過任何免費分析/教學:
訂閱YouTube頻道: https://youtube.com/channel/UCdWNwPuaS1o2dIzugNMXWtw?sub_confirmation=1
讚好Facebook專頁:https://facebook.com/203349819681082
4) 想加入我們,可將CV EMAIL到▶ hr@money-tab.com

backtest教學 在 我要做富翁 Youtube 的最佳解答
MT4 的出現,已大大降低了進行程式交易的門檻,操作上簡化不少。不過要達致盈利,仍然需要我們又清晰的概念。而程式交易新手,很多時都會遇到,回測時效果很好,盈利、最大回撤表現都很好,但在真金白銀操作時,卻完全走樣,表現強差人意。最大原因是回測時,沒有調校兩個地方,令Backtest未能完全模擬真實狀況。
#回測 #Backtest #街頭智慧 #程式交易 #自動交易 #MT4 #Meta Trader #回測 #爆倉 #高回報策略
======================
1) 近期舉辦活動一覽:
Jonathan MT4自動交易程式分享講座+試堂 ▶ https://edu.money-tab.com/mt4jon?yt=1
茶敘44: 2020年港美大市把脈 | 經濟大事點評+4隻煙花股 ▶ https://edu.money-tab.com/tt44?tt=yt
新我要做富翁 試堂分享會 (香港站)▶ https://edu.money-tab.com/sharing-trial?mts=yt
Jasper 期滙商品分享講座+試堂▶ https://edu.money-tab.com/activity-reg-c?jaspf=yt
施傅特別講座▶ https://edu.money-tab.com/activity-reg-c?usms=yt
陳Sir期權期指分享會▶ https://edu.money-tab.com/activity-reg-c?jackop=yt
所有課程/活動一覽▶ https://edu.money-tab.com/all-event?all=yt
2) 《我要做富翁》網上版登入/APP下載:http://onelink.to/mtapp
3) 緊貼我們社交平台,不錯過任何免費分析/教學:
訂閱YouTube頻道: https://youtube.com/channel/UCdWNwPuaS1o2dIzugNMXWtw?sub_confirmation=1
讚好Facebook專頁:https://facebook.com/203349819681082
4) 想加入我們,可將CV EMAIL到▶ hr@money-tab.com

backtest教學 在 2022tradingview backtest教學-電腦筆電評比推薦,精選在PTT ... 的推薦與評價
2022tradingview backtest教學-電腦筆電評比推薦,精選在PTT/MOBILE01討論議題,找tradingview backtest教學,tradingview策略測試器,Backtesting ... ... <看更多>
backtest教學 在 清流君- Portfolio Visualizer回測功能因應投資人需求有新增 的推薦與評價
有打算做教學影片嗎?新手們會感激不敬 . 1 yr Report. 清流君, profile picture ... https://backtest.curvo.eu/ 最近從國外論壇發現的以英股為主的績效回測網站 ... <看更多>
backtest教學 在 [分享] quantstrat 套件分享- 看板R_Language - 批踢踢實業坊 的推薦與評價
1. 套件名稱:
quantstrat 0.9.1739
Depends:
R(>= 2.10),
quantmod,
xts(>= 0.8-2),
blotter(>= 0.9),
FinancialInstrument(>= 0.12.5),
foreach(>= 1.4.0)
Repos:
https://github.com/braverock/quantstrat
https://R-Forge.R-project.org
2. 套件主要用途:
提供股票和各國貨幣等資產組合模擬交易的框架
能夠產生商品k線圖、進出場flag、留倉部位等
也支援使用者定義的技術指標、買賣手續費設定
提供交易次數、Annual Sharpe Ratio、MAE、MFE、年化算術平均/幾何報酬率等統計資料
還有基於平行運算的Walk Forward Analysis
但因為OS的問題 註冊cluster的方式不一樣 需要不同的package
Windows: doParallel、doRedis、snow等
Ubuntu: doMC
由於多數Finance相關的package都是基於quantmod的框架再延伸
所以有蠻多相依的套件,但我覺得主要功能是在quantstrat
所以標題就用quantstrat了XD
3. 套件主要函數列表:
quantstrat:
add.indicator
add.signal
add.rule
applyStrategy
apply.paramset
add.distribution
add.distribution.constraint
walk.forward
blotter:
tradeStats
chart.Posn
FinancialInstrument:
currency
stock
4. 分享內容:
其實網路上資料蠻多的,但都是英文
所以我很納悶怎麼都沒有人寫中文的教學文
台灣看到的回測程式大多是用Python、VBA或現成套裝軟體居多
想說可以推廣一下R這個還蠻方便的package
Analysis、Visualization和用平行運算處理參數最佳化和WFA是他的特色
不過覺得他的documentation不是很完整
由於我今年GSoC的project是整合Josh新的xts_0.10-0和quantmod、quantstrat等套件
和加入dynamic graphs feature
順利的話在計畫結束前應該能把他補得更完整
如果想要自動交易
台灣券商的話 可以將R作為computing server
將結果pass到C++進行下單
國外券商的話
可以用IBroker直接用R跟國外券商API串接
就可以下單了
如果跟shiny結合 就可以做出一個簡單的線上應用
https://naturalsmen.shinyapps.io/Backtest
這是小弟有段時間之前寫來自用的
已經內建策略了
所以請忽略首頁設定參數的tab
直接到Backtest 選擇股號就可以run了
run完請選擇Backtest result
highchart是我之前加上去的
不在本文介紹的範圍內
日後有時間應該會把他完善
這邊就先用來做個簡單的範例
------以下正題------
以Windows為例
library(doParallel) # for apply.paramset() and walk.forward()
library(quantstrat) # main package
library(IKTrading) # quantstrat extensions, mainly for asset allocation
# and order-sizing functions
library(quantmod) # retrieve symbols from yahoo finance, google finance, etc
getSymbols("^GSPC")
# 由於之前可能有策略存在.blotter environment裡,我們要先把他清空
rm(list = ls(.blotter), envir = .blotter)
# 設定貨幣是TWD、USD或EUR等
currency("TWD")
# 設定時區,一般是Universal Time(UTC)或GreenWich Mean Time(GMT)
# 也可以用xts::indexTZ(GSPC)來確認時區
Sys.setenv(TZ = "UTC")
# 可以有多個symbols,多個symbols會形成投資組合
# 如symbols = c("GSPC", "GDAXI")
# 為了方便說明,這邊只用一個指數商品
symbols = "GSPC"
# multiplier為槓桿乘數,比如90元買入中華電(2412)一張,100賣出
# 當multiplier=m,不計手續費下賺m*10000元
stock(symbols, currency = "TWD", multiplier = 1)
# 設定日期、策略名稱和初始權益(本金)
initDate = "1999-01-01"
strategy.st <- portfolio.st <- account.st <- "myStrat"
tradeSize <- 1000000
initEq <- tradeSize*length(symbols)
# 避免策略重複,先將投組、策略、帳號等初始化
# 並從initDate開始執行策略
rm.strat(portfolio.st)
rm.strat(strategy.st)
initPortf(portfolio.st, symbols = symbols, initDate = initDate, currency = "TWD")
initAcct(account.st, portfolios = portfolio.st, initDate = initDate, currency = "TWD", initEq = initEq)
initOrders(portfolio.st, initDate = initDate)
strategy(strategy.st, store = TRUE)
# 設定會使用到的參數
nRSI = 2
thresh1 = 10
thresh2 = 6
nSMAexit = 10
nSMAfilter = 200
period = 10
pctATR = .02 # 2% ATR, size the position based on risk
maxPct = .04
# 設定indicator
# name是這個indicator的名稱,會由名稱呼叫該函數
# 所以你也可以自己定義技術指標或加入ML函數
# mktdata在function內會被替換成你的symbols所以不用更動
# label會讓你指標的欄位名稱變成<column1>.label
add.indicator(strategy.st, name = "lagATR",
arguments = list(HLC=quote(HLC(mktdata)), n=period),
label = "atrX")
add.indicator(strategy.st, name = "RSI",
arguments = list(price=quote(Cl(mktdata)), n=nRSI),
label = "rsi")
# 舉例來說,這裡coloumn name 會變成 SMA.quickMA
add.indicator(strategy.st, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=nSMAexit),
label = "quickMA")
add.indicator(strategy.st, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=nSMAfilter),
label = "filterMA")
# 設定signals
# 主要有sigComparison、sigThreshold、sigCrossover和sigAND
# sigComparison:比較兩個設定好的indicator
# sigThreshold:比較設定好的indicator和一個定值
# sigCrossover:也是比較兩個indicator,但default是t-1時和t時的交叉
# 若要其他lag期間需要使用者自行定義函數
# 效果等同於sigComparison(..., cross=TRUE)
# sigAND:兩個signal需要同時成立
# relationship有gt(greater than)、lt(lower than)、
# gte(greater than or equal to)、lte(lower than or equal to)
# 這邊設定close price > 200日MA時產生訊號,並設定label為upTrend
add.signal(strategy.st, name = "sigComparison",
arguments = list(columns = c("Close", "filterMA"), relationship = "gt"),
label = "upTrend")
# cross = FALSE, for current signal
# cross = TRUE, for both previous day and current signal
# rsi < 10
add.signal(strategy.st, name = "sigThreshold",
arguments = list(column = "rsi", threshold = thresh1,
relationship = "lt", cross = FALSE),
label = "rsiThresh1")
# rsi < 6
add.signal(strategy.st, name = "sigThreshold",
arguments = list(column = "rsi", threshold = thresh2,
relationship = "lt", cross = FALSE),
label = "rsiThresh2")
# 進場訊號1:今天的rsi<10 且 close price > 200日MA,昨天則否(任一不成立)
# long
add.signal(strategy.st, name = "sigAND",
arguments = list(columns = c("rsiThresh1", "upTrend"), cross = TRUE),
label = "longEntry1")
# 進場訊號2:今天的rsi<6 且 close price > 200日MA,昨天則否(任一不成立)
# 可以看出這是反向加碼策略
add.signal(strategy.st, name = "sigAND",
arguments = list(columns = c("rsiThresh2", "upTrend"), cross = TRUE),
label = "longEntry2")
# 出場訊號1:今天的close price > 10日MA,昨天則否
add.signal(strategy.st, name = "sigCrossover",
arguments = list(columns = c("Close", "quickMA"), relationship = "gt"),
label = "exitLongNormal")
# 出場訊號2:今天的close price < 200日MA,昨天則否
add.signal(strategy.st, name = "sigCrossover",
arguments = list(columns = c("Close", "filterMA"), relationship = "lt"),
label = "exitLongFilter")
# 這邊設定台灣的手續費和交易稅,買入0.001425,賣出0.004425
# function args必須有TxnQty, TxnPrice和Symbol
buyCost <- 0.001425
# custom transaction fee function based on value of transaction
buyFee <- function(TxnQty, TxnPrice, Symbol, ...)
{
abs(TxnQty) * TxnPrice * -buyCost
}
sellCost <- 0.004425
sellFee <- function(TxnQty, TxnPrice, Symbol, ...)
{
abs(TxnQty) * TxnPrice * -sellCost
}
# 設定規則,為了方便講解,這邊都以做多為例
# name: rule的名稱,用來呼叫ruleSignal(),所以也可以自己定義
# sigcol: 上面訊號的label
# sigval: 當訊號產生,是否給訊號賦值,TRUE為1、FALSE為0
# ordertype: 下單類型,有市價單、限價單、停損單等
# 這邊以市價單為例
# orderside: 做多或放空
# replace: 如果兩個訊號同時成立,這個訊號是否取代另一個
# prefer: 因為是回測,所以我們需要假定買入和賣出的價格
# 這邊假設是開盤價,若要考慮滑價的話需要自行定義function
# osFUN: 下單的數量,default為osDollarATR和osMaxDollar
# osDollarATR: 依照現有部位產品的波動度和風險承受度加權
# osMaxDollar: 每次都依現有資金買滿,ex.一股160的2330,本金50w,會買滿3張
# 零股需另外定義function
# tradeSize: 用多少本金交易
# pctATR, maxPctATR: 風險承受度的百分比
# atrMod: 搭配ATR,最早的indicator,lastATR的label必須要是atrX
# TxnFees: 額外交易費用,如上所定義之函數
# type: 進場或出場
# path.dep: 當這個rule未close掉,其他的rule不會執行
# call ruleSignal時需要設為TRUE
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longEntry1",
sigval = TRUE,
ordertype = "market",
orderside = "long",
replace = FALSE, # replace = TRUE may choose just one rule
prefer = "Open", # tomorrow because today has closed
osFUN = osDollarATR, # order size function
tradeSize = tradeSize,
pctATR = pctATR,
maxPctATR = pctATR, # set an upper limit of orders
atrMod = "X",
TxnFees = "buyFee"), # atrx above
type = "enter", path.dep = TRUE, label = "enterLong1")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longEntry2",
sigval = TRUE,
ordertype = "market",
orderside = "long",
replace = FALSE, # replace = TRUE may choose just one rule
prefer = "Open", # tomorrow because today has closed
osFUN = osDollarATR, # order size function
tradeSize = tradeSize,
pctATR = pctATR,
maxPctATR = maxPct, # set an upper limit of orders
atrMod = "X",
TxnFees = "buyFee"), # atrx above
type = "enter", path.dep = TRUE, label = "enterLong2")
# 出場規則
# orderqty: 'all'為賣出所有部位,可以是數字或自定義function
# ordertype是停損單(stoplimit)時,需額外設定停損點
# 如果tmult=TRUE,threshold需為百分比,如0.2(=20%),買入價*threshold=停損價
# 如果tmult=FALSE,threshold為絕對數字,如158,停損價就是跌破158時平倉
# 這邊都以市價單出場
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "exitLongNormal",
sigval = TRUE,
orderqty = "all", # order quantity, in all and out all
ordertype = "market",
orderside = "long",
replace = FALSE,
prefer = "Open",
TxnFees = "sellFee"),
type = "exit", path.dep = TRUE, label = "normalExitLong")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "exitLongFilter",
sigval = TRUE,
orderqty = "all",
ordertype = "market",
orderside = "long",
replace = FALSE,
prefer = "Open",
TxnFees = "sellFee"),
type = "exit", path.dep = TRUE, label = "filterExitLong")
# 開始進行回測
out <- applyStrategy(strategy = strategy.st, portfolios = portfolio.st)
# 更新投組資料
updatePortf(portfolio.st)
tradeDetails <- getPortfolio(portfolio.st)
posPL <- tradeDetails$symbols$tsmc$posPL
# 更新帳戶資料和期末權益金額
dateRange <- time(tradeDetails$summary)[-1]
updateAcct(portfolio.st, dateRange)
updateEndEq(account.st)
# 統計資料
tStats <- tradeStats(Portfolios = portfolio.st, use = "trades", inclZeroDays = FALSE)
tStats[, 4:ncol(tStats)] <- round(tStats[, 4:ncol(tStats)], 2)
(aggPF <- sum(tStats$Gross.Profits)/-sum(tStats$Gross.Losses))
(aggCorrect <- mean(tStats$Percent.Positive))
(numTrades <- sum(tStats$Num.Trades))
(meanAvgwLR <- mean(tStats$Avg.WinLoss.Ratio[tStats$Avg.WinLoss.Ratio < Inf], na.rm = TRUE))
# 畫k線圖、進出場flag、持有部位和累積報酬
myTheme<-chart_theme()
myTheme$col$dn.col<-'lightgray'
myTheme$col$dn.border <- 'lightgray'
myTheme$col$up.border <- 'lightgray'
chart.Posn(Portfolio = portfolio.st, Symbol=symbols, theme= myTheme)
# 自由加入技術指標
sma <- SMA(x = Cl(tsmc), n = 200)
sma2 <- SMA(x = Cl(tsmc), n = 10)
rsi <- RSI(price = Cl(tsmc), n = 2)
atr <- lagATR(HLC = HLC(tsmc), n = 10)
add_TA(sma2, on = 1, col = "red")
add_TA(sma, on = 1, col = "green")
add_TA(rsi, col = "green", lwd = 1.5)
### 參數最佳化
# 設定參數範圍
# add distribution and distribution contraints
# rsi
# paramset.label: 參數組合名稱
# label: 這個參數的範圍
add.distribution(strategy.st,
paramset.label = 'allParam',
component.type = 'signal',
component.label = 'rsiThresh1',
variable = list(threshold = 5:10),
label = 'up.rsi'
)
add.distribution(strategy.st,
paramset.label = 'allParam',
component.type = 'signal',
component.label = 'rsiThresh2',
variable = list(threshold = 5:10),
label = 'dn.rsi'
)
# 加入參數範圍限制
add.distribution.constraint(strategy.st,
paramset.label = 'allParam',
distribution.label.1 = 'up.rsi',
distribution.label.2 = 'dn.rsi',
operator = '>',
label = 'RSI'
)
# MA
add.distribution(strategy.st,
paramset.label = 'allParam',
component.type = 'indicator',
component.label = 'quickMA',
variable = list(threshold = 5:15),
label = 'quickMA'
)
add.distribution(strategy.st,
paramset.label = 'allParam',
component.type = 'indicator',
component.label = 'filterMA',
variable = list(threshold = 220:260),
label = 'filterMA'
)
# Walk Forward Analysis
# paramset.label: 設定的參數範圍
# k.training: 樣本期間
# k.testing: 測試期間
# nsamples: 等於0代表所有組合
# obj.func: objective function,目標函數,由於default的最佳化是以
# 報酬率最大為指標,若要改成Max drawdown或其他條件則要自定義函數
# anchored: 是否是moving time window
# verbose: 是否印出交易明細
registerDoParallel(cores=detectCores())
resultsWFA <- walk.forward(
strategy.st=strategy.st,
paramset.label='allParam',
portfolio.st=portfolio.st,
account.st=account.st,
period='years',
k.training=4,
k.testing=2,
nsamples=0,
audit.prefix='wfa',
#obj.func=my.obj,
#obj.args=my.args,
anchored=TRUE,
verbose=TRUE,
include.insamples=TRUE
)
結果會自動輸出樣本內和樣本外的.RData檔到使用者的預設路徑,可以
用ls(.audit)看到training和testing的名稱
舉例來說:
chart.forward.training("wfa.GSPC.2007-01-03.2010-12-31.RData")
如果是testing的部分:
chart.forward("wfa.results.RData")
如果不清楚Out of sample和In sample的關係
可以參考我網頁上WFA的tab
https://naturalsmen.shinyapps.io/Backtest
因為quantstrat的help page真的不太友善,所以打了很多arguments的定義和用法說明
code不知不覺也打了一長串@@
雖然看起來有點長
但我覺得這是用quantstrat搭配其他package建立自己的交易系統蠻完整的code了
如果排版或內容有哪裡需要改進再請板友指教
之後會再慢慢修改與完善這篇
或者可能直接搬到我的部落格了@@
下一個打算分享IBrokers 如果沒有被其他板友搶先的話XD
還有Josh新版的xts_0.10-0、quantmod、PerformanceAnalytics等
或者是等到正式release之後再寫了
5. 備註:
因為自己埋頭研究quantstrat和IBrokers這兩個package非常非常久
一直希望找個時間把自己經驗分享出去
一方面是讓大家知道有這個很好用的package來寫交易程式
另一方面是讓大家少走些彎路
因為可能碰到的bug我大概都遇過 也open issue過了@@:
但是自己一直懶懶的 又在忙GSoC的計畫 以至於一拖再拖
感謝c大提供這個機會讓我上來騙騙p幣
也給我個動機寫了第一篇弱弱的分享文
感覺板上大大多是討論技術為主
所以就想說來個比較應用的範例好了
之後會慢慢把這篇補完、弄得更通順更好閱讀一點
感謝耐心看完或直接End的大家XD
參考資料:
Guy Yollin,
Computational Finance & Risk Management,
University of Washington, Department of Applied Mathematics:
https://www.r-programming.org/papers
QuantStrat TradeR: https://quantstrattrader.wordpress.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.18.39
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1469300017.A.7D0.html
... <看更多>