public LoadSettingsDialog(TradersSettings sets) : this() { this.sets = sets; tbIntervalMs.Text = sets.PayloadSets.SleepInterval.ToString(); tbThreadsCount.Text = sets.PayloadSets.TradersCount.ToString(); tbPropOfPlacingOrder.Text = sets.PayloadSets.RequestPerIterationProb.ToStringDefault(); tbPayloadSinusPeriodMs.Text = sets.PayloadSets.SinusoidPeriodMs.ToStringDefault(); tbFadeInPeriod.Text = sets.PayloadSets.FadingInSeconds.ToStringDefault(); tbStairsCount.Text = sets.PayloadSets.StepsCount.ToStringDefault(); tbStairInterval.Text = sets.PayloadSets.SecondsPerStep.ToStringDefault(); if (sets.PayloadSets.Mode == PayloadSettingsMode.Even) { tbDistrEven.Checked = true; } else if (sets.PayloadSets.Mode == PayloadSettingsMode.Sinusoidal) { tbDistrSinus.Checked = true; } else if (sets.PayloadSets.Mode == PayloadSettingsMode.FadeIn) { tbModeFadeIn.Checked = true; } else if (sets.PayloadSets.Mode == PayloadSettingsMode.Stairs) { tbModeStairsUp.Checked = true; } else { tbModeStairsDown.Checked = true; } }
private void btnTradingSets_Click(object sender, EventArgs e) { var sets = TradersSettings.ReadSettings(); var dlg = new TradingSettingsDialog(sets); dlg.ShowDialog(); }
public static SettingsPreset GetPresetByIndex(int index) { var defSets = TradersSettings.ReadSettings(); var presetType = Presets[index].GetType(); return((SettingsPreset)presetType.GetConstructor(new[] { typeof(TradersSettings) }).Invoke(new object[] { defSets })); }
public StairsPreset(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 8; Title = "The Load level increases step by step"; Description = "The price is fixed.\n" + "The Load level increases every 5 seconds. In total there are 8 steps.\n" + "Load level settings affect the maximum number of traders (threads) and the minimum interval between placing orders."; }
public SetupStrategiesDialog(TradersSettings settings) : this() { this.settings = settings; tbShotIterations.Text = settings.TradeSets.RequestsBeforeGrabTheBook.ToStringDefault(); tbShotProbOfTake.Text = settings.TradeSets.ProbOfGrabTheBook.ToStringDefault(); tbMMActionInterval.Text = settings.TradeSets.MilisecondsBeforUpdateMMLevels.ToStringDefault(); tbMMOrdersCount.Text = settings.TradeSets.MarketLevelsCount.ToStringDefault(); tbMMlotsPerOrder.Text = settings.TradeSets.MarketMakerOrderLots.ToStringDefault(); }
public SinusoidalPreset(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 6; Title = "Change the Load by a sinusoid"; Description = "The price changes according to the sinusoid.\n" + "The Load level changes according to the sinusoid.\n" + "Load level settings affect the maximum number of traders (threads) and the minimum interval between placing orders."; }
public MakerTakerEven(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 3; Title = "Traders and market maker"; Description = "A number of traders who place order at the market price make a deals with one or two market makers.\n\n" + "The price changes according to the sinusoid.\n" + "The Load level value does not change in time.\n" + "Load level settings affects the number of traders (threads) and the interval between placing orders."; }
public SimpleFadeInPreset(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 4; Title = "Growing the Load level"; Description = "A simple case with growing TPS value.\n\n" + "The price is fixed.\n" + "The Load level grows to the maximum value.\n" + "Load level settings affect the maximum number of traders (threads) and the minimum interval between placing orders."; }
public override TradersSettings Build(int payload) { var sets = new TradersSettings { PricingSets = new TradersSettings.PricingSettings { PricingMode = PricingSettingsMode.Fixed }, MoneyManagementSets = new TradersSettings.MoneyManagementSettings { Tickers = defaultSettings.MoneyManagementSets.Tickers.ToList(), FixedTickerIndex = 0, LotsMax = 20, LotsMin = 10, TradeRandomTicker = false }, TradeSets = new TradersSettings.TradeSettings { MakersCount = 0, OneShotTradersCount = 0, ProbOfNewOrder = 70, ProbOfMassCancel = 15, ProbOfCancelOrder = 15, ProbErrorRequest = 0 }, PayloadSets = new TradersSettings.PayloadSettings { Mode = PayloadSettingsMode.Stairs, RequestPerIterationProb = 100, StepsCount = 8, SecondsPerStep = 5 } }; defaultSettings.CopyCommonSettingsToTarget(sets); var paySets = sets.PayloadSets; if (payload < 4) { paySets.TradersCount = payload * 8; paySets.SleepInterval = 20; } else if (payload < 7) { paySets.TradersCount = payload * 10; paySets.SleepInterval = 7; } else { paySets.TradersCount = payload * 12; paySets.SleepInterval = 5; } return(sets); }
public override TradersSettings Build(int payload) { var sets = new TradersSettings { PricingSets = new TradersSettings.PricingSettings { PricingMode = PricingSettingsMode.Sinusoidal, SinusAmplitudePercent = 1.5m, SinusPeriodMs = 1000 * 10 }, MoneyManagementSets = new TradersSettings.MoneyManagementSettings { Tickers = defaultSettings.MoneyManagementSets.Tickers.ToList(), FixedTickerIndex = 0, LotsMax = 10, LotsMin = 10, TradeRandomTicker = false }, TradeSets = new TradersSettings.TradeSettings { MakersCount = 1, OneShotTradersCount = 0, ProbOfNewOrder = 70, ProbOfMassCancel = 15, ProbOfCancelOrder = 15, ProbErrorRequest = 5, MarketMakerOrderLots = 200, MarketLevelsCount = 4, MilisecondsBeforUpdateMMLevels = 1000 }, PayloadSets = new TradersSettings.PayloadSettings { Mode = PayloadSettingsMode.Even, RequestPerIterationProb = 100 } }; defaultSettings.CopyCommonSettingsToTarget(sets); var paySets = sets.PayloadSets; if (payload < 4) { paySets.TradersCount = payload * 5; paySets.SleepInterval = 30; } else { sets.TradeSets.MakersCount = 2; paySets.TradersCount = payload * 10; paySets.SleepInterval = 7; } return(sets); }
public OneShotPreset(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 5; Title = "One-shot trader"; Description = "A number of traders place orders randomly at the market price. " + "One-shot trader places a \"superorder\", that takes all placed orders.\n\n" + "The price changes according to the sinusoid.\n" + "The Load level value does not change in time.\n" + "Load level settings affect the number of traders (threads) and the interval between placing orders."; }
public TakerPoolPreset(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 2; Title = "Traders only"; Description = "A simple case. A number of traders who place order at the exact market price " + "make a deals with each other.\n\n" + "The price is fixed.\n" + "The Load level value does not change in time.\n" + "Load level settings affect the number of traders (threads) and the interval between placing orders."; }
public SlowLoadGrowthPreset(TradersSettings defaultSettings) { this.defaultSettings = defaultSettings; ImageIndex = 7; Title = "Changing the price and growing the Load level"; Description = "A number of traders grows constantly" + "but intervals between placing orders slowly shorten in time.\n\n" + "The price changes according to the sinusoid.\n" + "The Load level grows to the maximum value.\n" + "Load level settings affect the maximum number of traders (threads) and the minimum interval between placing orders."; }
public MoneyManagementDialog() { InitializeComponent(); settings = TradersSettings.ReadSettings(); tbContracts.Text = JsonConvert.SerializeObject(settings.MoneyManagementSets.Tickers, Formatting.Indented); cbTradeRandomContract.Checked = settings.MoneyManagementSets.TradeRandomTicker; tbFixedContractId.Text = settings.MoneyManagementSets.FixedTickerIndex.ToString(); tbLotsMin.Text = settings.MoneyManagementSets.LotsMin.ToStringDefault(); tbLotsMax.Text = settings.MoneyManagementSets.LotsMax.ToStringDefault(); ControlsValidation.SetupErrorProvider(out tbLotsMinErrorProvider, tbLotsMin); ControlsValidation.SetupErrorProvider(out tbLotsMaxErrorProvider, tbLotsMax); }
public override TradersSettings Build(int payload) { var sets = new TradersSettings { PricingSets = new TradersSettings.PricingSettings { PricingMode = PricingSettingsMode.Sinusoidal, SinusPeriodMs = 2, SinusAmplitudePercent = 1 }, MoneyManagementSets = new TradersSettings.MoneyManagementSettings { Tickers = defaultSettings.MoneyManagementSets.Tickers.ToList(), FixedTickerIndex = 0, LotsMax = 20, LotsMin = 10, TradeRandomTicker = false }, TradeSets = new TradersSettings.TradeSettings { MakersCount = 0, OneShotTradersCount = 0, ProbOfNewOrder = 70, ProbOfMassCancel = 15, ProbOfCancelOrder = 15, ProbErrorRequest = 5 }, PayloadSets = new TradersSettings.PayloadSettings { Mode = PayloadSettingsMode.FadeIn, FadingInSeconds = 60, RequestPerIterationProb = 100 } }; defaultSettings.CopyCommonSettingsToTarget(sets); var paySets = sets.PayloadSets; if (payload < 4) { paySets.TradersCount = payload * 15; paySets.SleepInterval = 20; } else { paySets.TradersCount = payload * 18; paySets.SleepInterval = 5; } return(sets); }
public PricingSettingsDialog(TradersSettings sets) : this() { this.sets = sets; tbAmplitude.Text = sets.PricingSets.SinusAmplitudePercent.ToStringDefault(); cbSinusPeriod.Text = sets.PricingSets.SinusPeriodMs.ToStringDefault(); if (sets.PricingSets.PricingMode == PricingSettingsMode.Fixed) { rbPriceFixed.Checked = true; } else if (sets.PricingSets.PricingMode == PricingSettingsMode.Sinusoidal) { rbPriceSinusoidal.Checked = true; } }
/// <summary> /// set up predefined test scenarios' buttons /// </summary> private void SetupPresets() { var defSets = TradersSettings.ReadSettings(); SettingsPreset.Presets = new SettingsPreset[] { new TakerPoolPreset(defSets), new MakerTakerEven(defSets), new SimpleFadeInPreset(defSets), new OneShotPreset(defSets), new SinusoidalPreset(defSets), new SlowLoadGrowthPreset(defSets), new StairsPreset(defSets), new StairsDownPreset(defSets) }; presetButtons = new List <Button> { btnPreset01, btnPreset02, btnPreset03, btnPreset04, btnPreset05, btnPreset06, btnPreset07, btnPreset08 }; for (var i = 0; i < presetButtons.Count; i++) { var preset = SettingsPreset.Presets[i]; presetButtons[i].Tag = i; presetButtons[i].ImageIndex = preset.ImageIndex; toolTip.SetToolTip(presetButtons[i], preset.Description); // setup and run the test on the button's click presetButtons[i].Click += (sender, args) => { if (pool != null) { return; } var presetIndex = (int)((Button)sender).Tag; var dlg = new PresetDialog(SettingsPreset.GetPresetByIndex(presetIndex)); if (dlg.ShowDialog() != DialogResult.OK) { return; } StartTest(); }; } toolTip.SetToolTip(btnStop, "Stop the test"); toolTip.SetToolTip(btnManTest, "Manually set up and start a test"); }
public CommonSettingsDialog() { InitializeComponent(); settings = TradersSettings.ReadSettings(); var logTypes = Enum.GetValues(typeof(LoggingLevel)).Cast <object>().ToArray(); cbLoggingLevel.Items.AddRange(logTypes); cbLoggingLevel.SelectedItem = settings.LoggingLevel; cbSaveServersStat.Checked = settings.LogServerStatistics; tbStatTimeframe.Text = settings.StatisticsTimeframeSeconds.ToStringDefault(); tbTestDuration.Text = settings.TestDurationSeconds.ToStringDefault(); ControlsValidation.SetupErrorProvider(out tbStatTimeframeErrorProvider, tbStatTimeframe); }
public void TestPeriod() { var sets = new TradersSettings { PayloadSets = new TradersSettings.PayloadSettings { SinusoidPeriodMs = 5000, SleepInterval = 20 } }; var calc = new SinusoidPayloadCalculator(sets); var a = calc.GetNextInterval(); Thread.Sleep(200); var b = calc.GetNextInterval(); Assert.AreNotEqual(a, b); }
/// <summary> /// show the connection's settings dialog /// and apply the settings provided by the user /// </summary> private void btnSetupConnection_Click(object sender, EventArgs e) { if (pool != null) { return; } var sets = TradersSettings.ReadSettings(); var dlg = new ConnectionSettingsDialog { MatchingURI = sets.Uri, StatusURI = sets.StatUri }; dlg.ShowDialog(); if (dlg.DialogResult != DialogResult.OK) { return; } sets.Uri = dlg.MatchingURI; sets.StatUri = dlg.StatusURI; sets.SaveSettings(); }
public TradingSettingsDialog(TradersSettings sets) : this() { this.sets = sets; tbRandomPercNew.Text = sets.TradeSets.ProbOfNewOrder.ToStringDefault(); tbRandomPercCancel.Text = sets.TradeSets.ProbOfCancelOrder.ToStringDefault(); int randomPercCancel = 0; if (int.TryParse(sets.TradeSets.ProbOfCancelOrder.ToStringDefault(), out randomPercCancel)) { trbRandomPercCancel.Value = randomPercCancel; } tbRandomPercMass.Text = sets.TradeSets.ProbOfMassCancel.ToStringDefault(); int randomPercMass = 0; if (int.TryParse(sets.TradeSets.ProbOfMassCancel.ToStringDefault(), out randomPercMass)) { trbRandomPercMass.Value = randomPercMass; } tbErrorReqPerc.Text = sets.TradeSets.ProbErrorRequest.ToStringDefault(); tbMakersCount.Text = sets.TradeSets.MakersCount.ToStringDefault(); tbOneShotCount.Text = sets.TradeSets.OneShotTradersCount.ToStringDefault(); }
public Statistics(TradersSettings settings) { this.settings = settings; timeframeSeconds = settings.StatisticsTimeframeSeconds; }