如何更新现有列的值?

时间:2019-06-01 09:26:23

标签: tsql

我正在尝试计算投资策略的现金流量。为此,我有每分钟的数据,并且选择了投资策略的购买时间和出售时间。这两个日期不是固定的,但取决于某些公式。但是,下一步是考虑止损。特别是,每当策略打开时(即时间在买入时间和卖出时间之间),如果价格达到障碍,那么我需要记录止损-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_的事实。

0 个答案:

没有答案