Ejemplo n.º 1
0
        private void FillPanelChain(OptionChain dateChain)
        {
            panelChain.Controls.Clear();
            if (dateChain.Options.Count > 0)
            {
                for (int i = 0; i < _strikes.Length; i++)
                {
                    OptionChainDataPoint  call = dateChain.FindOption(Options.OptionType.Call, _experation, _strikes[i]);
                    OptionChainDataPoint  put  = dateChain.FindOption(Options.OptionType.Put, _experation, _strikes[i]);
                    OptionChainStrikeLine line = new OptionChainStrikeLine(call, put);
                    line.Location = new Point(0, 32 * i);

                    line.CallClicked       += new MouseEventHandler(FireCallClickEvent);
                    line.PutClicked        += new MouseEventHandler(FirePutClickEvent);
                    line.CallDoubleClicked += new MouseEventHandler(FireCallDoubleClickEvent);
                    line.PutDoubleClicked  += new MouseEventHandler(FirePutDoubleClickEvent);
                    line.CallEntered       += new EventHandler(FireCallEnteredEvent);
                    line.PutEntered        += new EventHandler(FirePutEnteredEvent);
                    line.CallMouseUp       += new MouseEventHandler(FireCallMouseUpEvent);
                    line.PutMouseUp        += new MouseEventHandler(FirePutMouseUpEvent);
                    line.CallMouseMove     += new MouseEventHandler(FireCallMouseMoveEvent);
                    line.PutMouseMove      += new MouseEventHandler(FirePutMouseMoveEvent);

                    panelChain.Controls.Add(line);
                }
            }
        }
Ejemplo n.º 2
0
        private void FillLabels(OptionChainDataPoint option, int amount)
        {
            _isFilling = true;
            if (option != null)
            {
                numericUpDownQuantity.Visible = true;
                numericUpDownQuantity.Value   = amount;
                labelDate.Text    = option.Experation.ToString("MMM dd");
                labelDaysOut.Text = (option.Experation - option.DataDate).TotalDays.ToString();
                labelStrike.Text  = option.Strike.ToString();
                labelType.Text    = option.Type.ToString().Substring(0, 1);

                if (amount < 0)
                {
                    labelOrderType.Text      = "STO";
                    labelOrderType.ForeColor = Color.Red;
                }
                else
                {
                    labelOrderType.Text      = "BTO";
                    labelOrderType.ForeColor = Color.Green;
                }
            }
            else
            {
                numericUpDownQuantity.Visible = false;
                labelDate.Text      = "";
                labelDaysOut.Text   = "";
                labelStrike.Text    = "";
                labelType.Text      = "";
                labelOrderType.Text = "";
            }
            _isFilling = false;
        }
Ejemplo n.º 3
0
        public OptionChainStrikeLine(OptionChainDataPoint dataPointCall, OptionChainDataPoint dataPointPut)
        {
            InitializeComponent();
            labelStrike.Text = dataPointCall.Strike.ToString();

            labelVolumeCall.Text       = dataPointCall.Volume.ToString();
            labelAskCall.Text          = dataPointCall.Ask.ToString();
            labelBidCall.Text          = dataPointCall.Bid.ToString();
            labelOpenInterestCall.Text = dataPointCall.OpenInterest.ToString();

            labelVolumePut.Text       = dataPointPut.Volume.ToString();
            labelAskPut.Text          = dataPointPut.Ask.ToString();
            labelBidPut.Text          = dataPointPut.Bid.ToString();
            labelOpenInterestPut.Text = dataPointPut.OpenInterest.ToString();

            Strike     = dataPointCall.Strike;
            Experation = dataPointCall.Experation;
        }
Ejemplo n.º 4
0
            public static Option GetOption(Stock stock, OptionType optionType, PositionType posType, double strike, DateTime experation, DateTime date)
            {
                OptionChain chain = OptionDataBase.Get(stock, date);

                if (chain != null)
                {
                    OptionChainDataPoint option = chain.FindOption(optionType, experation, strike);
                    return(new Option(stock, option.Type, posType, option.Strike, option.Experation));
                }
                else
                {
                    int daysUntilThursday = 4 - (int)experation.DayOfWeek;
                    experation = experation.AddDays(daysUntilThursday);

                    strike = Math.Round(strike, 0);
                    double amountFromTwoFifty = (strike % 2.5) <= (2.5 - strike % 2.5) ? -(strike % 2.5) : (2.5 - strike % 2.5);
                    strike += amountFromTwoFifty;

                    return(new Option(stock, optionType, posType, strike, experation));
                }
            }
