Exemple #1
0
        public CloudSTOPanel()
        {
            var panel = new QDockPanel();

            Content      = panel;
            Loaded      += initialize;
            instanceGrid = new QDataTableGrid(loadInstanceRow, unloadInstanceRow);
            var controls = new QDockPanel();

            systemIdBox = new QComboBox("-1", resetInstanceId, true)
            {
                MinWidth = 80, IsTextSearchEnabled = true, IsSynchronizedWithCurrentItem = false
            };
            controls.add(systemIdBox, Dock.Left);
            var grid = new QGrid();

            grid.addColumns(4);
            instancesLabel = label("");
            grid.add(instancesLabel, 0);
            redGreenLabel = label("");
            grid.add(redGreenLabel, 1);
            summaryLabel = label("");
            grid.add(summaryLabel, 2);
            completionTimeLabel = label("");
            grid.add(completionTimeLabel, 3);
            controls.add(grid, Dock.Left);
            controls.add(new QButton("Refresh System Ids", refreshSystemIds), Dock.Left);
            panel.add(controls, Dock.Top);
            panel.add(instanceGrid, Dock.Top);
            LogC.info("starting cloud STO tracker");
            tracker = new CloudSTOTracker(this);
        }
Exemple #2
0
        object runSetupControls()
        {
            var grid = new QGrid();

            grid.addColumn(150); // name
            grid.addColumn(100); // load
            grid.addColumn(100); // save
            grid.addColumn(20);
            grid.addColumn(115); // system id // take 20 or 30 or 40
            grid.addColumn(115); // run number // take same amount as system id
            grid.addColumn(100); // load system
            grid.addColumn(20);
            grid.addColumn(150); //startDate
            grid.addColumn(150); // end Date
            grid.addColumn(10);
            grid.addColumn(90);  // Plots checkbox
            grid.addColumn(10);
            grid.addColumn(80);  // run button (historical)
            grid.addColumn(60);  // live button // word Live is about 25 so 30 + border 10 + 20 for checkbox need 90
            grid.add(withLabel("Name:", nameBox), 0);
            grid.add(loadButton, 1);
            grid.add(saveButton, 2);
            grid.add(withLabel("System ID", idBox), 4);
            numberBoxWithLabel           = withLabel("RunNumber", numberBox);
            numberBoxWithLabel.IsEnabled = false;
            grid.add(numberBoxWithLabel, 5);
            grid.add(loadSystemButton, 6);
            grid.add(withLabel("Start Date:", startDatePicker), 8);
            grid.add(withLabel("End Date:", endDatePicker), 9);
            grid.add(showPlots, 11);
            grid.add(runButton, 13);
            grid.add(liveButton, 14);
            return(grid);
        }
Exemple #3
0
        public FerretPanel()
        {
            control = new FerretControl(this, FerretControl.incomingStatus());
            var grid = new QGrid();

            Content = grid;
            grid.addColumns(4);

            statusLabel = new Label {
                Content = "Currently in Unknown mode", FontSize = 24, VerticalAlignment = VerticalAlignment.Center
            };
            dma = new QButton("DMA", () => control.onButtonPressed("DMA"))
            {
                Background = Brushes.SpringGreen, HorizontalAlignment = HorizontalAlignment.Stretch, MinWidth = 250, FontSize = 24, IsEnabled = false
            };
            ticket = new QButton("Ticket", () => control.onButtonPressed("Ticket"))
            {
                Background = Brushes.Yellow, HorizontalAlignment = HorizontalAlignment.Stretch, MinWidth = 250, FontSize = 24, IsEnabled = false
            };
            staged = new QButton("Stage", () => control.onButtonPressed("Stage"))
            {
                Background = Brushes.Red, HorizontalAlignment = HorizontalAlignment.Stretch, MinWidth = 250, FontSize = 24, IsEnabled = false
            };

            grid.add(statusLabel, 0);
            grid.add(dma, 1);
            grid.add(ticket, 2);
            grid.add(staged, 3);
        }
