<mxfile host="app.diagrams.net" modified="2026-07-07T00:56:34.826Z" agent="codegraph-codewiki-reference-docs" version="24.0.0"><diagram name="Module Map"><mxGraphModel dx="1100" dy="760" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="900" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="root" value="vnpy" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#0f172a;fontColor=#ffffff;strokeColor=#0f172a;fontStyle=1" vertex="1" parent="1"><mxGeometry x="380" y="30" width="320" height="60" as="geometry"/></mxCell><mxCell id="module-2" value="event engine&lt;br&gt;2 components&lt;br&gt;Event" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="80" y="130" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-3" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-2"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-4" value="trader domain model&lt;br&gt;24 components&lt;br&gt;Direction" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="620" y="130" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-5" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-4"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-6" value="trader runtime&lt;br&gt;8 components&lt;br&gt;BaseApp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="80" y="235" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-7" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-6"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-8" value="order conversion&lt;br&gt;2 components&lt;br&gt;PositionHolding" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="620" y="235" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-9" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-8"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-10" value="market data storage and feed&lt;br&gt;4 components&lt;br&gt;BaseDatabase" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="80" y="340" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-11" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-10"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-12" value="trader utilities&lt;br&gt;3 components&lt;br&gt;BarGenerator" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="620" y="340" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-13" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-12"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-14" value="wechat notification&lt;br&gt;3 components&lt;br&gt;SessionExpired" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="80" y="445" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-15" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-14"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-16" value="desktop trading ui&lt;br&gt;15 components&lt;br&gt;MainWindow" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="620" y="445" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-17" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-16"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-18" value="charting&lt;br&gt;7 components&lt;br&gt;DatetimeAxis" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="80" y="550" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-19" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-18"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="module-20" value="rpc&lt;br&gt;2 components&lt;br&gt;RpcClient" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#2563eb;spacing=10;align=left;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="620" y="550" width="420" height="78" as="geometry"/></mxCell><mxCell id="edge-21" value="" style="endArrow=block;html=1;rounded=0;strokeColor=#94a3b8;" edge="1" parent="1" source="root" target="module-20"><mxGeometry relative="1" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile>