using System.Windows;
using System.Windows.Input;
using NinjaTrader.Gui.Chart;
//This namespace holds Indicators in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Indicators
{
public class VsaNew : Indicator
{
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
IsOverlay = true;
} else if (State == State.DataLoaded) {
if (this.ChartPanel != null)
this.ChartPanel.MouseMove += new MouseEventHandler(OnMouseMove);
}
}
protected override void OnBarUpdate()
{
//Add your custom indicator logic here.
}
internal void OnMouseMove(object sender, MouseEventArgs e)
{
ChartControl cc = ChartControl;
ChartScale cs = new ChartScale(/*cc.PrimaryBars.*/ChartPanel, cc.PrimaryBars.Properties.ScaleJustification);
Point cursorPos = e.GetPosition(ChartPanel);
float fy = (float)cursorPos.Y;
double tmp = cs.GetValueByY((float)cursorPos.Y);
double tmp2 = cs.GetValueByYWpf((float)cursorPos.Y);
Print("VsaNew: cursor Y: " + fy + " GetValueByY: " + tmp + " GetValueByYWpf: " + tmp2);
}
}
}
Announcement
Collapse
No announcement yet.
Partner 728x90
Collapse
NinjaTrader
Are GetValueByY() and GetValueByYWpf() working?
Collapse
X
-
Are GetValueByY() and GetValueByYWpf() working?
Another OnMouseMove() issue. Am I doing something wrong, or is there a bug here? I move the cursor up and down, yielding Y values frm 0-724. In all cases, both GetValueByY() and GetValueByYWpf() return zero.
--EVCode:Tags: None
-
Get the ChartScale from the Chart's ChartPanel.Scales object:
ChartScale cs = ChartPanel.Scales[ChartPanel.PanelIndex];
The below is working for me. Let me know if you see any issues
Code:public class MyCustomIndicator3 : Indicator { protected override void OnStateChange() { if (State == State.SetDefaults) { IsOverlay = true; } else if (State == State.DataLoaded) if (ChartPanel != null) ChartPanel.MouseMove += OnMouseMove; else if (State == State.Terminated) if (ChartPanel != null) ChartPanel.MouseMove -= OnMouseMove; } protected override void OnBarUpdate() { //Add your custom indicator logic here. } internal void OnMouseMove(object sender, MouseEventArgs e) { try { ChartScale cs = ChartPanel.Scales[ChartPanel.PanelIndex]; Point cursorPos = e.GetPosition(ChartPanel); float fy = (float) cursorPos.Y; if (cs != null) { double tmp = cs.GetValueByY((float) cursorPos.Y); double tmp2 = cs.GetValueByYWpf((float) cursorPos.Y); Print("VsaNew: cursor Y: " + fy + " GetValueByY: " + tmp + " GetValueByYWpf: " + tmp2); } } catch (Exception exception) { Print(exception); } } }Last edited by NinjaTrader_Matthew; 08-24-2015, 08:28 AM.MatthewNinjaTrader Product Management
-
Thank you. That does it. Getting ChartScale your way works fine.Originally posted by NinjaTrader_Matthew View PostGet the ChartScale from the Chart's ChartPanel.Scales object:
ChartScale cs = ChartPanel.Scales[ChartPanel.PanelIndex];
The below is working for me. Let me know if you see any issues
--EV
Comment
Latest Posts
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by Geovanny Suaza, 02-11-2026, 06:32 PM
|
0 responses
673 views
0 likes
|
Last Post
|
||
|
Started by Geovanny Suaza, 02-11-2026, 05:51 PM
|
0 responses
379 views
1 like
|
Last Post
|
||
|
Started by Mindset, 02-09-2026, 11:44 AM
|
0 responses
111 views
0 likes
|
Last Post
by Mindset
02-09-2026, 11:44 AM
|
||
|
Started by Geovanny Suaza, 02-02-2026, 12:30 PM
|
0 responses
577 views
1 like
|
Last Post
|
||
|
Started by RFrosty, 01-28-2026, 06:49 PM
|
0 responses
582 views
1 like
|
Last Post
by RFrosty
01-28-2026, 06:49 PM
|

Comment