trasformare un indicatore Ninja in codice per PRT
Forums › ProRealTime forum Italiano › Supporto ProBuilder › trasformare un indicatore Ninja in codice per PRT
- This topic has 7 replies, 2 voices, and was last updated 6 years ago by
Gianco.
-
-
05/28/2018 at 10:50 AM #7150405/28/2018 at 12:04 PM #7150805/29/2018 at 12:53 PM #71576DeltaV3123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748#region Using declarationsusing System;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.Windows.Media;using System.Xml.Serialization;using NinjaTrader.Gui;using NinjaTrader.Gui.Chart;using NinjaTrader.Data;#endregion//This namespace holds Indicators in this folder and is required. Do not change it.namespace NinjaTrader.NinjaScript.Indicators.Sim22{/// <summary>/// Based on Gomi's GOM delta./// Zondor 'unGom' Bid-Ask conversion to NT8 with Tick Replay./// Sim22 addition of various other GOM formulae, commitment of traders calculations, heiken ashi, Ema, code tidying and extra features. NT8b12 Aug 2016./// </summary>public class Sim22_DeltaV3 : Indicator{private Sim22.Gapless.Sim22_EmaGaplessV2 emaGapless;private Series<int> deltaColorSeries;private NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities deltaUtilities = new NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities();private Series<double> deltaOpenSeries;private Series<double> deltaCloseSeries;private Series<double> deltaHighSeries;private Series<double> deltaLowSeries;private double currentDeltaD = 0d;private double barDeltaD = 0d;private double highCotD = 0d;private double lowCotD = 0d;private string filterStr = string.Empty;private string cotStr = string.Empty;private string haStr = string.Empty;private double deltaOpen;private double deltaHigh;private double deltaLow;private double deltaClose;//Experimental HAprivate NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities heikenAshiUtilities = new NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities();private NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiValues heikenAshiValues;private NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.OhlcValues ohlcValues;private Series<NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiValues> heikenAshiSeries;private Series<NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.OhlcValues> ohlcSeries;protected override void OnStateChange(){if (State == State.SetDefaults){Description = @"Delta. Gomi, Zondor, Sim22";Name = "Sim22_DeltaV3";Calculate = Calculate.OnEachTick;MaximumBarsLookBack = MaximumBarsLookBack.Infinite;IsOverlay = false;DisplayInDataBox = true;DrawOnPricePanel = true;DrawHorizontalGridLines = false;DrawVerticalGridLines = false;PaintPriceMarkers = true;ScaleJustification = ScaleJustification.Right;IsSuspendedWhileInactive = false;BarUpBrush = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 42, 147, 42));OutlineUpBrush = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 90, 231, 90));BarDnBrush = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 167, 81, 80));OutlineDnBrush = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 184, 124, 124));PlotCumulativeDelta = true;ResetDelta = false;FilterSize = 1;InvertDelta = false;ShowPaintBars = true;ShowPaintBarsOutline = true;ShowAboveBelowEmaColors = true;PeriodEma = 20;//PeriodSmooth = 10;DeltaType = NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum.BidAsk;FilterType = NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum.None;DeltaCotType = NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.None;HeikenAshiCalculationType = NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiCalculationType.None;// Nov 2016DeltaGaplessEmaType = GaplessEmaTypeEnum.Normal;AddPlot(new Stroke(Brushes.Orange, DashStyleHelper.Solid, 2), PlotStyle.Line, "Ema"); //Placed first to keep price marker below Delta price markerAddPlot(Brushes.RoyalBlue, "Delta");AddLine(new Stroke(Brushes.Gray, DashStyleHelper.Dot, 1), 0, "ZeroLine");}else if (State == State.Configure){emaGapless = Sim22_EmaGaplessV2(Values[1], PeriodEma, DeltaGaplessEmaType);Calculate = Calculate.OnEachTick;BarUpBrush.Freeze();BarDnBrush.Freeze();OutlineUpBrush.Freeze();OutlineDnBrush.Freeze();deltaColorSeries = new Series<int>(this, MaximumBarsLookBack.Infinite);deltaOpenSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);deltaCloseSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);deltaHighSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);deltaLowSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);//Experimental HAheikenAshiSeries = new Series<NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiValues>(this, MaximumBarsLookBack.Infinite);ohlcSeries = new Series<NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.OhlcValues>(this, MaximumBarsLookBack.Infinite);switch (FilterType){case AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum.GreaterOrEqualTo:filterStr = "Filter >= " + FilterSize;break;case AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum.LessThanOrEqualTo:filterStr = "Filter <= " + FilterSize;break;}switch (DeltaCotType){case NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.HighCot:cotStr = " (High COT)";break;case NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.LowCot:cotStr = " (Low COT)";break;case NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.CombinedCot:cotStr = " (Total COT)";break;}switch (HeikenAshiCalculationType){case NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiCalculationType.None:haStr = "";break;case NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiCalculationType.DanValcu:haStr = " (HA)";break;case NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiCalculationType.SylvainVervoort:haStr = " (HAsv)";break;}//For future development://switch (HeikenAshiSmoothingType)//{// case Sim22_HAUtilities.HeikenAshiSmoothingType.None:// break;// case Sim22_HAUtilities.HeikenAshiSmoothingType.EMA:// OpenMA = EMA(Open, PeriodSmooth);// break;// case Sim22_HAUtilities.HeikenAshiSmoothingType.HMA:// break;// case Sim22_HAUtilities.HeikenAshiSmoothingType.SMA:// break;//}}else if (State == State.Historical){}}public override string FormatPriceMarker(double price){return price.ToString("N0");}public override string DisplayName{get { return "DeltaV3 " + DeltaType + cotStr + haStr + (InvertDelta ? " (Inverted)" : "") + (ResetDelta ? Environment.NewLine + "EOD reset " : "") + (!string.IsNullOrEmpty(filterStr) ? Environment.NewLine + filterStr : ""); }}protected override void OnMarketData(MarketDataEventArgs e){try{if (CurrentBar <= -1)return;if (e.MarketDataType != MarketDataType.Last)return;if (CurrentBars[0] <= -1)return;if (BarsInProgress == 0){if (IsFirstTickOfBar){if (CurrentBar == 0)barDeltaD = 0.0;if (CurrentBar > 0)barDeltaD = deltaCloseSeries[1];if (!PlotCumulativeDelta || (Bars.IsResetOnNewTradingDay && Bars.IsFirstBarOfSession && ResetDelta)){barDeltaD = 0.0;}deltaLow = deltaHigh = deltaOpen = barDeltaD;highCotD = 0d;lowCotD = 0d;}// Calculate delta via Delta Utilities AddOncurrentDeltaD = deltaUtilities.GetCurrentDelta(DeltaType, FilterType, e.Ask, e.Bid, e.Price, e.Volume, InvertDelta, FilterSize);deltaClose = 0d;// If a COT is selectedif (DeltaCotType != NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.None){if (IsFirstTickOfBar){highCotD = 0d;lowCotD = 0d;}if (e.Price >= High[0]){highCotD = 0d;}else{highCotD += currentDeltaD;}if (e.Price <= Low[0]){lowCotD = 0d;}else{lowCotD += currentDeltaD;}switch (DeltaCotType){case NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.HighCot:deltaClose = highCotD + barDeltaD;break;case NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.LowCot:deltaClose = lowCotD + barDeltaD;break;case NinjaTrader.NinjaScript.AddOns.Sim22_DeltaUtilities.DeltaCotType.CombinedCot:deltaClose = (highCotD + lowCotD) + barDeltaD;break;}}elsedeltaClose = (barDeltaD += currentDeltaD);deltaHigh = Math.Max(deltaHigh, deltaClose);deltaLow = Math.Min(deltaLow, deltaClose);}}catch (Exception ex){Print("DeltaV3 exception at line 405:" + ex);}}protected override void OnBarUpdate(){deltaCloseSeries[0] = deltaClose;if (HeikenAshiCalculationType != NinjaTrader.NinjaScript.AddOns.Sim22_HaUtilities.HeikenAshiCalculationType.None && PlotCumulativeDelta){ohlcValues.Open = deltaOpen;ohlcValues.High = deltaHigh;ohlcValues.Low = deltaLow;ohlcValues.Close = deltaClose;ohlcSeries[0] = ohlcValues;/*********Original HA code// Please Note to avoid confusion: deltaCloseSeries[0] is the real delta value, Values[1][0] (the plot) is the HA close value.// Values[1][0] = (deltaClose + deltaOpen + deltaHigh + deltaLow) * 0.25; // Calculate the HA close// deltaOpenSeries[0] = (deltaOpenSeries[1] + Values[1][1]) * 0.5; // Calculate the HA open// deltaHighSeries[0] = Math.Max(deltaHigh, deltaOpenSeries[0]); // Calculate the HA high// deltaLowSeries[0] = Math.Min(deltaLow, deltaOpenSeries[0]); // Calculate the HA low**********/if (CurrentBar <= 0 || (Bars.IsFirstBarOfSession && ResetDelta)){heikenAshiValues.HaOpen = deltaOpen;heikenAshiValues.HaHigh = deltaHigh;heikenAshiValues.HaLow = deltaLow;heikenAshiValues.HaClose = deltaClose;heikenAshiSeries[0] = heikenAshiValues;}else{heikenAshiSeries[0] = heikenAshiUtilities.GetHeikenAshi(HeikenAshiCalculationType, heikenAshiSeries, ohlcSeries);}deltaOpenSeries[0] = heikenAshiSeries[0].HaOpen;deltaHighSeries[0] = heikenAshiSeries[0].HaHigh;deltaLowSeries[0] = heikenAshiSeries[0].HaLow;// Note: deltaCloseSeries[0] is the real delta value, Values[1][0] (the plot) is the HA close valueValues[1][0] = heikenAshiSeries[0].HaClose;}else{Values[1][0] = deltaClose;deltaOpenSeries[0] = deltaOpen;deltaHighSeries[0] = deltaHigh;deltaLowSeries[0] = deltaLow;deltaCloseSeries[0] = deltaClose;}try{// for ema valuesif (DeltaGaplessEmaType != GaplessEmaTypeEnum.None){if (CurrentBar < 0)return;Values[0][0] = emaGapless[0];}// Determine colorsif (ShowAboveBelowEmaColors){if (Values[1][0] > Values[0][0])deltaColorSeries[0] = 1;if (Values[1][0] < Values[0][0])deltaColorSeries[0] = -1;}else{if (Values[1][0] > deltaOpenSeries[0])deltaColorSeries[0] = 1;if (Values[1][0] < deltaOpenSeries[0])deltaColorSeries[0] = -1;}// Set colors for plotsif (deltaColorSeries[0] == 1){PlotBrushes[1][0] = BarUpBrush;if (ShowPaintBars)BarBrush = BarUpBrush;if (ShowPaintBarsOutline)CandleOutlineBrush = OutlineUpBrush;}else if (deltaColorSeries[0] == -1){PlotBrushes[1][0] = BarDnBrush;if (ShowPaintBars)BarBrush = BarDnBrush;if (ShowPaintBarsOutline)CandleOutlineBrush = OutlineDnBrush;}else if (CurrentBar != 0){// Show colors of prior barPlotBrushes[1][0] = PlotBrushes[0][1];if (ShowPaintBars)BarBrush = BarBrushes[1];if (ShowPaintBarsOutline)CandleOutlineBrush = CandleOutlineBrushes[1];}else{// Just in casePlotBrushes[1][0] = Brushes.Gray;if (ShowPaintBars)BarBrush = Brushes.Gray;if (ShowPaintBarsOutline)CandleOutlineBrush = Brushes.Gray;}}catch (Exception ex){Print("DeltaV3 exception at line 399, EMA calculation:" + ex);}}public override void OnCalculateMinMax(){try{if (Bars == null)return;int lastBar = ChartBars.ToIndex;int firstBar = ChartBars.FromIndex;double min = double.MaxValue;double max = double.MinValue;for (int index = firstBar; index <= lastBar; index++){min = Math.Min(min, deltaLowSeries.GetValueAt(index));max = Math.Max(max, deltaHighSeries.GetValueAt(index));}if ((max - min) < 1){min -= 1;max += 1;}MinValue = min;MaxValue = max;}catch (Exception ex){Print("DeltaV3 exception at OnCalculateMinMax() at line 460:" + ex);}}protected override void OnRender(ChartControl chartControl, ChartScale chartScale){if (Bars == null || ChartControl == null || Bars.Instrument == null || !IsVisible){return;}try{int cbti = ChartBars.ToIndex;int cbfi = ChartBars.FromIndex;SharpDX.Direct2D1.Brush brushBarDX = Brushes.Gray.ToDxBrush(RenderTarget);SharpDX.Direct2D1.Brush brushOutlineDX = Brushes.Black.ToDxBrush(RenderTarget);SharpDX.Direct2D1.Brush brushZeroDX = Lines[0].BrushDX;SharpDX.Direct2D1.StrokeStyle lzSS = Lines[0].StrokeStyle;float zeroLineY = chartScale.GetYByValue(0);RenderTarget.DrawLine(new SharpDX.Vector2(ChartPanel.X, zeroLineY), new SharpDX.Vector2(ChartPanel.W, zeroLineY), brushZeroDX, 1f, lzSS);float width = (float) Math.Max(2, ChartBars.Properties.ChartStyle.BarWidth*2);for (int idx = cbfi; idx <= cbti; idx++){double opValue = deltaOpenSeries.GetValueAt(idx);double hiValue = deltaHighSeries.GetValueAt(idx);double loValue = deltaLowSeries.GetValueAt(idx);double clValue = Values[1].GetValueAt(idx);double clValue1 = idx > 0 ? Values[1].GetValueAt(idx - 1) : clValue;double opValue1 = idx > 0 ? deltaOpenSeries.GetValueAt(idx - 1) : opValue;float yOpen = chartScale.GetYByValue(opValue);float yHi = chartScale.GetYByValue(hiValue);float yLo = chartScale.GetYByValue(loValue);float yClose = chartScale.GetYByValue(clValue);var height = (int) Math.Abs(yOpen - yClose);var top = (opValue > clValue ? yOpen : yClose);var bottom = (opValue < clValue ? yOpen : yClose);float xCenter = chartControl.GetXByBarIndex(ChartBars, idx);float xPosition = xCenter - (float) (width/2);SharpDX.RectangleF rect = new SharpDX.RectangleF(xPosition, top, width, height);if (deltaColorSeries.GetValueAt(idx) == 1){brushBarDX = BarUpBrush.ToDxBrush(RenderTarget);brushOutlineDX = OutlineUpBrush.ToDxBrush(RenderTarget);}else if (deltaColorSeries.GetValueAt(idx) == -1){brushBarDX = BarDnBrush.ToDxBrush(RenderTarget);brushOutlineDX = OutlineDnBrush.ToDxBrush(RenderTarget);}else{brushBarDX = Brushes.Gray.ToDxBrush(RenderTarget);brushOutlineDX = Brushes.Gray.ToDxBrush(RenderTarget);}RenderTarget.FillRectangle(rect, brushBarDX);RenderTarget.DrawRectangle(rect, brushOutlineDX);RenderTarget.DrawLine(new SharpDX.Vector2(xCenter, yHi), new SharpDX.Vector2(xCenter, top), brushOutlineDX, 1f);RenderTarget.DrawLine(new SharpDX.Vector2(xCenter, yLo), new SharpDX.Vector2(xCenter, bottom), brushOutlineDX, 1f);}brushBarDX.Dispose();brushOutlineDX.Dispose();brushZeroDX.Dispose();lzSS.Dispose();if (DeltaGaplessEmaType != GaplessEmaTypeEnum.None){//Avg pathSharpDX.Direct2D1.PathGeometry lineGeometryAvg = new SharpDX.Direct2D1.PathGeometry(Core.Globals.D2DFactory);SharpDX.Direct2D1.GeometrySink sinkAvg = lineGeometryAvg.Open();sinkAvg.BeginFigure(new SharpDX.Vector2(chartControl.GetXByBarIndex(ChartBars, cbfi), chartScale.GetYByValue(Values[0].GetValueAt(cbfi))), SharpDX.Direct2D1.FigureBegin.Filled);for (int idx = cbfi; idx <= cbti; idx++){double indyValue = Values[0].GetValueAt(idx);float avgY = chartScale.GetYByValue(indyValue);float x = chartControl.GetXByBarIndex(ChartBars, idx);sinkAvg.AddLine(new SharpDX.Vector2(x, avgY));}SharpDX.Direct2D1.Brush avgBrush = Plots[0].BrushDX;SharpDX.Direct2D1.StrokeStyle avgStrokeStyle = Plots[0].StrokeStyle;float strokeWidthAvg = Plots[0].Width;//Avg path plotsinkAvg.EndFigure(SharpDX.Direct2D1.FigureEnd.Open);sinkAvg.Close();RenderTarget.AntialiasMode = SharpDX.Direct2D1.AntialiasMode.PerPrimitive;RenderTarget.DrawGeometry(lineGeometryAvg, avgBrush, strokeWidthAvg, avgStrokeStyle);RenderTarget.AntialiasMode = SharpDX.Direct2D1.AntialiasMode.Aliased; //lineGeometryAvg.Dispose();avgBrush.Dispose();avgStrokeStyle.Dispose();}}catch (Exception ex){Print("DeltaV3 exception at OnRender() at line 586:" + ex);}}#region Properties[Browsable(false)][XmlIgnore()]public Series<double> DeltaEma{get { return Values[0]; }}[Browsable(false)][XmlIgnore()]public Series<double> DeltaClose{get { return Values[1]; }}[Browsable(false)][XmlIgnore()]public Series<double> DeltaOpen{get { return deltaOpenSeries; }}[Browsable(false)][XmlIgnore()]public Series<double> DeltaHigh{get { return deltaHighSeries; }}[Browsable(false)][XmlIgnore()]public Series<double> DeltaLow{get { return deltaLowSeries; }}[NinjaScriptProperty][Display(Name = "Show EMA above/below colors?", Order = 1, GroupName = "4. Colors")]public bool ShowAboveBelowEmaColors { get; set; }[XmlIgnore][Display(ResourceType = typeof(Custom.Resource), Name = "Up color", Order = 6, GroupName = "4. Colors")]public Brush BarUpBrush { get; set; }[Browsable(false)]public string BarUpBrushSerialize{get { return Serialize.BrushToString(BarUpBrush); }set { BarUpBrush = Serialize.StringToBrush(value); }}[XmlIgnore][Display(ResourceType = typeof(Custom.Resource), Name = "Down color", Order = 8, GroupName = "4. Colors")]public Brush BarDnBrush { get; set; }[Browsable(false)]public string BarDnBrushSerialize{get { return Serialize.BrushToString(BarDnBrush); }set { BarDnBrush = Serialize.StringToBrush(value); }}[XmlIgnore][Display(ResourceType = typeof(Custom.Resource), Name = "Up color outline", Order = 7, GroupName = "4. Colors")]public Brush OutlineUpBrush { get; set; }[Browsable(false)]public string OutlineUpBrushSerialize{get { return Serialize.BrushToString(OutlineUpBrush); }set { OutlineUpBrush = Serialize.StringToBrush(value); }}[XmlIgnore][Display(ResourceType = typeof(Custom.Resource), Name = "Dn color outline", Order = 9, GroupName = "4. Colors")]public Brush OutlineDnBrush { get; set; }[Browsable(false)]public string OutlineDnBrushSerialize{get { return Serialize.BrushToString(OutlineDnBrush); }set { OutlineDnBrush = Serialize.StringToBrush(value); }}[NinjaScriptProperty][Display(Name = "Show paint bars?", Order = 1, GroupName = "5. Paint bars")]public bool ShowPaintBars { get; set; }[NinjaScriptProperty][Display(Name = "Show paint bars outline?", Order = 2, GroupName = "5. Paint bars")]public bool ShowPaintBarsOutline { get; set; }[NinjaScriptProperty][Display(Name = "Delta type", Description = "", Order = 0, GroupName = "1. Delta")]public AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum DeltaType { get; set; }[NinjaScriptProperty][Display(Name = "COT type", Description = "Set to plot commitment of traders or not.", GroupName = "1. Delta", Order = 1)]public AddOns.Sim22_DeltaUtilities.DeltaCotType DeltaCotType { get; set; }[NinjaScriptProperty][Display(Name = "Cumulative delta?", GroupName = "1. Delta", Order = 2)]public bool PlotCumulativeDelta { get; set; }[NinjaScriptProperty][Display(Name = "EOD reset?", GroupName = "1. Delta", Order = 3)]public bool ResetDelta { get; set; }[NinjaScriptProperty][Display(Name = "Invert delta?", GroupName = "1. Delta", Order = 4)]public bool InvertDelta { get; set; }[NinjaScriptProperty][Display(Name = "EMA plot type", Description = "Plot EMA as normal, reset the EMA at the session start or ignore the session delta gap.", Order = 5, GroupName = "1. Delta")]public GaplessEmaTypeEnum DeltaGaplessEmaType { get; set; }[Range(1, 300), NinjaScriptProperty][Display(Name = "EMA period", GroupName = "1. Delta", Order = 6)]public int PeriodEma { get; set; }//HeikenAshiCalculationType[NinjaScriptProperty][Display(Name = "HA type", Description = "Use Dan Valcu's for normal HA or Sylvain Vervoort's model", Order = 0, GroupName = "3. Heiken Ashi")]public AddOns.Sim22_HaUtilities.HeikenAshiCalculationType HeikenAshiCalculationType { get; set; }//[NinjaScriptProperty]//[Display(Name = "HA smoothing type", Description = "Use various smoothing calculations.", Order = 1, GroupName = "3. Heiken Ashi")]//public AddOns.Sim22_HAUtilities.HeikenAshiSmoothingType HeikenAshiSmoothingType { get; set; }// [Range(1, 300), NinjaScriptProperty]// [Display(Name = "HA smoothing period", GroupName = "3. Heiken Ashi", Order = 2)]// public int PeriodSmooth { get; set; }[NinjaScriptProperty][Display(Name = "Filter type", Description = "", Order = 0, GroupName = "2. Filter")]public AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum FilterType { get; set; }[Range(1, int.MaxValue), NinjaScriptProperty][Display(Name = "Filter size", GroupName = "2. Filter", Order = 1)]public int FilterSize { get; set; }#endregion}}#region NinjaScript generated code. Neither change nor remove.namespace NinjaTrader.NinjaScript.Indicators{public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase{private Sim22.Sim22_DeltaV3[] cacheSim22_DeltaV3;public Sim22.Sim22_DeltaV3 Sim22_DeltaV3(bool showAboveBelowEmaColors, bool showPaintBars, bool showPaintBarsOutline, AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum deltaType, AddOns.Sim22_DeltaUtilities.DeltaCotType deltaCotType, bool plotCumulativeDelta, bool resetDelta, bool invertDelta, GaplessEmaTypeEnum deltaGaplessEmaType, int periodEma, AddOns.Sim22_HaUtilities.HeikenAshiCalculationType heikenAshiCalculationType, AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum filterType, int filterSize){return Sim22_DeltaV3(Input, showAboveBelowEmaColors, showPaintBars, showPaintBarsOutline, deltaType, deltaCotType, plotCumulativeDelta, resetDelta, invertDelta, deltaGaplessEmaType, periodEma, heikenAshiCalculationType, filterType, filterSize);}public Sim22.Sim22_DeltaV3 Sim22_DeltaV3(ISeries<double> input, bool showAboveBelowEmaColors, bool showPaintBars, bool showPaintBarsOutline, AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum deltaType, AddOns.Sim22_DeltaUtilities.DeltaCotType deltaCotType, bool plotCumulativeDelta, bool resetDelta, bool invertDelta, GaplessEmaTypeEnum deltaGaplessEmaType, int periodEma, AddOns.Sim22_HaUtilities.HeikenAshiCalculationType heikenAshiCalculationType, AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum filterType, int filterSize){if (cacheSim22_DeltaV3 != null)for (int idx = 0; idx < cacheSim22_DeltaV3.Length; idx++)if (cacheSim22_DeltaV3[idx] != null && cacheSim22_DeltaV3[idx].ShowAboveBelowEmaColors == showAboveBelowEmaColors && cacheSim22_DeltaV3[idx].ShowPaintBars == showPaintBars && cacheSim22_DeltaV3[idx].ShowPaintBarsOutline == showPaintBarsOutline && cacheSim22_DeltaV3[idx].DeltaType == deltaType && cacheSim22_DeltaV3[idx].DeltaCotType == deltaCotType && cacheSim22_DeltaV3[idx].PlotCumulativeDelta == plotCumulativeDelta && cacheSim22_DeltaV3[idx].ResetDelta == resetDelta && cacheSim22_DeltaV3[idx].InvertDelta == invertDelta && cacheSim22_DeltaV3[idx].DeltaGaplessEmaType == deltaGaplessEmaType && cacheSim22_DeltaV3[idx].PeriodEma == periodEma && cacheSim22_DeltaV3[idx].HeikenAshiCalculationType == heikenAshiCalculationType && cacheSim22_DeltaV3[idx].FilterType == filterType && cacheSim22_DeltaV3[idx].FilterSize == filterSize && cacheSim22_DeltaV3[idx].EqualsInput(input))return cacheSim22_DeltaV3[idx];return CacheIndicator<Sim22.Sim22_DeltaV3>(new Sim22.Sim22_DeltaV3(){ ShowAboveBelowEmaColors = showAboveBelowEmaColors, ShowPaintBars = showPaintBars, ShowPaintBarsOutline = showPaintBarsOutline, DeltaType = deltaType, DeltaCotType = deltaCotType, PlotCumulativeDelta = plotCumulativeDelta, ResetDelta = resetDelta, InvertDelta = invertDelta, DeltaGaplessEmaType = deltaGaplessEmaType, PeriodEma = periodEma, HeikenAshiCalculationType = heikenAshiCalculationType, FilterType = filterType, FilterSize = filterSize }, input, ref cacheSim22_DeltaV3);}}}namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns{public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase{public Indicators.Sim22.Sim22_DeltaV3 Sim22_DeltaV3(bool showAboveBelowEmaColors, bool showPaintBars, bool showPaintBarsOutline, AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum deltaType, AddOns.Sim22_DeltaUtilities.DeltaCotType deltaCotType, bool plotCumulativeDelta, bool resetDelta, bool invertDelta, GaplessEmaTypeEnum deltaGaplessEmaType, int periodEma, AddOns.Sim22_HaUtilities.HeikenAshiCalculationType heikenAshiCalculationType, AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum filterType, int filterSize){return indicator.Sim22_DeltaV3(Input, showAboveBelowEmaColors, showPaintBars, showPaintBarsOutline, deltaType, deltaCotType, plotCumulativeDelta, resetDelta, invertDelta, deltaGaplessEmaType, periodEma, heikenAshiCalculationType, filterType, filterSize);}public Indicators.Sim22.Sim22_DeltaV3 Sim22_DeltaV3(ISeries<double> input , bool showAboveBelowEmaColors, bool showPaintBars, bool showPaintBarsOutline, AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum deltaType, AddOns.Sim22_DeltaUtilities.DeltaCotType deltaCotType, bool plotCumulativeDelta, bool resetDelta, bool invertDelta, GaplessEmaTypeEnum deltaGaplessEmaType, int periodEma, AddOns.Sim22_HaUtilities.HeikenAshiCalculationType heikenAshiCalculationType, AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum filterType, int filterSize){return indicator.Sim22_DeltaV3(input, showAboveBelowEmaColors, showPaintBars, showPaintBarsOutline, deltaType, deltaCotType, plotCumulativeDelta, resetDelta, invertDelta, deltaGaplessEmaType, periodEma, heikenAshiCalculationType, filterType, filterSize);}}}namespace NinjaTrader.NinjaScript.Strategies{public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase{public Indicators.Sim22.Sim22_DeltaV3 Sim22_DeltaV3(bool showAboveBelowEmaColors, bool showPaintBars, bool showPaintBarsOutline, AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum deltaType, AddOns.Sim22_DeltaUtilities.DeltaCotType deltaCotType, bool plotCumulativeDelta, bool resetDelta, bool invertDelta, GaplessEmaTypeEnum deltaGaplessEmaType, int periodEma, AddOns.Sim22_HaUtilities.HeikenAshiCalculationType heikenAshiCalculationType, AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum filterType, int filterSize){return indicator.Sim22_DeltaV3(Input, showAboveBelowEmaColors, showPaintBars, showPaintBarsOutline, deltaType, deltaCotType, plotCumulativeDelta, resetDelta, invertDelta, deltaGaplessEmaType, periodEma, heikenAshiCalculationType, filterType, filterSize);}public Indicators.Sim22.Sim22_DeltaV3 Sim22_DeltaV3(ISeries<double> input , bool showAboveBelowEmaColors, bool showPaintBars, bool showPaintBarsOutline, AddOns.Sim22_DeltaUtilities.DeltaCalculationTypeEnum deltaType, AddOns.Sim22_DeltaUtilities.DeltaCotType deltaCotType, bool plotCumulativeDelta, bool resetDelta, bool invertDelta, GaplessEmaTypeEnum deltaGaplessEmaType, int periodEma, AddOns.Sim22_HaUtilities.HeikenAshiCalculationType heikenAshiCalculationType, AddOns.Sim22_DeltaUtilities.DeltaTradeSizeFilterTypeEnum filterType, int filterSize){return indicator.Sim22_DeltaV3(input, showAboveBelowEmaColors, showPaintBars, showPaintBarsOutline, deltaType, deltaCotType, plotCumulativeDelta, resetDelta, invertDelta, deltaGaplessEmaType, periodEma, heikenAshiCalculationType, filterType, filterSize);}}}#endregion
ecco questo è lo script del codice , ma devo dire che insieme ce ne sono altri che servono come Utility , Test , e Gapless , di cui vi metto il nome (DeltaStrategyTest.cs Sim22_DeltaUtilities.cs Sim22_EmaGaplessV2.cs Sim22_HaUtilities.cs ) e non so se servona anche questi , che posso fornire , ma credo siano adibiti alla piattaforma . Ditemi voi Nicolas , Gazie
05/29/2018 at 4:42 PM #7161705/29/2018 at 5:22 PM #7162205/29/2018 at 5:23 PM #7162405/29/2018 at 9:31 PM #71643Ok, capisco meglio il codice del ninjatrader ora.
Mi rifiuto ma non è possibile tradurre questo codice, ci sono molte funzioni interne del linguaggio di programmazione di Ninjatrader che non possono essere replicate come semplici ..
Anche i prezzi Bid e Ask non sono disponibili in ProBuilder.
Puoi provare a cercare nel sito altre discussioni “delta cumulative” e codice interessante, come questo:05/30/2018 at 9:14 AM #71673 -
AuthorPosts
Find exclusive trading pro-tools on