Readers should note that the last line of the question is fantasy syntax; the rest would work.
This may be what you seek. Note that as you read in the data afresh, the variables you capture drop
can't exist.
clear
input str16 username str40 betdate winnings
player1 "12NOV2008:19:04:01" -10
player1 "12NOV2008:12:03:44" 50
player2 "07NOV2008:14:03:33" -50
player2 "05NOV2008:09:00:00" -100
end
gen double timestamp=clock(betdate,"DMY hms")
format timestamp %tc
gen result = cond(winnings > 0, "W", "L")
bysort username (timestamp): gen resulthistory = result[1]
by username : replace resulthistory = resulthistory[_n-1] + result if _n > 1
by username : replace resulthistory = resulthistory[_N]
list