【发布时间】:2019-07-02 17:00:57
【问题描述】:
所以我在 Google Bigquery 上对股票市场上的一些交易策略进行了一些回测,我想设置一个距输入价格 1% 的追踪止损。如果股价上涨 5%,追踪止损也会上涨 5%。如果股价下跌,追踪止损不会改变。 (https://www.investopedia.com/terms/t/trailingstop.asp)
我有这张表,它显示了我的入场信号,如果价格低于追踪止损价格,则退出列将显示值为 1,这意味着交易已退出。
这是我目前拥有的表格:
date price entry_signal
30/06/2018 95 0
01/07/2018 100 1
02/07/2018 103 0
03/07/2018 105 0
04/07/2018 104.50 0
05/07/2018 101 0
我希望有一列显示每个日期的追踪止损。当 enter_signal = 1 时,追踪止损首先设置为 2018 年 1 月 7 日价格的 99%,交易在该日期执行。
当价格上涨 y% 时,追踪止损也会上涨 y%。但是,如果价格下跌,追踪止损将不会改变其最后的值。
当价格
如果价格也下跌 y%,我目前无法让追踪止损下跌 y%....
期望的表格结果:
date price trailing stop loss entry_signal exit_signal
30/06/2018 95 NULL 0 0
01/07/2018 100 99 1 0
02/07/2018 103 101.97 0 0
03/07/2018 105 103.95 0 0
04/07/2018 104.50 103.95 0 0
05/07/2018 101 103.95 0 1
这是我的原始代码:
SELECT
date, price, entry_signal,
GREATEST(trailing_stop_loss, 0.99 * price) AS trailing_stop_loss
FROM (
SELECT
date, price, entry_signal,
LAST_VALUE(trailing_stop_loss IGNORE NULLS) OVER (ORDER BY DATE) AS trailing_stop_loss
FROM (
SELECT
date, price, entry_signal,
IF(entry_signal * 0.99 * price > 0, 0.99 * price, NULL) AS trailing_stop_loss
FROM table
)
)
我得到的表:
date price trailing stop loss entry_signal
30/06/2018 95 NULL 0
01/07/2018 100 99 1
02/07/2018 103 101.97 0
03/07/2018 105 103.95 0
04/07/2018 104.50 103.455 0
05/07/2018 101 99.99 0
【问题讨论】:
-
“我目前卡在...” - 你能显示你卡住的查询吗?
-
嗨,Mikail,感谢您再次提供帮助!
-
嗨@MikhailBerlyant 我已经添加了我的代码和我从代码中获得的表格。与我的代码相比,我想不出如何在我想要的表中获得 trailing_stop_loss。 exit_signal 只有在 trailing_stop_loss 正确完成的情况下才能获得,exit_signal = 1 if price
标签: google-bigquery quantitative-finance back-testing