public void setStrategyBase(NinjaTrader.NinjaScript.StrategyBase s) { strategybase = s; SetBaseCurrency(s.Account.Denomination); if (!string.IsNullOrEmpty(iehdata)) { try { BinaryFormatter bf = new BinaryFormatter(); MemoryStream memstr = new MemoryStream(Convert.FromBase64String(iehdata), true); iexithandling = ibKastl.Helper.BinaryFormatterHelper.Read <IExitHandling>(memstr, Assembly.GetExecutingAssembly()); Zweistein.NinjaTraderLog.Process("SingleSpread.setStrategyBase:", iexithandling.ToString(), NinjaTrader.Cbi.LogLevel.Warning, NinjaTrader.Cbi.LogCategories.Strategy); } catch (Exception e) { Zweistein.NinjaTraderLog.Process("SingleSpread.setStrategyBase:", e.Message, NinjaTrader.Cbi.LogLevel.Warning, NinjaTrader.Cbi.LogCategories.Strategy); if (strategybase.TraceOrders) { strategybase.Print(e.Message + " SOURCE:" + e.Source); } } } string tmp = "iexithandling="; if (iexithandling == null) { Zweistein.NinjaTraderLog.Process("SingleSpread.setStrategyBase:", "iexithandling==null", NinjaTrader.Cbi.LogLevel.Warning, NinjaTrader.Cbi.LogCategories.Strategy); tmp += "null"; } else { tmp += iexithandling.ToString(); } if (strategybase.TraceOrders) { strategybase.Print(tmp); } entry[0].setStrategyBase(s); entry[1].setStrategyBase(s); exit[0].setStrategyBase(s); exit[1].setStrategyBase(s); }
public SingleSpread(MarketPosition leg1, int _units, string strratio, NinjaTrader.NinjaScript.StrategyBase _strategybase) { mleg1 = leg1; strategybase = _strategybase; units = _units; Zweistein.FractionString f = new Zweistein.FractionString(strratio, ':'); lots1 = (int)f.Nominator * units; lots2 = (int)f.Denominator * units; if (lots1 == 0 || lots2 == 0) { throw new ArgumentNullException("SingleSpread , incomplete spread defintion: lots1 or lots2 == 0"); } SetBaseCurrency(_strategybase.Account.Denomination); entry = new HandledOrder[] { new HandledOrder(strategybase), new HandledOrder(strategybase) }; exit = new HandledOrder[] { new HandledOrder(strategybase), new HandledOrder(strategybase) }; }
public void FillPG(NinjaTrader.NinjaScript.StrategyBase _strategy) { _pg.SelectedObject = _strategy; foreach (PropertyItem p in _pg.Properties) { try { DisplayAttribute v = p.GetAttribute <DisplayAttribute>(); if (v == null) { continue; } if (v != null && v.GroupName == "RuntimeEditable") { continue; } } catch {} p.IsBrowsable = false; p.IsExpanded = true; } }
public void RebuildPositions(NinjaTrader.NinjaScript.StrategyBase strategy) { DateTime t = NinjaTrader.Core.Globals.Now; //SetBaseCurrency(strategy.Account.Denomination); PropertyInfo pi = strategy.GetType().GetProperty("FirstLoadUTC"); string FirstLoadUTC = (string)pi.GetValue(strategy); DateTime tmp = DateTime.Parse(FirstLoadUTC); DateTime mintime = new DateTime(tmp.Year, tmp.Month, tmp.Day, tmp.Hour, tmp.Minute, tmp.Second); mintime = mintime.AddHours(-1); for (int i = 0; i < 2; i++) { int n = 0; double avg = 0; //if(t.AddDays(-2) <mintime) mintime=t.AddDays(-2); // strategy.Print("RebuildPositions: mintime:"+ mintime.Kind.ToString() + " t:"+t.Kind.ToString()); // strategy.Print("RebuildPositions:"+ mintime.ToString()); System.Collections.ObjectModel.Collection <NinjaTrader.Cbi.Execution> ce = NinjaTrader.Cbi.Execution.DbGet(strategy.Account, strategy.Instruments[i], mintime, t); foreach (string s in exectokens[i]) { NinjaTrader.Cbi.Execution exec = ce.FirstOrDefault(x => x.OrderId == s); if (exec != null) { if (i == 0 && exec.MarketPosition == mleg1 || i == 1 && exec.MarketPosition != mleg1) { // we add averaging n += exec.Quantity; avg += exec.Price * exec.Quantity; } else { n -= exec.Quantity; avg -= exec.Price * exec.Quantity; } execs[i].Add(exec); strategy.Executions.Add(exec); strategy.Positions[i].AddExecution(exec); } } int u = 0; if (mleg1 == MarketPosition.Long) { u = 1; } if (mleg1 == MarketPosition.Short) { u = -1; } if (i == 0) { positionX = 1 * u * n; } if (i == 1) { positionY = -1 * u * n; } if (n != 0) { avg_fill[i] = avg / (double)n; } else { avg_fill[i] = 0; } } }
public SingleSpread(ref Queue <SingleSpread> transferfrom, NinjaTrader.Cbi.Currency currency) { int tmpunits = 0; Zweistein.FractionString f = null; SetBaseCurrency(currency); List <SingleSpread> toremove = new List <SingleSpread>(); foreach (SingleSpread s in transferfrom) { if (s.exit[0].Order != null || s.exit[1].Order != null) { continue; } if (s.mleg1 == NinjaTrader.Cbi.MarketPosition.Long) { if (s.positionX != s.lots1) { continue; } if (-1 * s.positionY != s.lots2) { continue; } } if (s.mleg1 == NinjaTrader.Cbi.MarketPosition.Short) { if (-1 * s.positionX != s.lots1) { continue; } if (s.positionY != s.lots2) { continue; } } if (s.mleg1 == NinjaTrader.Cbi.MarketPosition.Flat) { continue; } if (s.MarketPosition == NinjaTrader.Cbi.MarketPosition.Long) { tmpunits += s.NUnits; } if (s.MarketPosition == NinjaTrader.Cbi.MarketPosition.Short) { tmpunits -= s.NUnits; } totalprice0 += (double)Zweistein.CurrencyConversion.Cube.Convert((decimal)s.totalprice0, Zweistein.CurrencyConversion.ISO(s.BaseCurrency), Zweistein.CurrencyConversion.ISO(basecurrency)); totalprice1 += (double)Zweistein.CurrencyConversion.Cube.Convert((decimal)s.totalprice1, Zweistein.CurrencyConversion.ISO(s.BaseCurrency), Zweistein.CurrencyConversion.ISO(basecurrency)); positionX += s.positionX; positionY += s.positionY; if (s.units > 0) { int k1 = s.lots1 / s.units; int k2 = s.lots2 / s.units; if (f == null) { f = new Zweistein.FractionString(k1.ToString() + ":" + k2.ToString(), ':'); strategybase = s.strategybase; } } toremove.Add(s); } if (f == null) { throw new ArgumentNullException("SingleSpread(ref Queue<SingleSpread> spreads) , spreads is empty collection"); } if (tmpunits > 0) { this.mleg1 = NinjaTrader.Cbi.MarketPosition.Long; } else { if (tmpunits < 0) { this.mleg1 = NinjaTrader.Cbi.MarketPosition.Short; } } if (tmpunits == 0) { throw new ArgumentNullException("SingleSpread(ref Queue<SingleSpread> spreads) , tmpunits == 0"); } units = Math.Abs(tmpunits); lots1 = (int)f.Nominator * units; lots2 = (int)f.Denominator * units; if (lots1 == 0 || lots2 == 0) { throw new ArgumentNullException("SingleSpread , incomplete spread defintion: lots1 or lots2 == 0"); } foreach (SingleSpread r in toremove) { for (int i = 0; i < transferfrom.Count; i++) { SingleSpread q = transferfrom.Dequeue(); if (q == r) { break; } transferfrom.Enqueue(q); } } }
public HandledOrder(NinjaTrader.NinjaScript.StrategyBase _strategybase) { strategybase = _strategybase; }
public void setStrategyBase(NinjaTrader.NinjaScript.StrategyBase nb) { strategybase = nb; }