我正在尝试计算投资策略的现金流量。为此,我有每分钟的数据,并且选择了投资策略的购买时间和出售时间。这两个日期不是固定的,但取决于某些公式。但是,下一步是考虑止损。特别是,每当策略打开时(即时间在买入时间和卖出时间之间),如果价格达到障碍,那么我需要记录止损-1000。随后,如果损失壁垒被触及,我需要更新买入价,随后的壁垒应以新的买入价而不是旧的买入价进行评估。
select f.*,
isnull(open_price,0) + isnull(close_price,0) + isnull(stop_loss,0)+ isnull(stop_open,0) as future_cashflow,
@Q_fut as Quantity, @Q_fut * (isnull(-open_price,0) + isnull(close_price,0) + isnull(stop_loss,0)+ isnull(stop_open,0)) as total_cashflow
from (
select y.*,
case when stop_date = asofdatetime and @long_short_fut = 'L' and stop_loss = -1000 then -close_
when stop_date = asofdatetime and @long_short_fut = 'S' and stop_loss = -1000 then close_
end as stop_open
from (
select u.*,
case when @long_short_fut = 'L' and close_ + 20.00 <= op_report then -1000
when @long_short_fut = 'S' and close_ >= op_report + 20.00 then -1000
else 0
end
as stop_loss
from (
select t.*, s.open_price as op_report from #h7 t
inner join (
select * from #h7
where open_price is not null
) s
on year(t.asofdatetime) = year(s.asofdatetime)
and t.ww_f = s.ww_f
) u
) y
) f
我尝试了这个,但是问题是我不知道如何更新购买价格,因此我发现错误的价值壁垒被击破。
据我所知,解决方案是更新op_report列,以合并当stop_loss = -1000时,然后设置同一记录的op_report = close_的事实。