Bug: Toolbar not Launching on Startup

Questions about MultiCharts .NET and user contributed studies.
Jobauma
Posts: 61
Joined: 16 Apr 2013
Has thanked: 14 times
Been thanked: 2 times

Bug: Toolbar not Launching on Startup

Postby Jobauma » 19 Nov 2018

Hi.

I have an indicator (with a toolbar) that does not launch on startup, but I can manually change the status in "Format indicators..." to "on", after startup. Then it works. :D

Error message:

Code: Select all

Messsage: Error in study “[Indicator Name]
(EUR.USD-3 Minute)” :
Custom ToolBar can not be created.
Unable to run the study.
Please manually change the Status of the study in
Format Study window.


I'm wondering what is wrong with the toolbar code. :(



Best regards,
Johannes Hillestad Baumann

User avatar
Svetlana MultiCharts
Posts: 114
Joined: 19 Oct 2017
Been thanked: 30 times

Re: Bug: Toolbar not Launching on Startup

Postby Svetlana MultiCharts » 21 Nov 2018

Hello, Johannes

This behaviour is not reproduced on our end. Please send us an example of study with which the issue is replicated, and step-by-step instruction how to reproduce it.

Jobauma
Posts: 61
Joined: 16 Apr 2013
Has thanked: 14 times
Been thanked: 2 times

Re: Bug: Toolbar not Launching on Startup

Postby Jobauma » 22 Nov 2018

Hi.

Thanks for your reply.

Here is the ToolBar Code:

Code: Select all

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;






namespace PowerLanguage.Indicator
{
   [SameAsSymbol(true)]
   [RecoverDrawings(false)]



   public class _Jobauma_BuySell_ToolBar_Illustration : IndicatorObject
   {
      private double m_ToolBar_Set_Point;
      
      int m_ToolBar_Setback = 0,
         m_ToolBar_TakeProfit = 210, m_ToolBar_StopLoss = 50,
         m_ToolBar_Breakeven_PlusPoints = 80, m_ToolBar_Breakeven_Step = 0,
         m_ToolBar_Trailing_PlusPoints = 130, m_ToolBar_Trailing_Step = 50;



      private bool m_Buy, m_Sell, m_Delete;



      private bool m_Toolbar_Inited = false;



      public _Jobauma_BuySell_ToolBar_Illustration( object _ctx ) : base(_ctx)
      {
      }



      protected override void Create()
      {
      }



      private void TSB_Buy( object Sender, EventArgs E )
      {
         m_Buy = true;
         m_Sell = false;
      }

      private void TSB_Sell( object Sender, EventArgs E )
      {
         m_Sell = true;
         m_Buy = false;
      }

      private void TSB_Delete( object Sender, EventArgs E )
      {
         m_Delete = true;

         m_Buy = false;
         m_Sell = false;
      }



