Exemple #1
0
        /// <summary>
        /// Shows current position on the status bar.
        /// </summary>
        void ShowCurrentPosition(bool showInJournal)
        {
            if (!Data.IsConnected)
            {
                SetPositionInfoText(null, String.Empty);
                return;
            }

            string       format = Data.FF;
            string       text   = Language.T("Square");
            JournalIcons icon   = JournalIcons.PosSquare;
            Image        img    = Properties.Resources.pos_square;

            if (Data.PositionTicket > 0)
            {
                img  = (Data.PositionType == 0 ? Properties.Resources.pos_buy : Properties.Resources.pos_sell);
                icon = (Data.PositionType == 0 ? JournalIcons.PosBuy : JournalIcons.PosSell);
                text = string.Format((Data.PositionType == 0 ? Language.T("Long") : Language.T("Short")) + " {0} " +
                                     (Data.PositionLots == 1 ? Language.T("lot") : Language.T("lots")) + " " + Language.T("at") + " {1}, " +
                                     Language.T("Stop Loss") + " {2}, " + Language.T("Take Profit") + " {3}, " + Language.T("Profit") +
                                     " {4} " + Data.AccountCurrency, Data.PositionLots, Data.PositionOpenPrice.ToString(format),
                                     Data.PositionStopLoss.ToString(format), Data.PositionTakeProfit.ToString(format), Data.PositionProfit.ToString("F2"));
            }

            SetPositionInfoText(img, text);

            if (showInJournal)
            {
                JournalMessage jmsg = new JournalMessage(icon, DateTime.Now, string.Format(Data.Symbol + " " + Data.PeriodMTStr + " " + text));
                AppendJournalMessage(jmsg);
            }

            return;
        }
Exemple #2
0
 public JournalMessage(JournalIcons icon, DateTime time, string message)
 {
     Icon    = icon;
     Time    = time;
     Message = message;
 }
