Advertisement
Guest User

Untitled

a guest
Feb 16th, 2023
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. #region Using declarations
  2. using System;
  3. using System.ComponentModel;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.Windows.Forms;
  6. using System.Windows.Input;
  7. using NinjaTrader.Gui;
  8. using NinjaTrader.Gui.Chart;
  9. using NinjaTrader.Gui.SuperDom;
  10. using NinjaTrader.Gui.Tools;
  11. using NinjaTrader.Data;
  12. using NinjaTrader.NinjaScript;
  13. using NinjaTrader.Core.FloatingPoint;
  14. using NinjaTrader.NinjaScript.DrawingTools;
  15. using NinjaTrader.NinjaScript.AddOns;
  16. using System.Windows.Controls.Primitives;
  17. using SharpDX.Direct2D1;
  18. using SharpDX;
  19. using NinjaTrader.NinjaScript.AddOns.Attributes;
  20. #endregion
  21.  
  22. // This namespace holds all indicators and is required. Do not change it.
  23. namespace NinjaTrader.NinjaScript.AddOns
  24. {
  25. [NinjaScriptAddon(Name = "Mouseclickorder", Description = "")]
  26. public class Mouseclickorder : NinjaTrader.NinjaScript.AddOns.AddOnBase
  27. {
  28. private ChartControl chartControl;
  29. private ChartPanel chartPanel;
  30. private ChartScale chartScale;
  31. private IDrawingTool selectedDrawingTool;
  32.  
  33. protected override void OnStateChange()
  34. {
  35. if (State == State.SetDefaults)
  36. {
  37. IsOverlay = true;
  38. }
  39. else if (State == State.Configure)
  40. {
  41. chartControl = ChartControl;
  42. chartControl.ChartPanelMouseDown += ChartPanel_MouseDown;
  43. chartControl.ChartPanelMouseUp += ChartPanel_MouseUp;
  44. }
  45. }
  46.  
  47. private void ChartPanel_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  48. {
  49. selectedDrawingTool = null;
  50. if (e.Button != MouseButtons.Right)
  51. return;
  52.  
  53. chartPanel = chartControl.ChartPanels.FirstOrDefault(p => p.IsMouseOver);
  54. chartScale = chartPanel?.ChartScale;
  55. if (chartScale == null)
  56. return;
  57.  
  58. foreach (IDrawingTool drawingTool in chartControl.Owner.Dashboard.FocusedDrawingTools)
  59. {
  60. if (drawingTool != null && drawingTool.IsSelected)
  61. {
  62. selectedDrawingTool = drawingTool;
  63. break;
  64. }
  65. }
  66. }
  67.  
  68. private void ChartPanel_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  69. {
  70. if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
  71. {
  72. double y = chartScale.GetValueByY(e.Y);
  73. if (y != ChartScale.NoValue)
  74. {
  75. double currentPrice = chartControl.LastPrice;
  76. if (e.Button == MouseButtons.Left)
  77. {
  78. if (y < currentPrice)
  79. {
  80. if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
  81. {
  82. chartControl.ChartPanel.OwnerChartControl.ChartTraderUi.PlaceOrder(ChartOrderAction.Sell, ChartOrderType.Limit, 0, y, "", "CT", "", true);
  83. }
  84. else
  85. {
  86. chartControl.ChartPanel.OwnerChartControl.ChartTraderUi.PlaceOrder(ChartOrderAction.Buy, ChartOrderType.Limit, 0, y, "", "CT", "", true);
  87. }
  88. }
  89. else if (y > currentPrice)
  90. {
  91. if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
  92. {
  93. chartControl.ChartPanel.OwnerChartControl.ChartTraderUi.PlaceOrder(ChartOrderAction.Sell, ChartOrderType.Stop, 0, y, "", "CT", "", true);
  94. }
  95. else
  96. {
  97. chartControl.ChartPanel.OwnerChartControl.ChartTraderUi.PlaceOrder(ChartOrderAction.Buy, ChartOrderType.StopMarket, 0, y, "", "CT", "", true);
  98. }
  99. }
  100. }
  101. }
  102. }
  103. }
  104. }
  105. }
  106.  
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement