GC · COMEX reference · MT5 execution
Your structure lives or dies here. A slot that never reaches target is not a target — it is BE insurance.
Fix the top one first.
Tick gates only if they were genuinely true before you clicked. Everything here stays editable afterwards.
The trades you didn't take are data too.
Any gate fails, no trade.
This is where the ladder is won or lost.
The free tier is plenty for this. Local storage keeps working either way; the cloud is the copy you can't lose.
create table if not exists desk_state (
user_id uuid primary key references auth.users(id) on delete cascade,
data jsonb not null default '{}'::jsonb,
updated_at timestamptz not null default now()
);
alter table desk_state enable row level security;
create policy "own row only" on desk_state
for all
using (auth.uid() = user_id)
with check (auth.uid() = user_id);
Row level security is not optional here. The anon key is public by design — it ends up in the page source of any site you host. RLS plus sign-in is what actually keeps your trading record private. If you want to skip the confirmation email when creating your account, turn off "Confirm email" under Authentication → Providers → Email.
P&L = lots × contract size × price move. At 100 oz per lot, 0.03 lots moving $10 = $30. The offset is a note to yourself for translating GC levels into MT5 prices — it doesn't change the maths, since you log the prices you actually got.