Exemple #3
0
        /// <summary>
        /// Copies data to Data and calculates.
        /// </summary>
        void SetDataAndCalculate(string symbol, MT4Bridge.PeriodType period, DateTime time, bool isPriceChange, bool isUpdateData)
        {
            lock (lockerDataFeed)
            {
                bool isUpdateChart = isUpdateData;

                MT4Bridge.Bars bars = bridge.GetBars(symbol, period);

                if (bars == null && JournalShowSystemMessages)
                {
                    isSetRootDataError = true;
                    Data.SoundError.Play();
                    JournalMessage jmsg = new JournalMessage(JournalIcons.Error, DateTime.Now,
                                                             symbol + " " + period.ToString() + " " + Language.T("Cannot receive bars!"));
                    AppendJournalMessage(jmsg);
                    return;
                }
                if (bars.Count < MaxBarsCount((int)period) && JournalShowSystemMessages)
                {
                    isSetRootDataError = true;
                    Data.SoundError.Play();
                    JournalMessage jmsg = new JournalMessage(JournalIcons.Error, DateTime.Now,
                                                             symbol + " " + period.ToString() + " " + Language.T("Cannot receive enough bars!"));
                    AppendJournalMessage(jmsg);
                    return;
                }
                if (isSetRootDataError && JournalShowSystemMessages)
                {
                    isSetRootDataError = false;
                    JournalMessage jmsg = new JournalMessage(JournalIcons.Information, DateTime.Now,
                                                             symbol + " " + period.ToString() + " " + Language.T("Enough bars received!"));
                    AppendJournalMessage(jmsg);
                }

                int countBars = bars.Count;

                if (countBars < 400)
                {
                    return;
                }

                if (Data.Bars != countBars || Data.Time[countBars - 1] != bars.Time[countBars - 1] ||
                    Data.Volume[countBars - 1] != bars.Volume[countBars - 1] || Data.Close[countBars - 1] != bars.Close[countBars - 1])
                {
                    if (Data.Bars == countBars && Data.Time[countBars - 1] == bars.Time[countBars - 1] && Data.Time[countBars - 10] == bars.Time[countBars - 10])
                    {   // Update the last bar only.
                        Data.Open  [countBars - 1] = bars.Open  [countBars - 1];
                        Data.High  [countBars - 1] = bars.High  [countBars - 1];
                        Data.Low   [countBars - 1] = bars.Low   [countBars - 1];
                        Data.Close [countBars - 1] = bars.Close [countBars - 1];
                        Data.Volume[countBars - 1] = bars.Volume[countBars - 1];
                    }
                    else
                    {   // Update all the bars.
                        Data.Bars   = countBars;
                        Data.Time   = new DateTime[countBars];
                        Data.Open   = new double[countBars];
                        Data.High   = new double[countBars];
                        Data.Low    = new double[countBars];
                        Data.Close  = new double[countBars];
                        Data.Volume = new int[countBars];
                        bars.Time.CopyTo(Data.Time, 0);
                        bars.Open.CopyTo(Data.Open, 0);
                        bars.High.CopyTo(Data.High, 0);
                        bars.Low.CopyTo(Data.Low, 0);
                        bars.Close.CopyTo(Data.Close, 0);
                        bars.Volume.CopyTo(Data.Volume, 0);
                    }

                    // Calculate the strategy indicators.
                    CalculateStrategy(true);
                    isUpdateChart = true;
                }

                bool isBarChanged = IsBarChanged(Data.Time[Data.Bars - 1]);

                if (isTrading)
                {
                    TickType tickType = GetTickType((DataPeriods)(int)period, Data.Time[Data.Bars - 1], time, Data.Volume[Data.Bars - 1]);

                    if (tickType == TickType.Close || isPriceChange || isBarChanged)
                    {
                        if (JournalShowSystemMessages && tickType != TickType.Regular)
                        {
                            JournalIcons icon = JournalIcons.Warning;
                            string       text = string.Empty;
                            if (tickType == TickType.Open)
                            {
                                icon = JournalIcons.BarOpen;
                                text = Language.T("A Bar Open event!");
                            }
                            else if (tickType == TickType.Close)
                            {
                                icon = JournalIcons.BarClose;
                                text = Language.T("A Bar Close event!");
                            }
                            else if (tickType == TickType.AfterClose)
                            {
                                icon = JournalIcons.Warning;
                                text = Language.T("A new tick arrived after a Bar Close event!");
                            }
                            JournalMessage jmsg = new JournalMessage(icon, DateTime.Now, symbol + " " + Data.PeriodMTStr + " " + time.ToString("HH:mm:ss") + " " + text);
                            AppendJournalMessage(jmsg);
                        }

                        if (isBarChanged && tickType == TickType.Regular)
                        {
                            if (JournalShowSystemMessages)
                            {
                                JournalMessage jmsg = new JournalMessage(JournalIcons.Warning, DateTime.Now, symbol + " " +
                                                                         Data.PeriodMTStr + " " + time.ToString("HH:mm:ss") + " A Bar Changed event!");
                                AppendJournalMessage(jmsg);
                            }

                            tickType = TickType.Open;
                        }

                        if (tickType == TickType.Open && barOpenTimeForLastCloseEvent == Data.Time[Data.Bars - 3])
                        {
                            if (JournalShowSystemMessages)
                            {
                                JournalMessage jmsg = new JournalMessage(JournalIcons.Warning, DateTime.Now, symbol + " " +
                                                                         Data.PeriodMTStr + " " + time.ToString("HH:mm:ss") + " A secondary Bar Close event!");
                                AppendJournalMessage(jmsg);
                            }
                            tickType = TickType.OpenClose;
                        }

                        CalculateTrade(tickType);
                        isUpdateChart = true;

                        if (tickType == TickType.Close || tickType == TickType.OpenClose)
                        {
                            barOpenTimeForLastCloseEvent = Data.Time[Data.Bars - 1];
                        }
                    }
                }

                if (isUpdateChart)
                {
                    UpdateChart();
                }
            }

            return;
        }