Exemple #4
0
        public StatusMapPanel()
        {
            var panel = downPanel();

            model   = new StatusTreeMap(this);
            treeMap = new QTreeMap(model);
            Content = panel;
            var controlGrid = new QGrid();

            ResizingPanel.SetResizeHeight(controlGrid, 23);
            controlGrid.addColumn(1, GridUnitType.Star);
            controlGrid.addColumn(1, GridUnitType.Star);
            controlGrid.addColumn(7, GridUnitType.Star);
            controlGrid.add(new QCheckBox("Equal Size Boxes", true, selected => { model.setIsEqualSizes(selected); treeMap.updateGuiNodes(); })
            {
                VerticalAlignment = VerticalAlignment.Center
            }, 0);
            var refershBox = new QComboBox("5", refreshRate => treeMap.setRefreshRate(int.Parse(refreshRate) * 1000))
            {
                Height = 20
            };

            controlGrid.add(withLabel("Refresh Rate (sec): ", refershBox), 1);
            refershBox.populateWithFirst("1", O.list("3", "5", "10", "30", "60"), false);
            panel.Children.Add(controlGrid);
            panel.Children.Add(treeMap);
            refreshContextMenus();
        }
Exemple #5
0
        void Start()
        {
            StartPosistion = transform.position;
            _game          = FindObjectOfType <PongGame>();
            _ball          = FindObjectOfType <PongBall>();
            if (Side == Player.Player1)
            {
                _grid = new QGrid(16, transform,
                                  new GridSettings {
                    Offset = new Vector3(9.8f, 0, 0), ResolutionX = 1.28f, ResolutionY = 1.28f
                });
                _vect = Vector <float> .Build.Dense(new[] { 1f });

                QAIManager.InitAgent(this, new QOption {
                    LearningRate = 0.005f,
                    NetworkArgs  = new [] { new CNNArgs {
                                                FilterSize = 4, FilterCount = 1, PoolLayerSize = 2, Stride = 2
                                            } },
                    MaxPoolSize      = 2000,
                    BatchSize        = 2000,
                    EpsilonStart     = 0.5f,
                    EpsilonEnd       = 0.1f,
                    Discount         = 0.95f,
                    TrainingInterval = 20,
                    TrainingCycle    = 10,
                });

                if (QAIManager.CurrentMode == QAIMode.Learning || QAIManager.CurrentMode == QAIMode.Testing)
                {
                    Time.timeScale = 5f;
                }
            }
            StartCoroutine(Movement());
        }
Exemple #6
0
 private void SetGridValues(QGrid grid, IEnumerable <Coordinates?> coords, float value)
 {
     foreach (var coord in coords.Where(c => c.HasValue).Select(c => c.Value))
     {
         grid[coord] = value;
     }
 }
Exemple #7
0
        object setupControls()
        {
            var grid = new QGrid();

            grid.addColumn(115); // system id // take 20 or 30 or 40
            grid.addColumn(150); // market
            grid.add(withLabel("System ID", idBox), 0);
            grid.add(withLabel("Market", marketBox), 1);
            return(grid);
        }
Exemple #8
0
            public ReconPanel()
            {
                Producer <string> buttonText = () => "set LOG__VERBOSE " + (Log.verbose() ? "off" : "on");

                QButton[] verboseButton = { null };
                verboseButton[0] = new QButton(buttonText(), () => {
                    bool newVerbose;
                    LogC.flipVerbose(out newVerbose);
                    runOnGuiThread(() => verboseButton[0].setText(buttonText()));
                })
                {
                    HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Width = 250
                };
                var dockPanel = new QDockPanel {
                    LastChildFill = false
                };

                Content = dockPanel;
                dockPanel.add(verboseButton[0], Dock.Top);

                var executionConfigurationGrid = new QGrid {
                    Height = 25
                };

                dockPanel.add(executionConfigurationGrid, Dock.Top);
                O.zeroTo(4, i => executionConfigurationGrid.addColumn(200));
                var platformBox = new TextBox();
                var routeBox    = new TextBox();
                var typeBox     = new QComboBox("Future", selected => {
                    var config       = ExecutionConfigurationTable.currentConfiguration(selected);
                    platformBox.Text = config.platform();
                    routeBox.Text    = config.route();
                }, O.list("Equity"));

                executionConfigurationGrid.add(typeBox, 0);
                executionConfigurationGrid.add(withLabel("Platform", platformBox), 1);
                executionConfigurationGrid.add(withLabel("Route", routeBox), 2);
                executionConfigurationGrid.add(new QButton("Set Current Execution Configuration", () => {
                    var type     = typeBox.selected("NA");
                    var platform = platformBox.Text;
                    var route    = routeBox.Text;
                    ExecutionConfigurationTable.CONFIG.insert(type, platform, route);
                    Db.commit();
                    Email.notification("Execution Configuration Changed for " + type + ": " + platform + ", " + route, "").sendTo("team");
                    alertUser("Configuration changed for " + type + " - don't forget to restart systems to pick up the change.");
                })
                {
                    Width = 200
                }, 3);
            }