      private void NUD_Setback_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_Setback != NewValue.Value )
            m_ToolBar_Setback = (int)NewValue.Value;
      }

      private void NUD_TakeProfit_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_TakeProfit != NewValue.Value )
            m_ToolBar_TakeProfit = (int)NewValue.Value;
      }

      private void NUD_StopLoss_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_StopLoss != NewValue.Value )
            m_ToolBar_StopLoss = (int)NewValue.Value;
      }

      private void NUD_BreakevenPlusPoints_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_Breakeven_PlusPoints != NewValue.Value )
            m_ToolBar_Breakeven_PlusPoints = (int)NewValue.Value;
      }

      private void NUD_BreakevenStep_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_Breakeven_Step != NewValue.Value )
            m_ToolBar_Breakeven_Step = (int)NewValue.Value;
      }

      private void NUD_TrailingPlusPoints_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_Trailing_PlusPoints != NewValue.Value )
            m_ToolBar_Trailing_PlusPoints = (int)NewValue.Value;
      }

      private void NUD_TrailingStep_Changed( object Sender, EventArgs E )
      {
         var NewValue = (NumericUpDown)Sender;

         if ( m_ToolBar_Trailing_Step != NewValue.Value )
            m_ToolBar_Trailing_Step = (int)NewValue.Value;
      }



      private void AddItemToolStrip( ToolStrip TB, ToolStripItem Item )
      {
         Item.Tag = this;
         TB.Items.Add(Item);
      }



      protected override void StartCalc()
      {
         if (!m_Toolbar_Inited)
         {
            ChartToolBar.AccessToolBar( TB =>
            {
               {
                  var TSB = new ToolStripButton
                  {
                     Text = "Buy"
                  };

                  TSB.Click += TSB_Buy;
                  AddItemToolStrip( TB, TSB );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var TSB = new ToolStripButton
                  {
                     Text = "Sell"
                  };

                  TSB.Click += TSB_Sell;
                  AddItemToolStrip( TB, TSB );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var TSB = new ToolStripButton
                  {
                     Text = "Delete"
                  };

                  TSB.Click += TSB_Delete;
                  AddItemToolStrip( TB, TSB );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Setback:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 233,
                     Increment = 10,
                     Value = m_ToolBar_Setback
                  };

                  NUD.ValueChanged += NUD_Setback_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Take Profit:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 1000,
                     Increment = 10,
                     Value = m_ToolBar_TakeProfit
                  };

                  NUD.ValueChanged += NUD_TakeProfit_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Stop Loss:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 987,
                     Increment = 10,
                     Value = m_ToolBar_StopLoss
                  };

                  NUD.ValueChanged += NUD_StopLoss_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Breakeven Plus Points:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 987,
                     Increment = 10,
                     Value = m_ToolBar_Breakeven_PlusPoints
                  };

                  NUD.ValueChanged += NUD_BreakevenPlusPoints_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Breakeven Step:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 987,
                     Increment = 10,
                     Value = m_ToolBar_Breakeven_Step
                  };

                  NUD.ValueChanged += NUD_BreakevenStep_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Trailing Plus Points:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 987,
                     Increment = 10,
                     Value = m_ToolBar_Trailing_PlusPoints
                  };

                  NUD.ValueChanged += NUD_TrailingPlusPoints_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }

               AddItemToolStrip( TB, new ToolStripSeparator() );

               {
                  var N = new ToolStripButton
                  {
                     Text = "Trailing Step:"
                  };

                  AddItemToolStrip( TB, N );
               }

               {
                  var NUD = new NumericUpDown
                  {
                     Minimum = 0,
                     Maximum = 987,
                     Increment = 10,
                     Value = m_ToolBar_Trailing_Step
                  };

                  NUD.ValueChanged += NUD_TrailingStep_Changed;
                  AddItemToolStrip( TB, new ToolStripControlHost(NUD) );
               }
            });

            m_Toolbar_Inited = true;
         }
      }



      protected override void CalcBar()
      {
         if ( m_Buy || m_Sell )
         {
            // Code Trigger.

            m_Buy = false;
            m_Sell = false;
         }

         if (m_Delete)
         {
            // Code Trigger.

            m_Delete = false;
         }
      }



      protected override void Destroy()
      {
         if (m_Toolbar_Inited)
         {
            ChartToolBar.AccessToolBar( TB =>
            {
               var For_Erase = new List<ToolStripItem>();

               foreach ( ToolStripItem Item in TB.Items )
                  if (ReferenceEquals( this, Item.Tag ))
                     For_Erase.Add(Item);

               foreach ( var Item in For_Erase )
                  TB.Items.Remove(Item);
            });
         }
      }
   }
}


I hope there is a solution. :)



Best regards,
Johannes Hillestad Baumann

Jobauma
Posts: 61
Joined: 16 Apr 2013
Has thanked: 14 times
Been thanked: 2 times

Re: Bug: Toolbar not Launching on Startup

Postby Jobauma » 24 Nov 2018

I also get this error ( I attached an image ).

The line of the error (615) is the same as " ChartToolBar.AccessToolBar( TB => ", in the previous ToolBar code i sent.



Best regards,
Johannes Hillestad Baumann
Attachments
MultiCharts Jobauma BuySell - Error.png
MultiCharts Jobauma BuySell - Error.png (79.83 KiB) Viewed 109 times

Jobauma
Posts: 61
Joined: 16 Apr 2013
Has thanked: 14 times
Been thanked: 2 times

Re: Bug: Toolbar not Launching on Startup

Postby Jobauma » 24 Nov 2018

By the way, I have to completely remove and insert the indicator if this error occurs. Pressing " Format Indicators... > Status " doesn't work.

User avatar
Svetlana MultiCharts
Posts: 114
Joined: 19 Oct 2017
Been thanked: 30 times

Re: Bug: Toolbar not Launching on Startup

Postby Svetlana MultiCharts » 06 Dec 2018

Hello, Jobauma,

We have tried to apply this toolbar and it works correct on our end.
Please come to our Live Chat to demonstrate the issue via remote connection MON-FRI from 6:30 AM to 12:00 PM EST (11:30 AM to 5:00 PM GMT). Live Chat is accessible from our web site http://www.multicharts.com/ (at the top of the page). We'll do our best to help you.

Jobauma
Posts: 61
Joined: 16 Apr 2013
Has thanked: 14 times
Been thanked: 2 times

Re: Bug: Toolbar not Launching on Startup

Postby Jobauma » 07 Dec 2018

Hi.

I use VMware Fusion 11, because I use Apple products. Everything is fine with this emulator. How could you see if this is the issue? Can this be fixed via MultiCharts, or has it to be fixed via VMware Fusion? By the way, I have installed Windows 10 Home on this emulator. :) I have no problems with MultiCharts, except these two errors ( from an indicator ). I followed the ToolBar example included in the installation of MultiCharts, so I guess this has to be the problem. I can not think of anything else.

I hope you needn't buy VMware Fusion to fix this, or to see if it is the issue at all. :)




Best regards,
Johannes Hillestad Baumann


Return to “MultiCharts .NET”