using System; using System.Windows.Forms; using TradeIdeas.TIProData.Configuration; using TradeIdeas.TIProData.Interfaces; using TradeIdeas.XML; // General info about moving averages: http://www.silverbearcafe.com/private/moveaverage.html // In particular: // "For a period-based EMA, "Multiplier" is equal to 2 / (1 + N) where N is the specified number of periods." namespace TradeIdeas.TIProGUI { public partial class CompareCountConfig : Form { private IConnectionMaster _connectionMaster; private Settings _settings; //Start location of this when first brought up... private bool _fromScratch = false; public CompareCountConfig(IConnectionMaster connectionMaster, Settings settings, bool fromScratch = false) { _fromScratch = fromScratch; _connectionMaster = connectionMaster; _settings = settings; InitializeComponent(); MinimizeBox = false; this.StartPosition = FormStartPosition.CenterParent; //CompareCount.WindowIconCache.SetIcon(this); Icon = GuiEnvironment.Icon; trackBar1.Value = _settings.SecondsPerDataPoint; updateSpeedLabel(); trackBarThickEMA.Value = (int)(_settings.FastRecentWeight * 100); updateThickEMALabel(); trackBarThinEMA.Value = (int)(_settings.SlowRecentWeight * 100); updateThinEMALabel(); Font = GuiEnvironment.FontSettings; if (_fromScratch) btnOK.Enabled = true; } private void ShowConfigWindow(ref string configString) { ConfigWindowWrapper configWindowWrapper = ConfigWindowWrapper.DefaultFactory(ConfigurationType.Alerts, _connectionMaster); configWindowWrapper.InitialConfig = configString; configWindowWrapper.HideColumns = true; configWindowWrapper.UseCaseName = "CompareCount"; configWindowWrapper.NotAWindow = true; configWindowWrapper.ShowIt(); if (!configWindowWrapper.Canceled) { configString = configWindowWrapper.Strategy.MakeConfigString(); btnOK.Enabled = true; } } private void btnConfigGreen_Click(object sender, EventArgs e) { ShowConfigWindow(ref _settings.BullConfigString); } private void btnConfigRed_Click(object sender, EventArgs e) { ShowConfigWindow(ref _settings.BearConfigString); } private void btnOK_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.OK; } private void btnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } private void btnGreenCollaborate(object sender, EventArgs e) { CollaborateForm form = new CollaborateForm(); form.ConfigString = GuiEnvironment.XmlConfig.Node("ALERT_WINDOW").Node("CONFIG_PREFIX").PropertyForCulture("BASE", "***") + _settings.BullConfigString; form.ShowDialog(this); if (form.DialogResult == System.Windows.Forms.DialogResult.OK) { if (form.ConfigString != "") { _settings.BullConfigString = form.ConfigString; } btnOK.Enabled = true; } form.Dispose(); } private void btnRedCollaborate_Click(object sender, EventArgs e) { CollaborateForm form = new CollaborateForm(); form.ConfigString = GuiEnvironment.XmlConfig.Node("ALERT_WINDOW").Node("CONFIG_PREFIX").PropertyForCulture("BASE", "***") + _settings.BearConfigString; form.ShowDialog(this); if (form.DialogResult == System.Windows.Forms.DialogResult.OK) { if (form.ConfigString != "") { _settings.BearConfigString = form.ConfigString; } btnOK.Enabled = true; } form.Dispose(); } private void trackBar1_Scroll(object sender, EventArgs e) { btnOK.Enabled = true; updateSpeedLabel(); } private void updateSpeedLabel() { int seconds = trackBar1.Value; label3.Text = "One data point every " + seconds.ToString() + " seconds."; _settings.SecondsPerDataPoint = seconds; } private void trackBarThickEMA_Scroll(object sender, EventArgs e) { btnOK.Enabled = true; updateThickEMALabel(); } private void updateThickEMALabel() { int percent = trackBarThickEMA.Value; double fraction = percent / 100.0; label4.Text = getPeriod(fraction) + " periods, " + percent.ToString() + "%"; _settings.FastRecentWeight = fraction; } private void trackBarThinEMA_Scroll(object sender, EventArgs e) { btnOK.Enabled = true; updateThinEMALabel(); } private void updateThinEMALabel() { int percent = trackBarThinEMA.Value; double fraction = percent / 100.0; label7.Text = getPeriod(fraction) + " periods, " + percent.ToString() + "%"; _settings.SlowRecentWeight = fraction; } private double getPeriod(double fraction) { return Math.Round((2 - fraction) / fraction); } } }