Exemple #9
0
        private void Start()
        {
            _grid = new QGrid(13, transform, new GridSettings {
                NormalAxis = Axis.Y
            });
            _linearState = Vector <float> .Build.Dense(2);

            _history = new LinkedList <QState>();
            QAIManager.InitAgent(this, new QOption {
                NetworkArgs = new [] { new CNNArgs {
                                           FilterCount = 1, FilterSize = 1, PoolLayerSize = 1, Stride = 1
                                       } }
            });
        }
Exemple #10
0
        UIElement filterPanel()
        {
            var result = new QGrid {
                Height = 25
            };

            result.addColumn(200);
            result.addColumn(100);
            result.addColumn(100);
            result.add(new QComboBox("ALL", selected => watcher.setTagFilter(selected), O.list <string>(BloombergTagsTable.TAGS.C_TAG.distinct(Clause.TRUE))));
            result.add(new QCheckBox("Show Zeros", false, setting => watcher.setFilterZeroes(!setting)), 1);
            result.add(new QCheckBox("Show Hidden", false, setting => watcher.setShowHidden(setting)), 2);
            return(result);
        }
Exemple #11
0
        UIElement comboBoxPanel()
        {
            var comboBoxes = new QGrid {
                Height = 25
            };

            comboBoxes.addColumns(6);
            comboBoxes.add(withLabel("_System:", systemBox), 0);
            comboBoxes.add(withLabel("_Pv:", pvBox), 1);
            comboBoxes.add(withLabel("_Market:", marketBox), 2);
            comboBoxes.add(new QButton("Subscribe", subscribeButtonClicked)
            {
                HorizontalAlignment = HorizontalAlignment.Left
            }, 3);
            comboBoxes.add(withLabel("_Filter:", filterBox), 4);
            return(comboBoxes);
        }
Exemple #12
0
        void addTradesTab(Simulator simulator, ItemsControl charts, IEnumerable <Trade> trades)
        {
            var dataGrid = new QDataTableGrid();
            var table    = new QDataTable {
                { "symbol", typeof(string) },
                { "time", typeof(DateTime) },
                { "description", typeof(string) },
                { "direction", typeof(string) },
                { "size", typeof(int) },
                { "price", typeof(double) },
                { "details", typeof(string) },
                { "fxRate", typeof(double) }
            };
            var panel = new QDockPanel();

            charts.Items.Add(new DockableContent {
                Title = title("Trades"), Content = panel
            });
            var controlGrid = new QGrid();

            controlGrid.addColumns(2);
            controlGrid.add(withLabel("S_ymbol", new QComboBox("ALL", selected => table.filter("symbol", selected), markets())), 0);
            controlGrid.add(withLabel("_Direction", new QComboBox("ALL", selected => table.filter("direction", selected), Objects.list("buy", "sell"))), 1);
            panel.add(controlGrid, Dock.Top);
            panel.add(dataGrid, Dock.Bottom);
            Converter <Trade, DataRow> newTradeRow = trade => {
                var row = table.NewRow();
                row["symbol"]      = trade.order().symbol.name;
                row["time"]        = trade.time;
                row["description"] = trade.description;
                row["direction"]   = trade.direction.longShort("buy", "sell");
                row["size"]        = trade.size;
                row["price"]       = trade.price;
                row["details"]     = "        " + trade.order().details;
                row["fxRate"]      = trade.fxRate;
                return(row);
            };

            Objects.each(Objects.reverse(trades), trade => table.add(newTradeRow(trade)));
            dataGrid.populateFromDataTable(table);
            dataGrid.AutoGeneratedColumns += rightJustifyColumns;
            simulator.addNewTradeListener((position, trade) => runOnGuiThread(() => table.addAtStart(newTradeRow(trade))));
        }
Exemple #13
0
    // Use this for initialization
    void Start()
    {
        GetComponentInChildren <SpriteRenderer>().shadowCastingMode = ShadowCastingMode.On;
        _onTrack           = true;
        _distanceTravelled = StartPosition;
        Track.GetPointAtDistance(_distanceTravelled);
        _grid = new QGrid(16, transform, new GridSettings {
            Offset = Vector3.up * 5.2f
        });
        _vector = Vector <float> .Build.Dense(10, 0);

        _velocityBin = new Bin(0.01f, 0.25f, 0.5f, 75f);
        _forceBin    = new Bin(0.01f, 0.25f, 0.5f, 75f);

        var options = new QOption {
            Discretize       = false,
            MaxPoolSize      = 2000,
            BatchSize        = 2000,
            EpsilonStart     = 0.7f,
            Discount         = 0.8f,
            TrainingInterval = 50,
            NetworkArgs      = new [] { new CNNArgs {
                                            FilterSize = 4, FilterCount = 1, PoolLayerSize = 2, Stride = 2
                                        } }
        };

        options.Discretize = false;

//		if(AiControlled || QAIManager.CurrentMode == QAIMode.Imitating) {
        QAIManager.InitAgent(this, options);
        if (QAIManager.CurrentMode == QAIMode.Learning)
        {
            Time.timeScale = 2.0f;
        }
//		}
        StartCoroutine(Spas());
    }
