JavaScript (ES6), 26 bytes
Returns the \$n\$-th term of the sequence. Relies on arithmetic underflow to stop the recursion.
f=n=>n?(-n%4/3|1)*f(n/2):1
Commented
f = n => // f is a recursive function taking the input n
n ? // if n is not zero:
( //
-n % 4 // the sign of n % m is the sign of n in JS,
// so this gives a value in ]-4, 0]
/ 3 // we turn this into a value in ]-4/3, 0]
// this is ≤ -1 if the 2 least significant bits
// of the integer part of n are set
| 1 // a bitwise OR with 1 gives either:
1 or // -1
for )]-4/3, -1]
// 1 for ]-1, 0]
*) //
* // we multiply by the result of ...
f(n / 2) // ... a recursive call with n / 2
// once we have n < 1, the final result is not
// changed anymore; and once n is small enough,
// n / 2 will eventually be evaluated to 0
: // else:
1 // stop the recursion