Ejemplo n.º 5
0
            public async Task <double> Price(DateTime date)
            {
                double      price = 0;
                OptionChain chain = OptionDataBase.Get(_stock, date);

                if (chain != null)
                {
                    OptionChainDataPoint option = chain.FindOption(_optionType, _expDate, _strike);
                    price = (option.Bid + option.Ask) * 0.5;
                }
                else
                {
                    TimeSpan  updateSpan = DateTime.UtcNow - date;
                    StockData data       = await StockDataBase.Get(_stock, Api.Interval.Daily, updateSpan);

                    int index      = data.FindDateIndex(date);
                    int expiration = DaysUntilExpiration(date);
                    price = Indicators.Options.AproxPrice(data, index, _optionType, _strike, expiration);
                }
                return(price);
            }
Ejemplo n.º 6
0
            public OptionChain Load()
            {
                if (File.Exists(FilePath))
                {
                    string[] fileLines = File.ReadAllLines(FilePath);
                    if (fileLines.Length > 0)
                    {
                        string[]    values   = fileLines[0].Split(',');
                        Stock       stock    = new Stock(values[0]);
                        DateTime    dataDate = DateTime.Parse(values[5]);
                        OptionChain result   = new OptionChain(stock, dataDate);

                        for (int i = 0; i < fileLines.Length; i++)
                        {
                            values = fileLines[i].Split(',');
                            OptionChainDataPoint dataPoint = new OptionChainDataPoint()
                            {
                                Stock        = stock,
                                StockPrice   = Convert.ToDouble(values[1]),
                                Code         = values[2],
                                Type         = Option.ParseType(values[3]),
                                Experation   = DateTime.Parse(values[4]),
                                DataDate     = dataDate,
                                Strike       = Convert.ToDouble(values[6]),
                                Last         = Convert.ToDouble(values[7]),
                                Bid          = Convert.ToDouble(values[8]),
                                Ask          = Convert.ToDouble(values[9]),
                                Volume       = Convert.ToDouble(values[10]),
                                OpenInterest = Convert.ToDouble(values[11])
                            };
                            result.Options.Add(dataPoint);
                        }
                        return(result);
                    }
                }
                return(null);
            }
Ejemplo n.º 7
0
 public void Fill(OptionTrade trade, DateTime dataDate)
 {
     Clear();
     if (trade.Spread.Options[0] != null)
     {
         if (trade.Spread.Options[0].Strike > 0)
         {
             OptionChain          chain   = OptionDataBase.Get(trade.Spread.Stock, dataDate);
             OptionChainDataPoint option1 = chain.FindOption(trade.Spread.Options[0].OptionType, trade.Spread.Options[0].ExpirationDate, trade.Spread.Options[0].Strike);
             if (trade.Spread.Options[0].PositionType == PositionType.Long)
             {
                 orderLineUI1.Fill(option1, trade.Amount);
             }
             else if (trade.Spread.Options[0].PositionType == PositionType.Short)
             {
                 orderLineUI1.Fill(option1, trade.Amount * -1);
             }
         }
     }
     if (trade.Spread.Options[1] != null)
     {
         if (trade.Spread.Options[1].Strike > 0)
         {
             OptionChain          chain   = OptionDataBase.Get(trade.Spread.Stock, dataDate);
             OptionChainDataPoint option1 = chain.FindOption(trade.Spread.Options[1].OptionType, trade.Spread.Options[1].ExpirationDate, trade.Spread.Options[1].Strike);
             if (trade.Spread.Options[1].PositionType == PositionType.Long)
             {
                 orderLineUI2.Fill(option1, trade.Amount);
             }
             else if (trade.Spread.Options[1].PositionType == PositionType.Short)
             {
                 orderLineUI2.Fill(option1, trade.Amount * -1);
             }
         }
     }
 }
Ejemplo n.º 8
0
 public void Fill(OptionChainDataPoint option, int amount)
 {
     FillLabels(option, amount);
 }