Verified Algorithmic Trading Signals · Singapore · Est. 2021
Systematic. Quantitative. Algorithmically Driven.
Four independently verified live algorithmic strategies spanning forex majors, cross pairs, and gold — engineered for risk-adjusted returns since January 2021. All accounts public, all data live.
{[
{label:"Flagship Growth",val:,sub:"TOL LANGIT V10 · Since Jan 2021",gold:true},
{label:"Active Strategies",val:"4",sub:"Across All Risk Profiles"},
{label:"Live Accounts",val:"4",sub:"IC Markets · Tier 1 Broker"},
{label:"Flagship Balance DD",val:,sub:"Max Drawdown by Balance"},
{label:"Total Trades (V10)",val:,sub:"Since Inception · All Verified"},
].map((s,i) => (
{["MQL5 Signal Verified","MyFXBook Account Verified","Live Account · IC Markets","Tier 1 Regulated Broker","Public Data · No Obfuscation"].map((b,i) => (
✓
{b}
{i<4 && ·}
))}
{refreshing ? (
⟳ SYNCING WITH MQL5...
) : lastUpdated ? (
✓ LIVE DATA · {lastUpdated.toLocaleDateString()} {lastUpdated.toLocaleTimeString()}
) : (
BASELINE DATA · MARCH 2026
)}
);
}
// ── About / Manager ────────────────────────────────────────
function About() {
const links = [
{icon:"⌥",label:"github.com/adithyodw",url:"https://github.com/adithyodw",sub:"TOL-LANGIT-Neural-Quant-Advisor · CS50HarvardX"},
{icon:"in",label:"LinkedIn Profile",url:"https://sg.linkedin.com/in/adithyodewangga",sub:"Adithyo Dewangga Wijaya · Singtel · Singapore"},
{icon:"◈",label:"MQL5 Signal Provider",url:"https://www.mql5.com/en/users/adithyodw",sub:"238 weeks active · 4 live signals"},
{icon:"◉",label:"Telegram @tol_langit",url:"https://t.me/tol_langit",sub:"Community & signal updates"},
{icon:"◈",label:"Forex Factory",url:"https://www.forexfactory.com/adithyodw",sub:"Track record & community"},
];
const facts = [
{n:"4.5+",l:"Years Live Trading",gold:true},{n:"4,507",l:"Total Trades (V10)"},{n:"238",l:"Weeks on MQL5",gold:true},
{n:"81–100%",l:"Win Rates"},{n:"$1K",l:"Min. Initial Deposit"},{n:"4",l:"Active Strategies",gold:true},
];
return (
Strategy Manager
Investment Manager Profile
All accounts publicly accessible 24/5. No proprietary black boxes. No obfuscation of results.
Systematic Quantitative Strategies Built on 4+ Years of Verified Live Performance
Adithyo Dewangga Wijaya is a Singapore-based algorithmic trading strategy developer specialising in automated Expert Advisor (EA) systems for the MetaTrader platform. His flagship strategy TOL LANGIT V10 has been continuously live-traded and publicly verifiable on both MQL5 and MyFXBook since January 2021.
The strategy suite spans conservative low-risk forex approaches (V10) to AI-verified institutional-style gold trading systems (ETF GOLD). All accounts operate exclusively on IC Markets — a globally regulated Tier 1 broker — with full public transparency. The TOL-LANGIT-Neural-Quant-Advisor GitHub repository documents the institutional quantitative methodology incorporating multi-timeframe Bayesian probability modelling and AI verification layers.
{facts.map((f,i) => (
{f.n}
{f.l}
))}
);
}
// ── Strategy Cards ─────────────────────────────────────────
function StrategyCards({ data }) {
return (
{[
{t:"HIGH RISK TRADING WARNING",b:"Trading forex, stocks, and commodities with leverage is extremely high risk. Leveraged trading magnifies both profits and losses. You may lose more than your initial deposit. Only trade with money you can absolutely afford to lose. Do not risk money you cannot afford to lose. Better safe than homeless, right?"},
{t:"PAST PERFORMANCE DISCLAIMER",b:"Past performance is not indicative of and does not guarantee future results. All figures represent verified historical data from live accounts and must not be interpreted as a projection or promise of future returns. Market conditions change materially at any time and without warning."},
{t:"LIABILITY LIMITATION",b:"The strategy developer and all associated parties will not accept any responsibility whatsoever for losses incurred by any individual copying, following, or subscribing to any of the signals listed on this page. All investment decisions are made solely at the discretion and risk of the individual investor."},
{t:"REGULATORY NOTICE",b:"These are trading signals provided for informational purposes only. Past signal performance does not constitute financial advice. Always perform independent due diligence before committing capital. Consult a licensed financial advisor if you are unsure about the risks involved."},
].map((d,i) => (
{d.t}
{d.b}
))}
);
}
// ── Footer ─────────────────────────────────────────────────
function Footer({ data }) {
return (
);
}
// ══════════════════════════════════════════════════════════════════
// MAIN APP
// ══════════════════════════════════════════════════════════════════
export default function App() {
useFonts();
const [data, setData] = useState(() => JSON.parse(JSON.stringify(INIT_DATA)));
const [refreshing, setRefreshing] = useState(false);
const [lastUpdated, setLastUpdated] = useState(null);
const [activeSection, setActiveSection] = useState("overview");
const [refreshMsg, setRefreshMsg] = useState("");
const [showMsg, setShowMsg] = useState(false);
const refreshData = useCallback(async () => {
setRefreshing(true);
setRefreshMsg("Connecting to MQL5 live accounts...");
setShowMsg(true);
try {
const prompt = `Fetch the latest live statistics from these 4 MQL5 signal pages using web search, then return ONLY a valid JSON object with no markdown, no code blocks, no explanation.
Pages to fetch:
1. https://www.mql5.com/en/signals/1083101 (TOL LANGIT V10)
2. https://www.mql5.com/en/signals/2296225 (TOL LANGIT V10 HIGH RISK)
3. https://www.mql5.com/en/signals/2353105 (TOL LANGIT ETF)
4. https://www.mql5.com/en/signals/2360336 (TOL LANGIT ETF GOLD)
Return this exact JSON structure with the latest values found on those pages:
{"v10":{"growth":0,"profit":0,"balance":0,"equity":0,"monthlyGain":0,"annualForecast":0,"trades":0,"profitTrades":0,"lossTrades":0,"winRate":0,"pf":0,"sharpe":0,"rf":0,"payoff":0,"grossProfit":0,"grossProfitPips":0,"grossLoss":0,"grossLossPips":0,"bestTrade":0,"worstTrade":0,"avgWin":0,"avgLoss":0,"maxCWins":0,"maxCLosses":0,"maxCProfit":0,"maxCLoss":0,"tradingDays":0,"daysPct":0,"tpw":0,"activity":0,"depLoad":0,"ddBalPct":0,"ddEqPct":0,"ddBalAmt":0,"ddEqAmt":0,"longs":0,"longPct":0,"shorts":0,"shortPct":0,"latestTrade":"","status":"","weeks":0},"v10hr":{same fields},"etf":{same fields},"etfgold":{same fields}}
Return only the raw JSON object.`;
const response = await fetch("https://api.anthropic.com/v1/messages", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "claude-sonnet-4-20250514",
max_tokens: 2000,
system: "You are a data extraction assistant. When asked to fetch data from URLs, use web search to get the latest information, then return ONLY valid JSON with no markdown formatting, no code fences, and no explanation text whatsoever.",
tools: [{ type: "web_search_20250305", name: "web_search" }],
messages: [{ role: "user", content: prompt }]
})
});
if (!response.ok) throw new Error(`API error: ${response.status}`);
const apiData = await response.json();
const fullText = (apiData.content || []).filter(b => b.type === "text").map(b => b.text).join("");
const jsonMatch = fullText.match(/\{[\s\S]*?\}(?=\s*$|\s*\n)/);
const cleanText = fullText.replace(/```json|```/g,"").trim();
const jsonMatch2 = cleanText.match(/^\s*(\{[\s\S]*\})\s*$/);
const toParse = jsonMatch2 ? jsonMatch2[1] : jsonMatch ? jsonMatch[0] : null;
if (toParse) {
const fresh = JSON.parse(toParse);
setData(prev => {
const next = { ...prev };
KEYS.forEach(k => {
if (fresh[k] && typeof fresh[k] === "object") {
const updates = {};
Object.entries(fresh[k]).forEach(([field, val]) => {
if (val !== 0 && val !== "" && val !== null && val !== undefined) {
updates[field] = val;
}
});
if (Object.keys(updates).length > 3) next[k] = { ...prev[k], ...updates };
}
});
return next;
});
setLastUpdated(new Date());
setRefreshMsg("✓ Live data successfully loaded from MQL5");
} else {
setRefreshMsg("⚠ MQL5 data parsed — showing current cached values");
}
} catch (err) {
setRefreshMsg(`⚠ Refresh error: ${err.message} — showing verified cached data`);
} finally {
setRefreshing(false);
setTimeout(() => setShowMsg(false), 5000);
}
}, []);
useEffect(() => { refreshData(); }, []);
return (