Beispiel #1
0
        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);
        }
Beispiel #2
0
        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) };
        }
Beispiel #3
0
 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;
     }
 }
Beispiel #4
0
        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;
                }
            }
        }
Beispiel #5
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);
                }
            }
        }
Beispiel #6
0
 public HandledOrder(NinjaTrader.NinjaScript.StrategyBase _strategybase)
 {
     strategybase = _strategybase;
 }
Beispiel #7
0
 public void setStrategyBase(NinjaTrader.NinjaScript.StrategyBase nb)
 {
     strategybase = nb;
 }