Exemple #4
0
        /// <summary>
        ///     Gets image for the icon type.
        /// </summary>
        private Image GetImage(JournalIcons icon)
        {
            Image image;

            switch (icon)
            {
            case JournalIcons.Information:
                image = Resources.journal_information;
                break;

            case JournalIcons.System:
                image = Resources.journal_system;
                break;

            case JournalIcons.Warning:
                image = Resources.journal_warning;
                break;

            case JournalIcons.Error:
                image = Resources.journal_error;
                break;

            case JournalIcons.Ok:
                image = Resources.journal_ok;
                break;

            case JournalIcons.Currency:
                image = Resources.currency;
                break;

            case JournalIcons.Blocked:
                image = Resources.journal_blocked;
                break;

            case JournalIcons.Globe:
                image = Resources.globe;
                break;

            case JournalIcons.StartTrading:
                image = Resources.journal_start_trading;
                break;

            case JournalIcons.StopTrading:
                image = Resources.journal_stop_trading;
                break;

            case JournalIcons.OrderBuy:
                image = Resources.ord_buy;
                break;

            case JournalIcons.OrderSell:
                image = Resources.ord_sell;
                break;

            case JournalIcons.OrderClose:
                image = Resources.ord_close;
                break;

            case JournalIcons.Recalculate:
                image = Resources.recalculate;
                break;

            case JournalIcons.BarOpen:
                image = Resources.journal_bar_open;
                break;

            case JournalIcons.BarClose:
                image = Resources.journal_bar_close;
                break;

            case JournalIcons.PosBuy:
                image = Resources.pos_buy;
                break;

            case JournalIcons.PosSell:
                image = Resources.pos_sell;
                break;

            case JournalIcons.PosSquare:
                image = Resources.pos_square;
                break;

            default:
                image = Resources.journal_error;
                break;
            }

            return(image);
        }
 public JournalMessage(JournalIcons icon, DateTime time, string message)
 {
     this.icon    = icon;
     this.time    = time;
     this.message = message;
 }
        /// <summary>
        /// Gets image for the icon type.
        /// </summary>
        /// <param name="icon"></param>
        /// <returns></returns>
        public Image GetImage(JournalIcons icon)
        {
            Image image;
            switch(icon)
            {
                case JournalIcons.Information:
                    image = Properties.Resources.journal_information;
                    break;
                case JournalIcons.System:
                    image = Properties.Resources.journal_system;
                    break;
                case JournalIcons.Warning:
                    image = Properties.Resources.journal_warning;
                    break;
                case JournalIcons.Error:
                    image = Properties.Resources.journal_error;
                    break;
                case JournalIcons.OK:
                    image = Properties.Resources.journal_ok;
                    break;
                case JournalIcons.Currency:
                    image = Properties.Resources.currency;
                    break;
                case JournalIcons.Blocked:
                    image = Properties.Resources.journal_blocked;
                    break;
                case JournalIcons.Globe:
                    image = Properties.Resources.globe;
                    break;
                case JournalIcons.StartTrading:
                    image = Properties.Resources.journal_start_trading;
                    break;
                case JournalIcons.StopTrading:
                    image = Properties.Resources.journal_stop_trading;
                    break;
                case JournalIcons.OrderBuy:
                    image = Properties.Resources.ord_buy;
                    break;
                case JournalIcons.OrderSell:
                    image = Properties.Resources.ord_sell;
                    break;
                case JournalIcons.OrderClose:
                    image = Properties.Resources.ord_close;
                    break;
                case JournalIcons.Recalculate:
                    image = Properties.Resources.recalculate;
                    break;
                case JournalIcons.BarOpen:
                    image = Properties.Resources.journal_bar_open;
                    break;
                case JournalIcons.BarClose:
                    image = Properties.Resources.journal_bar_close;
                    break;
                case JournalIcons.PosBuy:
                    image = Properties.Resources.pos_buy;
                    break;
                case JournalIcons.PosSell:
                    image = Properties.Resources.pos_sell;
                    break;
                case JournalIcons.PosSquare:
                    image = Properties.Resources.pos_square;
                    break;
                default:
                    image = Properties.Resources.journal_error;
                    break;
            }

            return image;
        }
 public JournalMessage(JournalIcons icon, DateTime time, string message)
 {
     Icon = icon;
     Time = time;
     Message = message;
 }
 public JournalMessage(JournalIcons icon, DateTime time, string message)
 {
     this.icon    = icon;
     this.time    = time;
     this.message = message;
 }