Not sure if this works in your context, but I would probably do something along these lines:
T[a_, b_, c_][f_[x_, y_]] := T[a, b, c*f[x + a, y + b]];
T[a_, b_] := T[a, b, 1]
Demonstration:
T[x, y][f[a, b]]
(* T[x, y, f[a + x, b + y]] *)
T[x, y][f[a, b]][g[c, d]][h[e, f]]
(* T[x, y, f[a + x, b + y] g[c + x, d + y] h[e + x, f + y]] *)
Alternatively, you could try this (so that T[x,y]
is more explicit:
T[a_, b_, c_][f_[x_, y_]] := T[a, b, c*f[x + a, y + b]]);
T[a_, b_][f_[x_, y_]] := T[a, b, f[x + a, y + b]*T[a, b]];
T[1, 2][f[a, b]][g[c, d]]
(* T[1, 2, f[1 + a, 2 + b] g[1 + c, 2 + d] T[1, 2]] *)
And actually, there might be some advantages to the following:
T[a_, b_][prev_, f_[x_, y_]] := OperatorApplied[T[a, b], 2][prev*f[x + a, y + b]];
T[a_, b_][f_[x_, y_]] := T[a, b][1, f[x, y]];
T[x, y][f[a, b]][g[c, d]][h[e, f]]
(* OperatorApplied[T[x, y], 2][f[a + x, b + y] g[c + x, d + y] h[e + x, f + y]] *)