@stocksharp/trading-controls 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -16
- package/dist/esm/black-scholes.js +147 -0
- package/dist/esm/black-scholes.js.map +1 -0
- package/dist/esm/control-types.js +4 -0
- package/dist/esm/control-types.js.map +1 -1
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/log-monitor-widget.js +265 -0
- package/dist/esm/log-monitor-widget.js.map +1 -0
- package/dist/esm/log-tree.js +96 -0
- package/dist/esm/log-tree.js.map +1 -0
- package/dist/esm/option-desk-widget.js +322 -0
- package/dist/esm/option-desk-widget.js.map +1 -0
- package/dist/esm/pnl-curve.js +129 -0
- package/dist/esm/pnl-curve.js.map +1 -0
- package/dist/esm/statistics-widget.js +194 -0
- package/dist/esm/statistics-widget.js.map +1 -0
- package/dist/esm/strategies-widget.js +348 -0
- package/dist/esm/strategies-widget.js.map +1 -0
- package/dist/sstradingcontrols.js +1307 -47
- package/dist/sstradingcontrols.js.map +4 -4
- package/dist/types/black-scholes.d.ts +28 -0
- package/dist/types/black-scholes.d.ts.map +1 -0
- package/dist/types/control-types.d.ts +4 -0
- package/dist/types/control-types.d.ts.map +1 -1
- package/dist/types/index.d.ts +16 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/log-monitor-widget.d.ts +42 -0
- package/dist/types/log-monitor-widget.d.ts.map +1 -0
- package/dist/types/log-tree.d.ts +34 -0
- package/dist/types/log-tree.d.ts.map +1 -0
- package/dist/types/option-desk-widget.d.ts +68 -0
- package/dist/types/option-desk-widget.d.ts.map +1 -0
- package/dist/types/pnl-curve.d.ts +43 -0
- package/dist/types/pnl-curve.d.ts.map +1 -0
- package/dist/types/statistics-widget.d.ts +29 -0
- package/dist/types/statistics-widget.d.ts.map +1 -0
- package/dist/types/strategies-widget.d.ts +63 -0
- package/dist/types/strategies-widget.d.ts.map +1 -0
- package/dist/types/trading-data.d.ts +9 -0
- package/dist/types/trading-data.d.ts.map +1 -1
- package/package.json +27 -2
- package/screenshots/log-monitor.png +0 -0
- package/screenshots/option-desk.png +0 -0
- package/screenshots/panels.jpg +0 -0
- package/screenshots/statistics.png +0 -0
- package/screenshots/strategies.png +0 -0
- package/src/black-scholes.ts +199 -0
- package/src/control-types.ts +4 -0
- package/src/index.ts +41 -0
- package/src/log-monitor-widget.ts +312 -0
- package/src/log-tree.ts +131 -0
- package/src/option-desk-widget.ts +422 -0
- package/src/pnl-curve.ts +204 -0
- package/src/statistics-widget.ts +226 -0
- package/src/strategies-widget.ts +435 -0
- package/src/trading-data.ts +22 -0
- package/styles/trading-controls.css +356 -0
- package/translation-keys.json +70 -1
|
@@ -1378,3 +1378,359 @@
|
|
|
1378
1378
|
}
|
|
1379
1379
|
|
|
1380
1380
|
.oe-estimate.oe-estimate-error { color: var(--t-red); }
|
|
1381
|
+
|
|
1382
|
+
/* Statistics: a figure column, right-aligned and lined up on the digits so a column of
|
|
1383
|
+
numbers can be compared down rather than read across. */
|
|
1384
|
+
.statistic-value {
|
|
1385
|
+
text-align: right;
|
|
1386
|
+
font-family: var(--t-mono);
|
|
1387
|
+
font-variant-numeric: tabular-nums;
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
/* ---- Log monitor -------------------------------------------------------- */
|
|
1391
|
+
|
|
1392
|
+
/* Two panes side by side: the sources, which are as wide as their names, and the messages,
|
|
1393
|
+
which take everything left. Both scroll in their own right so a long log does not push the
|
|
1394
|
+
tree off the panel. */
|
|
1395
|
+
.log-monitor-body {
|
|
1396
|
+
display: flex;
|
|
1397
|
+
min-height: 0;
|
|
1398
|
+
overflow: hidden;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1401
|
+
.log-sources {
|
|
1402
|
+
flex: 0 0 14rem;
|
|
1403
|
+
min-height: 0;
|
|
1404
|
+
overflow: auto;
|
|
1405
|
+
display: flex;
|
|
1406
|
+
flex-direction: column;
|
|
1407
|
+
border-right: 1px solid var(--t-border);
|
|
1408
|
+
background: var(--t-panel);
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
/* A source reads as a row, not as a button: the whole width is the target, the caption sits
|
|
1412
|
+
where its depth puts it, and only the selected one is filled. */
|
|
1413
|
+
.log-source {
|
|
1414
|
+
flex: 0 0 auto;
|
|
1415
|
+
border: 0;
|
|
1416
|
+
background: transparent;
|
|
1417
|
+
color: var(--t-text);
|
|
1418
|
+
font: inherit;
|
|
1419
|
+
text-align: left;
|
|
1420
|
+
padding: .25rem .5rem;
|
|
1421
|
+
cursor: pointer;
|
|
1422
|
+
white-space: nowrap;
|
|
1423
|
+
overflow: hidden;
|
|
1424
|
+
text-overflow: ellipsis;
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
.log-source:hover { background: var(--t-hover); }
|
|
1428
|
+
|
|
1429
|
+
.log-source.is-selected {
|
|
1430
|
+
background: var(--t-hover);
|
|
1431
|
+
color: var(--t-text-bright);
|
|
1432
|
+
box-shadow: inset 2px 0 0 var(--t-accent);
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
.log-messages {
|
|
1436
|
+
flex: 1 1 auto;
|
|
1437
|
+
min-width: 0;
|
|
1438
|
+
min-height: 0;
|
|
1439
|
+
display: flex;
|
|
1440
|
+
flex-direction: column;
|
|
1441
|
+
overflow: hidden;
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
.log-toolbar {
|
|
1445
|
+
flex: 0 0 auto;
|
|
1446
|
+
display: flex;
|
|
1447
|
+
align-items: center;
|
|
1448
|
+
gap: .3rem;
|
|
1449
|
+
padding: .3rem .5rem;
|
|
1450
|
+
border-bottom: 1px solid var(--t-border);
|
|
1451
|
+
background: var(--t-header);
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
/* One letter per level, lit when that level is shown. Off is dimmed rather than hidden, so the
|
|
1455
|
+
row of them reads as a set of switches and not as a shrinking list. */
|
|
1456
|
+
.log-level-toggle {
|
|
1457
|
+
border: 1px solid var(--t-border);
|
|
1458
|
+
background: var(--t-panel);
|
|
1459
|
+
color: var(--t-text-dim);
|
|
1460
|
+
font-family: var(--t-mono);
|
|
1461
|
+
font-size: .72rem;
|
|
1462
|
+
line-height: 1;
|
|
1463
|
+
width: 1.4rem;
|
|
1464
|
+
height: 1.4rem;
|
|
1465
|
+
border-radius: var(--t-radius);
|
|
1466
|
+
cursor: pointer;
|
|
1467
|
+
opacity: .45;
|
|
1468
|
+
transition: opacity var(--t-transition), color var(--t-transition);
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
.log-level-toggle.is-on { opacity: 1; color: var(--t-text); }
|
|
1472
|
+
.log-level-toggle.log-level-error.is-on { color: var(--t-red); }
|
|
1473
|
+
.log-level-toggle.log-level-warning.is-on { color: var(--t-orange); }
|
|
1474
|
+
|
|
1475
|
+
.log-filter {
|
|
1476
|
+
flex: 1 1 auto;
|
|
1477
|
+
min-width: 4rem;
|
|
1478
|
+
max-width: 14rem;
|
|
1479
|
+
margin-left: .3rem;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
/* The scroll box, not the table, is the flex child. A table given `flex: 1` stretches its rows
|
|
1483
|
+
to fill the space instead of leaving the space empty, which drew a one-line log as one line a
|
|
1484
|
+
panel tall; and with nothing scrollable around it, a long log was simply unreachable past the
|
|
1485
|
+
height of the panel. */
|
|
1486
|
+
.log-table-scroll {
|
|
1487
|
+
flex: 1 1 auto;
|
|
1488
|
+
min-height: 0;
|
|
1489
|
+
overflow: auto;
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
/* The header stays put while the messages scroll under it - a log is read by scrolling back,
|
|
1493
|
+
and a column heading that scrolls away takes the meaning of the columns with it. */
|
|
1494
|
+
.log-table thead th {
|
|
1495
|
+
position: sticky;
|
|
1496
|
+
top: 0;
|
|
1497
|
+
z-index: 1;
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
/* The level column is one letter wide and coloured by what it says; the message takes the rest
|
|
1501
|
+
and wraps rather than being cut, because the end of an error is usually the part that names
|
|
1502
|
+
the cause. */
|
|
1503
|
+
.log-level-col { width: 2rem; }
|
|
1504
|
+
|
|
1505
|
+
.log-level-cell {
|
|
1506
|
+
text-align: center;
|
|
1507
|
+
font-family: var(--t-mono);
|
|
1508
|
+
color: var(--t-text-dim);
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
.log-level-cell.log-level-error { color: var(--t-red); }
|
|
1512
|
+
.log-level-cell.log-level-warning { color: var(--t-orange); }
|
|
1513
|
+
|
|
1514
|
+
.log-message-cell {
|
|
1515
|
+
white-space: pre-wrap;
|
|
1516
|
+
word-break: break-word;
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
.log-row-error td { color: var(--t-red); }
|
|
1520
|
+
|
|
1521
|
+
/* ---- Strategies dashboard ----------------------------------------------- */
|
|
1522
|
+
|
|
1523
|
+
/* The state reads twice: a dot that carries the colour across a long list, and the word beside
|
|
1524
|
+
it, because a colour cannot tell Starting from Started. */
|
|
1525
|
+
.strategy-state { white-space: nowrap; }
|
|
1526
|
+
|
|
1527
|
+
.strategy-dot {
|
|
1528
|
+
margin-right: .35rem;
|
|
1529
|
+
color: var(--t-text-dim);
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
.strategy-state-started .strategy-dot { color: var(--t-green); }
|
|
1533
|
+
.strategy-state-starting .strategy-dot,
|
|
1534
|
+
.strategy-state-stopping .strategy-dot { color: var(--t-orange); }
|
|
1535
|
+
|
|
1536
|
+
/* A least width in characters, so the column does not jump as a run passes through Stopping on
|
|
1537
|
+
its way to Stopped, or Forming on its way to Running. Sized to the longest of those words; a
|
|
1538
|
+
floor rather than a cap, so a language that words them longer still gets its room. */
|
|
1539
|
+
.strategy-state-text {
|
|
1540
|
+
color: var(--t-text-dim);
|
|
1541
|
+
display: inline-block;
|
|
1542
|
+
min-width: 8ch;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
.strategy-actions,
|
|
1546
|
+
.strategy-position {
|
|
1547
|
+
white-space: nowrap;
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
/* A least width in digits, so the flatten button beside the figure does not move when the
|
|
1551
|
+
position gains a minus sign or loses a digit. It is a floor, not a cap: a genuinely wider
|
|
1552
|
+
number still gets the room it needs. */
|
|
1553
|
+
.strategy-position-value {
|
|
1554
|
+
display: inline-block;
|
|
1555
|
+
min-width: 5ch;
|
|
1556
|
+
text-align: right;
|
|
1557
|
+
font-variant-numeric: tabular-nums;
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
.strategy-actions .bt-icon-btn { margin-right: .1rem; }
|
|
1561
|
+
|
|
1562
|
+
/* Flattening sits with the number it acts on, quiet until the position is worth closing. */
|
|
1563
|
+
.strategy-flatten-btn { margin-left: .35rem; }
|
|
1564
|
+
|
|
1565
|
+
.strategy-online { text-align: center; color: var(--t-text-dim); }
|
|
1566
|
+
.strategy-online.is-on { color: var(--t-green); }
|
|
1567
|
+
|
|
1568
|
+
.strategy-mode { min-width: 7rem; }
|
|
1569
|
+
|
|
1570
|
+
/* The curve fills the cell it was measured for; the cell claims that width so a column of them
|
|
1571
|
+
lines up whether or not a given strategy has traded yet. */
|
|
1572
|
+
.strategy-spark { width: 140px; padding-top: 2px; padding-bottom: 2px; }
|
|
1573
|
+
.strategy-spark-canvas { display: block; }
|
|
1574
|
+
|
|
1575
|
+
/* An error is the one cell allowed to be long: it is read when something is wrong and truncating
|
|
1576
|
+
it hides the part that names the cause. */
|
|
1577
|
+
.strategy-error {
|
|
1578
|
+
color: var(--t-red);
|
|
1579
|
+
white-space: pre-wrap;
|
|
1580
|
+
word-break: break-word;
|
|
1581
|
+
}
|
|
1582
|
+
|
|
1583
|
+
.strategy-failed .strategy-dot { color: var(--t-red); }
|
|
1584
|
+
|
|
1585
|
+
/* ---- Option desk -------------------------------------------------------- */
|
|
1586
|
+
|
|
1587
|
+
/* A bar behind a figure rather than beside it: the number stays readable and the cell keeps its
|
|
1588
|
+
width, so a column of them can be compared down the strip. */
|
|
1589
|
+
.option-bar-cell {
|
|
1590
|
+
position: relative;
|
|
1591
|
+
display: block;
|
|
1592
|
+
text-align: right;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
.option-bar {
|
|
1596
|
+
position: absolute;
|
|
1597
|
+
inset: 0 auto 0 0;
|
|
1598
|
+
border-radius: 1px;
|
|
1599
|
+
opacity: .35;
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
.option-bar-text { position: relative; }
|
|
1603
|
+
|
|
1604
|
+
/* Calls and puts are told apart by which side the bar is tinted; volatility is neither side's,
|
|
1605
|
+
so it takes the neutral one. */
|
|
1606
|
+
.option-bar-call { background: var(--t-green); }
|
|
1607
|
+
.option-bar-put { background: var(--t-red); }
|
|
1608
|
+
.option-bar-iv { background: var(--t-text-dim); }
|
|
1609
|
+
|
|
1610
|
+
.option-bid { color: var(--t-green); }
|
|
1611
|
+
.option-ask { color: var(--t-red); }
|
|
1612
|
+
|
|
1613
|
+
/* The strike is the spine of the chain: it is what the eye runs down, so it is the one column
|
|
1614
|
+
given weight, and the value beside it sits in the same block. */
|
|
1615
|
+
.option-strike {
|
|
1616
|
+
text-align: center;
|
|
1617
|
+
font-weight: 600;
|
|
1618
|
+
color: var(--t-text-bright);
|
|
1619
|
+
background: var(--t-header);
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
.option-intrinsic {
|
|
1623
|
+
text-align: center;
|
|
1624
|
+
color: var(--t-text-dim);
|
|
1625
|
+
background: var(--t-header);
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
/* Which half is in the money, shaded rather than outlined: the boundary between the two is the
|
|
1629
|
+
first thing a reader looks for and it moves with the underlying. */
|
|
1630
|
+
.option-itm-call td:first-child,
|
|
1631
|
+
.option-itm-put td:last-child { box-shadow: none; }
|
|
1632
|
+
|
|
1633
|
+
.option-itm-call .option-strike { border-left: 2px solid var(--t-green); }
|
|
1634
|
+
.option-itm-put .option-strike { border-right: 2px solid var(--t-red); }
|
|
1635
|
+
|
|
1636
|
+
/* ---- Fields the controls build themselves -------------------------------- */
|
|
1637
|
+
|
|
1638
|
+
/* A control that ships its own panel ships its own fields. These carry Bootstrap's class names
|
|
1639
|
+
because a host that has Bootstrap should keep its look, but a host that does not was getting
|
|
1640
|
+
the browser's default control: a white box with a native arrow, sitting on a dark panel. The
|
|
1641
|
+
rules below are what the package paints when nothing else has, and any real Bootstrap or host
|
|
1642
|
+
stylesheet loaded after this one still wins. */
|
|
1643
|
+
.terminal-table input.form-control,
|
|
1644
|
+
.terminal-table select.form-control,
|
|
1645
|
+
.panel-body input.form-control,
|
|
1646
|
+
.panel-body select.form-control {
|
|
1647
|
+
background: var(--t-bg);
|
|
1648
|
+
color: var(--t-text);
|
|
1649
|
+
border: 1px solid var(--t-border);
|
|
1650
|
+
border-radius: var(--t-radius);
|
|
1651
|
+
font-family: inherit;
|
|
1652
|
+
font-size: 11px;
|
|
1653
|
+
padding: 2px 6px;
|
|
1654
|
+
line-height: 1.4;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
.terminal-table select.form-control,
|
|
1658
|
+
.panel-body select.form-control {
|
|
1659
|
+
/* The native arrow is painted by the platform and cannot be themed, so it is replaced. */
|
|
1660
|
+
appearance: none;
|
|
1661
|
+
background-image: linear-gradient(45deg, transparent 50%, var(--t-text-dim) 50%),
|
|
1662
|
+
linear-gradient(135deg, var(--t-text-dim) 50%, transparent 50%);
|
|
1663
|
+
background-position: right 11px center, right 6px center;
|
|
1664
|
+
background-size: 5px 5px, 5px 5px;
|
|
1665
|
+
background-repeat: no-repeat;
|
|
1666
|
+
padding-right: 20px;
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
.panel-body input.form-control::placeholder { color: var(--t-text-dim); }
|
|
1670
|
+
|
|
1671
|
+
.terminal-table input.form-control:focus,
|
|
1672
|
+
.terminal-table select.form-control:focus,
|
|
1673
|
+
.panel-body input.form-control:focus,
|
|
1674
|
+
.panel-body select.form-control:focus {
|
|
1675
|
+
outline: none;
|
|
1676
|
+
border-color: var(--t-accent);
|
|
1677
|
+
box-shadow: 0 0 0 2px var(--t-accent-glow-soft);
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1680
|
+
/* The tables carry their own text colour rather than inheriting the page's. A panel is dropped
|
|
1681
|
+
into whatever document a host has, and one that never set a colour was rendering near-black
|
|
1682
|
+
rows on a near-black panel. */
|
|
1683
|
+
.terminal-table { color: var(--t-text); }
|
|
1684
|
+
|
|
1685
|
+
/* The scrollbars inside a panel, painted from the same tokens as everything else in it.
|
|
1686
|
+
A control makes its own scroll containers - the body, the table, the log's source tree, the
|
|
1687
|
+
watchlist pane - so a panel that brings its own background brings the bar over it too;
|
|
1688
|
+
without this a themed dark panel scrolls with the operating system's light grey.
|
|
1689
|
+
|
|
1690
|
+
Scoped to `.terminal-panel` on purpose: a host's page keeps whatever scrollbars it has, and
|
|
1691
|
+
only the boxes this package created are restyled.
|
|
1692
|
+
|
|
1693
|
+
Both spellings, because they are not interchangeable. `scrollbar-width` / `scrollbar-color`
|
|
1694
|
+
are the standard ones and are all Firefox reads; the `::-webkit-scrollbar` pseudo-elements
|
|
1695
|
+
are what WebKit and Chromium read, and they win there when both are present. */
|
|
1696
|
+
.terminal-panel,
|
|
1697
|
+
.terminal-panel * {
|
|
1698
|
+
scrollbar-width: thin;
|
|
1699
|
+
scrollbar-color: var(--t-border) transparent;
|
|
1700
|
+
}
|
|
1701
|
+
|
|
1702
|
+
.terminal-panel ::-webkit-scrollbar,
|
|
1703
|
+
.terminal-panel::-webkit-scrollbar {
|
|
1704
|
+
width: 10px;
|
|
1705
|
+
height: 10px;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
/* Transparent rather than a colour of its own: a scroll container sits on the panel, the header
|
|
1709
|
+
band or a grouped row, and a track painted one flat colour shows a seam against the other two. */
|
|
1710
|
+
.terminal-panel ::-webkit-scrollbar-track,
|
|
1711
|
+
.terminal-panel::-webkit-scrollbar-track {
|
|
1712
|
+
background: transparent;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
.terminal-panel ::-webkit-scrollbar-thumb,
|
|
1716
|
+
.terminal-panel::-webkit-scrollbar-thumb {
|
|
1717
|
+
background: var(--t-border);
|
|
1718
|
+
border-radius: var(--t-radius);
|
|
1719
|
+
/* An inset border keeps the thumb off the edge of the track, so it reads as a handle in a
|
|
1720
|
+
gutter rather than as a filled column. The border is the padding: it has to be
|
|
1721
|
+
transparent and clipped to the content box, or it paints as a second colour. */
|
|
1722
|
+
border: 2px solid transparent;
|
|
1723
|
+
background-clip: content-box;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
.terminal-panel ::-webkit-scrollbar-thumb:hover,
|
|
1727
|
+
.terminal-panel::-webkit-scrollbar-thumb:hover {
|
|
1728
|
+
background: var(--t-text-dim);
|
|
1729
|
+
background-clip: content-box;
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
/* Where two bars meet. Left unpainted it is a white square in the corner of a dark panel. */
|
|
1733
|
+
.terminal-panel ::-webkit-scrollbar-corner,
|
|
1734
|
+
.terminal-panel::-webkit-scrollbar-corner {
|
|
1735
|
+
background: transparent;
|
|
1736
|
+
}
|
package/translation-keys.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "Generated from src/ by tools/check-translation-keys.mjs -- do not edit by hand. Every string here is passed to TradingHost.t(); a host that answers none of them renders these literally to the user. See README.md (\"Text arrives through t()\").",
|
|
3
|
-
"count":
|
|
3
|
+
"count": 222,
|
|
4
4
|
"keys": [
|
|
5
5
|
"Actions",
|
|
6
6
|
"ActiveOrders",
|
|
@@ -10,40 +10,52 @@
|
|
|
10
10
|
"AddInstrument",
|
|
11
11
|
"AddOrderbook",
|
|
12
12
|
"All",
|
|
13
|
+
"AllSources",
|
|
13
14
|
"Amount",
|
|
14
15
|
"Apply",
|
|
16
|
+
"Ask",
|
|
15
17
|
"AskOrders",
|
|
16
18
|
"AskShort",
|
|
17
19
|
"Avbl",
|
|
18
20
|
"AvgPrice",
|
|
19
21
|
"BBO",
|
|
20
22
|
"BestBidOrOffer",
|
|
23
|
+
"Bid",
|
|
21
24
|
"BidOrders",
|
|
22
25
|
"BidShort",
|
|
23
26
|
"BubbleChart",
|
|
24
27
|
"BuyHotkey",
|
|
28
|
+
"Call",
|
|
25
29
|
"Cancel",
|
|
26
30
|
"Cancel order",
|
|
27
31
|
"CancelAll",
|
|
28
32
|
"CancelAllOrders",
|
|
33
|
+
"Category",
|
|
29
34
|
"Change24hPct",
|
|
30
35
|
"Clear",
|
|
31
36
|
"ClearFilters",
|
|
37
|
+
"ClearItems",
|
|
32
38
|
"ClearSort",
|
|
33
39
|
"ClickToChangeSymbol",
|
|
34
40
|
"Close position",
|
|
35
41
|
"Close position on {0}",
|
|
36
42
|
"ClosePanel",
|
|
43
|
+
"ClosePosition",
|
|
37
44
|
"Copy selected rows ({0})",
|
|
38
45
|
"CopyCell",
|
|
39
46
|
"CopyRow",
|
|
40
47
|
"Current",
|
|
48
|
+
"Debug",
|
|
49
|
+
"Delta",
|
|
41
50
|
"Dismiss",
|
|
51
|
+
"Error",
|
|
52
|
+
"Errors",
|
|
42
53
|
"ExportToExcel",
|
|
43
54
|
"ExportToXlsx",
|
|
44
55
|
"ExtraInstruments",
|
|
45
56
|
"Favorite",
|
|
46
57
|
"Favorites",
|
|
58
|
+
"Filter",
|
|
47
59
|
"Filter by this value: {0}",
|
|
48
60
|
"Filter: {0}",
|
|
49
61
|
"FilterAnd",
|
|
@@ -63,11 +75,17 @@
|
|
|
63
75
|
"FilterOpNotEmpty",
|
|
64
76
|
"FilterOpStartsWith",
|
|
65
77
|
"FilterRule",
|
|
78
|
+
"Gamma",
|
|
66
79
|
"GroupByColumn",
|
|
67
80
|
"HideColumn",
|
|
68
81
|
"HideFilterRow",
|
|
69
82
|
"HideHeaderRow",
|
|
83
|
+
"HV",
|
|
70
84
|
"ID",
|
|
85
|
+
"IntrinsicValue",
|
|
86
|
+
"IVAsk",
|
|
87
|
+
"IVBid",
|
|
88
|
+
"IVLast",
|
|
71
89
|
"Last",
|
|
72
90
|
"LevelsCount",
|
|
73
91
|
"Limit",
|
|
@@ -75,21 +93,40 @@
|
|
|
75
93
|
"Limit price must be positive",
|
|
76
94
|
"ListView",
|
|
77
95
|
"Locked: ${0}",
|
|
96
|
+
"LogMessages",
|
|
97
|
+
"LogMonitor",
|
|
98
|
+
"LogMonitorActions",
|
|
99
|
+
"LogSources",
|
|
78
100
|
"Market",
|
|
79
101
|
"Markets",
|
|
80
102
|
"MarketTrades",
|
|
81
103
|
"Max Buy",
|
|
82
104
|
"Max Sell",
|
|
105
|
+
"Message",
|
|
106
|
+
"Messages",
|
|
83
107
|
"MidPrice",
|
|
84
108
|
"MKT",
|
|
85
109
|
"My trades",
|
|
110
|
+
"Name",
|
|
111
|
+
"No",
|
|
86
112
|
"No instruments",
|
|
87
113
|
"No positions",
|
|
88
114
|
"No trade history",
|
|
89
115
|
"No trades yet",
|
|
90
116
|
"NoActiveOrders",
|
|
117
|
+
"NoLogMessages",
|
|
118
|
+
"NoOptions",
|
|
119
|
+
"NoStatistics",
|
|
120
|
+
"NoStrategies",
|
|
121
|
+
"NumOfTrades",
|
|
122
|
+
"OI",
|
|
123
|
+
"Online",
|
|
91
124
|
"OpenOrders",
|
|
92
125
|
"OpenPositions",
|
|
126
|
+
"OpenStrategy",
|
|
127
|
+
"OptionChain",
|
|
128
|
+
"OptionDesk",
|
|
129
|
+
"OptionDeskActions",
|
|
93
130
|
"Order",
|
|
94
131
|
"OrderBook",
|
|
95
132
|
"OrderBookDepth",
|
|
@@ -98,24 +135,33 @@
|
|
|
98
135
|
"OrderBookView",
|
|
99
136
|
"OrderBookViewDiagonal",
|
|
100
137
|
"OrderBookViewStacked",
|
|
138
|
+
"OrderCount",
|
|
101
139
|
"OrderEntry",
|
|
102
140
|
"OrderQuantity",
|
|
103
141
|
"OrderType",
|
|
104
142
|
"PercentageOfBalance",
|
|
105
143
|
"PnL",
|
|
144
|
+
"PnLChange",
|
|
145
|
+
"PnLChart",
|
|
146
|
+
"Portfolio",
|
|
147
|
+
"Position",
|
|
106
148
|
"Positions",
|
|
107
149
|
"PositionsActions",
|
|
108
150
|
"Price",
|
|
151
|
+
"Put",
|
|
109
152
|
"Qty",
|
|
110
153
|
"Quantity must be <= {0}",
|
|
111
154
|
"Quantity must be >= {0}",
|
|
112
155
|
"Quantity must be a multiple of {0}",
|
|
113
156
|
"Quantity must be positive",
|
|
157
|
+
"RealizedProfit",
|
|
114
158
|
"Refresh",
|
|
115
159
|
"Remove",
|
|
116
160
|
"RemoveOrderbook",
|
|
117
161
|
"Reverse position",
|
|
118
162
|
"Reverse position on {0}",
|
|
163
|
+
"Rho",
|
|
164
|
+
"RiskManagement",
|
|
119
165
|
"SearchInstruments",
|
|
120
166
|
"SellHotkey",
|
|
121
167
|
"ShowAllColumns",
|
|
@@ -124,17 +170,33 @@
|
|
|
124
170
|
"Side",
|
|
125
171
|
"SortAscending",
|
|
126
172
|
"SortDescending",
|
|
173
|
+
"Source",
|
|
127
174
|
"Spread: {0}",
|
|
175
|
+
"Start",
|
|
176
|
+
"Started",
|
|
177
|
+
"Starting",
|
|
178
|
+
"State",
|
|
179
|
+
"Statistics",
|
|
180
|
+
"StatisticsActions",
|
|
181
|
+
"StatisticsList",
|
|
128
182
|
"Status",
|
|
129
183
|
"Stop",
|
|
130
184
|
"Stop price must be a multiple of {0}",
|
|
131
185
|
"Stop price must be positive",
|
|
132
186
|
"StopLimit",
|
|
133
187
|
"StopLoss",
|
|
188
|
+
"Stopped",
|
|
189
|
+
"Stopping",
|
|
134
190
|
"StopPrice",
|
|
191
|
+
"Strategies",
|
|
192
|
+
"StrategiesActions",
|
|
193
|
+
"StrategiesList",
|
|
194
|
+
"Strike",
|
|
135
195
|
"Sym",
|
|
136
196
|
"Symbol",
|
|
137
197
|
"TakeProfit",
|
|
198
|
+
"TheorPrice",
|
|
199
|
+
"Theta",
|
|
138
200
|
"Time",
|
|
139
201
|
"ToggleDepthChart",
|
|
140
202
|
"Total",
|
|
@@ -147,13 +209,20 @@
|
|
|
147
209
|
"TradeHistoryActions",
|
|
148
210
|
"TradeHistoryList",
|
|
149
211
|
"Trades",
|
|
212
|
+
"Trading",
|
|
150
213
|
"Type",
|
|
151
214
|
"Ungroup",
|
|
215
|
+
"UnrealizedProfit",
|
|
152
216
|
"USD",
|
|
153
217
|
"Value",
|
|
218
|
+
"Vega",
|
|
219
|
+
"Verbose",
|
|
220
|
+
"Volume",
|
|
154
221
|
"VWAP",
|
|
222
|
+
"Warnings",
|
|
155
223
|
"Watchlist",
|
|
156
224
|
"WatchlistFilter",
|
|
225
|
+
"Yes",
|
|
157
226
|
"YourOrder"
|
|
158
227
|
]
|
|
159
228
|
}
|