Exemple #14
0
        void addPositionsTab(Researcher researcher, ItemsControl charts)
        {
            var simulator     = researcher.simulator;
            var positionsPane = new DockablePane();
            var dataGrid      = new QDataTableGrid();
            var table         = new QDataTable("symbol", "entryTime", "exitTime", "direction")
            {
                { "initialSize", typeof(int) },
                { "pnl", typeof(double) },
                { "barsHeld", typeof(int) },
                { "numTrades", typeof(int) },
                { "positionHIDDEN", typeof(Position) }
            };
            var panel = new QDockPanel();

            positionsPane.Items.Add(new DockableContent {
                Title = title("Position List"), Content = panel
            });
            charts.Items.Add(new DockableContent {
                Title = title("Positions"), Content = positionsPane
            });
            var controlGrid = new QGrid();

            controlGrid.addColumns(3);
            controlGrid.add(withLabel("S_ymbol", new QComboBox("ALL", selected => table.filter("symbol", selected), markets())), 0);
            controlGrid.add(withLabel("_Direction", new QComboBox("ALL", selected => table.filter("direction", selected), Objects.list("long", "short"))), 1);
            controlGrid.add(withLabel("_P&L", new QComboBox("ALL", selected => table.filter <double>("pnl", value => pnlMatchesSelection(selected, value)), Objects.list("winning", "losing"))), 2);
            panel.add(controlGrid, Dock.Top);
            panel.add(dataGrid, Dock.Bottom);

            Action <DataRow, Position> updateRow = (row, position) => {
                row["symbol"]         = position.symbol.name;
                row["entryTime"]      = Objects.ymdHuman(position.entry().time);
                row["exitTime"]       = position.isClosed() ? Objects.ymdHuman(position.exitTrade().time) : "Open";
                row["direction"]      = position.entry().direction.ToString();
                row["initialSize"]    = position.entry().size;
                row["pnl"]            = position.isClosed() ? position.pnl(true, simulator.runInNativeCurrency()) : simulator.pnlForPosition(position);
                row["barsHeld"]       = position.barsHeld();
                row["numTrades"]      = position.trades().Count;
                row["positionHIDDEN"] = position;
            };
            Converter <Position, DataRow> newRow = position => {
                var row = table.NewRow();
                updateRow(row, position);
                return(row);
            };

            Objects.each(Objects.reverse(researcher.positions), position => table.add(newRow(position)));
            dataGrid.populateFromDataTable(table);
            dataGrid.AutoGeneratedColumns += rightJustifyColumns;
            simulator.addNewTradeListener((position, trade) => runOnGuiThread(() => {
                if (position.isEntry(trade))
                {
                    table.addAtStart(newRow(position));
                }
                else
                {
                    updateRow(table.firstRow("positionHIDDEN", position), position);
                }
            }));
            addFilteredHistogram(positionsPane, table, "Average P&L (Bar To End)", new TradePathHistogramControl(researcher, true, true));
            addFilteredHistogram(positionsPane, table, "Cumulative P&L (Bar To End)", new TradePathHistogramControl(researcher, false, true));
            addFilteredHistogram(positionsPane, table, "Average P&L (Start To Bar)", new TradePathHistogramControl(researcher, true, false));
            addFilteredHistogram(positionsPane, table, "Cumulative P&L (Start To Bar)", new TradePathHistogramControl(researcher, false, false));
            addFilteredHistogram(positionsPane, table, "Pnl Distribution", new PositionHistogramControl(researcher, position => position.pnl(true, researcher.simulator.runInNativeCurrency())));
            addFilteredHistogram(positionsPane, table, "Entry Size Distribution", new PositionHistogramControl(researcher, position => Objects.first(position.trades()).size));
            addFilteredHistogram(positionsPane, table, "Bars Held Distribution", new PositionHistogramControl(researcher, position => position.barsHeld()));
        }