The command part of a timer will be evaluated on execution. However, the timer command will be evaluated
as issued as well. Some of the methods to prevent that "first" evaluation (at the moment the timer command is issued) for variables:
//set -u3 %x 1 | timer 1 1 echo -a evaluated at timer start: %x // evaluated at timer end: $(%x,0) or % $+ x or $+(%,x) | set -u3 %x 2
for identifiers:
//timer 1 1 echo -a evaluated at timer start: $time(ss) // evaluated at timer end: $($time(ss),0) or $!time(ss) or $ $+ time(ss) or $+($,time(ss))
In several situations the "double evaluation" of timers (and of some other commands) may not only result in unexpected values, but become a security issue.
Here are two further methods (especially useful for unknown strings or lengthy commands).
Another method would be to put your parameters not in the command part of a timer but in it's name (then use e.g. token identifiers on $ctimer).
Finally - it's the most obvious sollution for your initial example - you may have the timer call "/alias" only and store your values/parameters in global variables, hash tables, or the like.