Inheritance: BaseSignal
 public WaveTexture(String color1, String color2, float scale = .1f, Signal<float> rscale = null, bool reactive = false)
 {
     this.scale = rscale ?? new Lift0f(scale);
     this.color1 = color1;
     this.color2 = color2;
     this.reactive = reactive;
 }
 public JuliaFractal(String algebra, String function, int precision, int iterations,
     Point3 location = null, float x = -0.162f, float y = 0.163f, float z = 0.560f, float k = -0.599f,
     Signal<float> rx = null, Signal<float> ry = null, Signal<float> rz = null, Signal<float> rk = null,
     Point3 rotation = null, PovTexture texture = null, String finish = null, bool reactive = false)
 {
     this.reactive = reactive;
     this.loc = location ?? new Point3(0, 0, 0, reactive: reactive);
     this.rot = rotation ?? new Point3(0, 0, 0, reactive: reactive);
     this.tex = texture ?? new POVColor("Red");
     this.finish = finish ?? "finish {phong .9 reflection .5}";
     this.x = rx ?? new Lift0f(x);
     this.y = ry ?? new Lift0f(y);
     this.z = rz ?? new Lift0f(z);
     this.k = rk ?? new Lift0f(k);
     if (algebra.Equals("quaternion"))
     {
         this.algebra = algebra;
     }
     else if (algebra.Equals(" hypercomplex"))
     {
         this.algebra = algebra;
     }
     else this.algebra = "quaternion";
     this.precision = precision;
     this.iterations = iterations;
     this.function = function;
 }
Example #3
0
        public Particle(Signal signal)
        {
            this.done = false;

            // Init the seek and flee
            seek = new Seek();
            seek.endingRadius = 0;

            // Initialize the origin and target
            origin.position = new Vector3(signal.origin.point.X, signal.origin.point.Y, 0);
            target.position = new Vector3(signal.location.X, signal.location.Y, 0);

            // Now move the origin a little
            int alpha = GameMode.random.Next(10, 50);
            int beta = GameMode.random.Next(10, 50);

            float x = (float)GameMode.random.NextDouble() * 2 * alpha - alpha;
            float y = (float)GameMode.random.NextDouble() * 2 * beta - beta;

            origin.position += new Vector3(x, y, 0);

            // And now the target
            alpha = GameMode.random.Next(0, 100);
            beta = GameMode.random.Next(0, 100);

            x = (float)GameMode.random.NextDouble() * 2 * alpha - alpha;
            y = (float)GameMode.random.NextDouble() * 2 * beta - beta;

            target.position += new Vector3(x, y, 0);
        }
        public void DescriptionTest()
        {
            var s = new Signal();
            s.Description = null;

            var validDescription = string.Empty;
            var random = new Random(1);
            for (int i = 0; i < Signal.MaxDescriptionLength; i++)
            {
                validDescription +=(char) random.Next(1, 255);
            }

            try
            {
                s.Description = validDescription;
            }
            catch (Exception)
            {
                Assert.Fail("Exception should not have been thrown.");
            }

            var invalidDescription = validDescription + (char)random.Next(1,255);
            try
            {
                s.Description = invalidDescription;
                Assert.Fail("ArgumentException should have been thrown.");
            }
            catch (ArgumentException)
            {
            }
            Wfdb.Quit();
        }
 public static bool IsMonomial(Signal signal, Signal[] generalizedVariables)
 {
     if(signal.IsDrivenByPortEntity("Multiply", "Std"))
         return signal.DrivenByPort.InputSignals.TrueForAll(delegate(Signal s) { return IsMonomialFactor(s, generalizedVariables); });
     else
         return IsMonomialFactor(signal, generalizedVariables);
 }
 public override bool EnterPort(Port port, Signal parent, bool again, bool root)
 {
     if(again)
         return false;
     _ports.Add(port);
     return true;
 }
Example #7
0
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            degreesSignal.Stop();
            degreesSignal.Dispose();
            degreesSignal = null;

            radiansSignal.Dispose();
            radiansSignal = null;

            sineSignal.Dispose();
            sineSignal = null;

            cosineSignal.Dispose();
            cosineSignal = null;

            signalTickCount.Dispose();
            signalTickCount = null;

            intervalChanged.Dispose();
            intervalChanged = null;

            runningEvent.Dispose();
            runningEvent = null;

            intervalBehavior.Dispose();
            intervalBehavior = null;

            runningBehavior.Dispose();
            runningBehavior = null;
        }
Example #8
0
		public override void HandleSignal(Signal signal)
		{
			var cytokine = signal as Cytokine;
			if (cytokine != null && 
				(cytokine.Type == CytokineType.IL2 || cytokine.Type == CytokineType.IL4))
			{
				var sender = Agents.FirstOrDefault(a => a.Address == signal.Sender);
				if (sender == null)
				{
					throw new Exception("Sender of the signal is not one of my child cells!");
				}

				if (sender is HelperTCell)
				{
					var helper = (HelperTCell)sender;
					foreach (var activator in helper.Activators)
					{
						//var apc = (APC)Agents.FirstOrDefault(a => a.Address == activator);
						//Log("Attack detected in node " + apc.ActivatedIn + 
							//" with costimulation " + cytokine.Concentration, LogLevel.Major);

						/*// report the detection results to the parent
						// TODO: the signal dispatch delay is dummy
						Scheduler.Schedule(Parent.HandleSignal, 0.0001, new Signal(apc.ActivatedIn,
							SignalType.Cytokine, signal.Concentration, null));*/
					}
				}
			}
			base.HandleSignal(signal);	// to forward the signal even if it is a cytokine in order to stimulate proliferation and differentiation
		}
Example #9
0
 /// <summary>
 ///     Removes a signal.
 /// </summary>
 /// <param name="signal">The signal.</param>
 public static void RemoveSignal(Signal signal)
 {
     if (Signals.Contains(signal))
     {
         Signals.Remove(signal);
     }
 }
Example #10
0
        /// <summary>
        ///   Generates a signal.
        /// </summary>
        /// 
        public Signal Generate(int samples)
        {
            Signal signal = new Signal(Channels, samples, SamplingRate, Format);

            if (Format == SampleFormat.Format32BitIeeeFloat)
            {
                unsafe
                {
                    float* dst = (float*)signal.Data.ToPointer();

                    float p = (float)(Frequency / SamplingRate);
                    float a = 2f * (float)Amplitude;

                    for (int i = 0; i < signal.Length; i++)
                    {
                        float q = i * p;
                        float t = a * (q - (float)Math.Round(q));

                        for (int c = 0; c < signal.Channels; c++, dst++)
                            *dst = t;
                    }
                }
            }

            return signal;
        }
        private static void UsingPInvoke()
        {
            Console.WriteLine("exgetvec Using PInvoke");

            int i, j, nsig;
            Sample[] v;
            Signal[] s;

            nsig = PInvoke.isigopen("data/100s", null, 0);
            if (nsig < 1)
                return;
            s = new Signal[nsig];

            if (PInvoke.isigopen("data/100s", s, nsig) != nsig)
                return;

            v = new Sample[nsig];
            for (i = 0; i < 10; i++)
            {
                if (PInvoke.getvec(v) < 0)
                    break;
                for (j = 0; j < nsig; j++)
                    Console.Write("{0} \t", v[j]);
                Console.WriteLine();
            }
            PInvoke.wfdbquit();
        }
Example #12
0
        /// <summary>
        ///   Generates a signal.
        /// </summary>
        /// 
        public Signal Generate(int samples)
        {
            Signal signal = new Signal(Channels, samples, SamplingRate, Format);

            unsafe
            {
                if (Format == SampleFormat.Format32BitIeeeFloat)
                {
                    var dst = (float*)signal.Data.ToPointer();
                    for (int i = 0; i < signal.Samples; i++)
                        for (int c = 0; c < signal.Channels; c++, dst++)
                            *dst = (float)(Function(i));
                }
                else if (Format == SampleFormat.Format64BitIeeeFloat)
                {
                    var dst = (double*)signal.Data.ToPointer();
                    for (int i = 0; i < signal.Samples; i++)
                        for (int c = 0; c < signal.Channels; c++, dst++)
                            *dst = (double)(Function(i));
                }
                else
                {
                    throw new UnsupportedSampleFormatException("Sample format is not supported by the filter.");
                }
            }

            return signal;
        }
 /**
  * create an event containing a signal, which modifies properties of the parent
  * event during rendering. Modifier types to be chosen from SignalSoundEvent.Modifier
  */
 public SignalSoundEvent(SignalSoundEvent.Modifier modifierType , Signal sig)
     : base()
 {
     _sig = sig;
     _modif = modifierType;
     UpdateDuration(_sig.Duration);
 }
        public bool RaiseSignal(Signal signal, long? id)
        {
            switch (signal)
            {
                case Signal.SOMEONE_WON:
                    foreach (var trigger in m_winTriggers)
                        if (trigger.IsTrue || trigger.RaiseSignal(signal, id))
                        { //Won!
                            trigger.DisplayMessage(true);
                            Won = true;
                            return true;
                        }

                    foreach (var trigger in m_loseTriggers)
                        if (trigger.IsTrue || trigger.RaiseSignal(signal, id))
                        {//Lost
                            trigger.DisplayMessage(false);
                            Lost = true;
                            return true;
                        }
                    return false;
                    break;

                default:
                    Debug.Assert(false,"Wrong signal received");
                    return false;
                    break;
            }
        }
Example #15
0
        public Signal Import(FileInfo file)
        {
            string textFromFile;
            using (StreamReader sr = file.OpenText())
            {
                textFromFile = sr.ReadToEnd();
            }
            textFromFile = textFromFile.Replace('.', ',');
            textFromFile = textFromFile.Trim('\n', ' ');
            string[] txtValues =  textFromFile.Split(' ', '\n', '\t');
            double[] values = new double[txtValues.Length];
            for (int i = 0; i < txtValues.Length; ++i)
                values[i] = double.Parse(txtValues[i]);

            if (values.Length < 2)
            {
                throw new Exception("Should be at least 2 values in file!");
            }
            try
            {
                var s = new Signal(values, file.Name.Remove(file.Name.Length - 4));
                return s;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #16
0
 /// <summary>
 ///     Adds a signal.
 /// </summary>
 /// <param name="signal">The signal.</param>
 public static void AddSignal(Signal signal)
 {
     if (!Signals.Contains(signal))
     {
         Signals.Add(signal);
     }
 }
 public override bool EnterSignal(Signal signal, Port parent, bool again, bool root)
 {
     if(again)
         return false;
     _signals.Add(signal);
     return true;
 }
Example #18
0
 /// <summary>
 ///   Applies the filter to a windowed signal.
 /// </summary>
 public Signal[] Apply(params Signal[] signal)
 {
     Signal[] s = new Signal[signal.Length];
     for (int i = 0; i < signal.Length; i++)
         s[i] = Apply(signal[i]);
     return s;
 }
        public static void RegisterTheorems(ILibrary library)
        {
            Analysis.DerivativeTransformation.Provider.Add(
                new Analysis.DerivativeTransformation(_entityId,
                delegate(Port port, SignalSet manipulatedInputs, Signal variable, bool hasManipulatedInputs)
                {
                    Signal[] outputs = new Signal[manipulatedInputs.Count];
                    ReadOnlySignalSet cotangents = StdBuilder.Cotangent(port.InputSignals);
                    for(int i = 0; i < outputs.Length; i++)
                        outputs[i] = Std.Multiply(port.OutputSignals[i], cotangents[i], manipulatedInputs[i]);
                    return StdBuilder.Negate(outputs);
                }));

            MathIdentifier typeId = new MathIdentifier("TrigonometricSubstitute", "Std");
            ITheoremProvider basicProvider;
            if(!library.TryLookupTheoremType(typeId, out basicProvider))
            {
                basicProvider = Binder.GetInstance<ITransformationTheoremProvider, MathIdentifier>(typeId);
                library.AddTheoremType(basicProvider);
            }
            ((ITransformationTheoremProvider)basicProvider).Add(
                new BasicTransformation(_entityId.DerivePostfix("TrigonometricSubstitute"), typeId,
                delegate() { return new Pattern(new EntityCondition(_entityId)); },
                delegate(Port port) { return ManipulationPlan.DoAlter; },
                delegate(Port port, SignalSet transformedInputs, bool hasTransformedInputs)
                {
                    return StdBuilder.Invert(StdBuilder.Sine(transformedInputs));
                    //Signal[] ret = new Signal[transformedInputs.Count];
                    //for(int i = 0; i < ret.Length; i++)
                    //    ret[i] = Std.Invert(Std.Sine(transformedInputs[i]));
                    //return ret;
                }));
        }
 protected override void DoTraverse(Signal rootSignal, IScanVisitor visitor, bool ignoreHold)
 {
     List<Guid> signals = new List<Guid>();
     List<Guid> ports = new List<Guid>();
     List<Guid> buses = new List<Guid>();
     TraverseSignal(signals, ports, buses, rootSignal, null, ignoreHold, visitor);
 }
Example #21
0
		public override void HandleSignal(Signal signal)
		{
			if (signal is Stimulation)
			{
				var stimulation = signal as Stimulation;
				var affinity = Pattern.Affinity(stimulation.Peptide, AffinityType.Euclidean);

				if (affinity >= Globals.HelperAffinityThreashold)
				{
					peptideAffinitySum += affinity;
					costimulationSum += stimulation.Concentration;
					Activators.Add(stimulation.Sender);

					if (!Activated && peptideAffinitySum + costimulationSum > Globals.HelperActivationThreshold)
					{
						Activated = true;

						//Secrete(new Cytokine(Address, CytokineType.IL2, costimulationSum));	// TODO: X64 stimulates growth and differentiation of T cell response
						//Secrete(new Cytokine(Address, CytokineType.IL4, costimulationSum));	// TODO: X64 stimulates proliferation and differentiation

						string nodes = "";
						foreach (var activator in Activators)
						{
							nodes += activator + ",";
						}
						Log("ALARM: Attack detected in node " + nodes.TrimEnd(new char[] { ',' }), LogLevel.Major);

						// die after activation
						Apoptosis();
					}
				}
			}
			base.HandleSignal(signal);
		}
        protected GenericFunctionProcess(bool[] inInput, bool[] inInternal, bool[] outOutput, bool[] outInternal)
        {
            if(inInput == null)
                throw new ArgumentNullException("inInput");
            if(inInternal == null)
                throw new ArgumentNullException("inInternal");
            if(outOutput == null)
                throw new ArgumentNullException("outOutput");
            if(outInternal == null)
                throw new ArgumentNullException("outInternal");

            this.inInput = inInput;
            this.inInternal = inInternal;
            this.outOutput = outOutput;
            this.outInternal = outInternal;

            //count mapped signals
            for(int i = 0; i < inInput.Length; i++)
                if(inInput[i]) inCount++;
            for(int i = 0; i < inInternal.Length; i++)
                if(inInternal[i]) inCount++;
            for(int i = 0; i < outOutput.Length; i++)
                if(outOutput[i]) outCount++;
            for(int i = 0; i < outInternal.Length; i++)
                if(outInternal[i]) outCount++;

            inputs = new Signal[inCount];
            outputs = new Signal[outCount];
        }
 public static IValueStructure MonomialDegree(Signal signal, Signal[] generalizedVariables)
 {
     if(Std.IsConstantAdditiveIdentity(signal))
         return NegativeInfinitySymbol.Instance;
     if(Array.Exists<Signal>(generalizedVariables, signal.Equals))
         return IntegerValue.One;
     if(!Array.Exists<Signal>(generalizedVariables, signal.DependsOn))
         return IntegerValue.Zero;
     ISignalSet factors;
     long deg = 0;
     if(signal.IsDrivenByPortEntity("Multiply", "Std"))
         factors = signal.DrivenByPort.InputSignals;
     else
         factors = new SignalSet(signal);
     for(int i = 0; i < factors.Count; i++)
     {
         if(Array.Exists<Signal>(generalizedVariables, factors[i].Equals))
             deg++;
         else if(factors[i].IsDrivenByPortEntity("Power", "Std"))
         {
             Signal b = signal.DrivenByPort.InputSignals[0];
             Signal e = signal.DrivenByPort.InputSignals[1];
             IntegerValue v;
             if(Array.Exists<Signal>(generalizedVariables, b.Equals) && (v = e.Value as IntegerValue) != null && v.Value > 0)
                 deg += v.Value;
         }
     }
     return new IntegerValue(deg);
 }
        private static void UsingPInvoke(int frequency)
        {
            try
            {
                Frequency f = frequency;
                Sample[] v = new Sample[2];
                Signal[] s = new Signal[2];
                Time t = 0, t0 = 0, t1 = 0;

                if (f <= 0)
                    f = PInvoke.sampfreq("data/100s");

                if (PInvoke.isigopen("data/100s", s, 2) < 1)
                    return;
                PInvoke.setifreq(f);
                t0 = PInvoke.strtim("1");
                PInvoke.isigsettime(t);
                t1 = PInvoke.strtim("2");
                for (t = t0; t <= t1; t++)
                {
                    if (PInvoke.getvec(v) < 0)
                        break;
                    Console.WriteLine("{0}\t{1}", v[0], v[1]);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #25
0
		public LogArgs( string str, LogType p, Signal s )
		{
			Message = str;
			Type = p;
			sig = s;
			timestamp = DateTime.Now;		   
		}
        /// <summary>
        ///   Applies the filter to a signal.
        /// </summary>
        protected unsafe override void ProcessFilter(Signal sourceData, Signal destinationData)
        {
            SampleFormat format = sourceData.SampleFormat;
            int samples = sourceData.Samples;

            if (format == SampleFormat.Format32BitIeeeFloat)
            {
                float* src = (float*)sourceData.Data.ToPointer();
                float* dst = (float*)destinationData.Data.ToPointer();

                for (int i = 0; i < samples; i++, dst++, src++)
                    *dst = System.Math.Abs(*src);
            }
            else if (format == SampleFormat.Format128BitComplex)
            {
                Complex* src = (Complex*)sourceData.Data.ToPointer();
                Complex* dst = (Complex*)destinationData.Data.ToPointer();

                Complex c = new Complex();

                for (int i = 0; i < samples; i++, dst++, src++)
                {
                    c.Re = (*src).Magnitude;
                    *dst = c;
                }
            }
        }
 public override bool FulfillsCondition(Signal output, Port port)
 {
     foreach(Condition c in _conditions)
         if(!c.FulfillsCondition(output, port))
             return false;
     return true;
 }
        public override bool FulfillsCondition(Signal output, Port port)
        {
            if(port == null)
                return false;

            return port.HasArchitectureLink && _match(port.CurrentArchitecture);
        }
 /**
 * create an event containing a signal, which modifies a parameter property of a DSP
 * event during rendering. Modifier type must be SignalSoundEvent.Modifier.PARAM !
 */
 public SignalSoundEvent(SignalSoundEvent.Modifier modifierType, Signal sig, int paramNumber)
     : base()
 {
     _sig = sig;
     _modif = modifierType;
     _paramNumber = paramNumber;
     UpdateDuration(_sig.Duration);
 }
 public void Traverse(Signal rootSignal, IScanVisitor visitor, bool ignoreHold)
 {
     //lock(??) {
     ScanStrategy strat = ProvideExecutableInstance();
     strat._activeScans++; //}
     try { strat.DoTraverse(rootSignal, visitor, ignoreHold); }
     finally { strat._activeScans--; }
 }
Example #31
0
 public static Signal AutoSimplify(Signal signal)
 {
     return(_transformer.Transform(signal, AutoSimplifyTransformation.TransformationTypeIdentifier, false));
 }
Example #32
0
 public static void ConstrainAlwaysNegative(Signal signal)
 {
     signal.EnableFlag(StdAspect.NegativeWithoutZeroConstraingFlag);
 }
Example #33
0
 /// <summary>
 /// Whether the signal is restricted to be an integer, that is one of ...,-3,-2,-1,0,1,2,3,...
 /// </summary>
 public static bool IsAlwaysInteger(Signal signal)
 {
     return(signal.IsFlagEnabled(StdAspect.IntegerConstraintFlag) ||
            IsConstantInteger(signal));
 }
Example #34
0
 public static void ConstrainAlwaysInteger(Signal signal)
 {
     signal.EnableFlag(StdAspect.IntegerConstraintFlag);
 }
Example #35
0
 public static bool IsConstantReal(Signal signal)
 {
     return(IsConstant(signal) && RealValue.CanConvertLosslessFrom(signal.Value));
 }
Example #36
0
 public static void ConstrainAlwaysReal(Signal signal)
 {
     signal.EnableFlag(StdAspect.RealConstraintFlag);
 }
Example #37
0
 public static bool IsConstantComplex(Signal signal)
 {
     return(IsConstant(signal) && ComplexValue.CanConvertLosslessFrom(signal.Value));
 }
Example #38
0
 partial void OnBeforeDelete(Signal signal);
Example #39
0
 partial void OnAfterDelete(Signal signal);
Example #40
0
 protected void ConnectEvent(string name, Native.D.signal_onevent handler)
 => Disposables.Add(Signal.Connect <Native.D.signal_onevent>(GtkWidget, name, handler));
Example #41
0
 void Connect <T>(string name, T handler) => Disposables.Add(Signal.Connect(GtkWidget, name, handler));
Example #42
0
 public bool LeaveSignal(Signal signal, Port parent, bool again, bool root)
 {
     return(_leaveSignal(signal, parent, again, root));
 }
Example #43
0
 public bool EnterSignal(Signal signal, Port parent, bool again, bool root)
 {
     return(_enterSignal(signal, parent, again, root));
 }
Example #44
0
        public static SignalSet Manipulate(IEnumerable <Signal> rootSignals, IManipulationVisitor visitor, bool ignoreHold)
        {
            Dictionary <Guid, ManipulationPlan> plans = new Dictionary <Guid, ManipulationPlan>();
            Dictionary <Guid, Signal>           signalReplacements = new Dictionary <Guid, Signal>();
            Dictionary <Guid, Signal>           sentinels          = new Dictionary <Guid, Signal>();

            // ## ESTIMATE MANIPULATION PLAN
            Scanner.ForEachPort(rootSignals, delegate(Port p)
            {
                if (!plans.ContainsKey(p.InstanceId))
                {
                    plans.Add(p.InstanceId, visitor.EstimatePlan(p));
                }
                return(true);
            }, ignoreHold);

            // ## OPTIMIZE MANIPULATION PLAN (cycle analysis)
            ManipulatorPlanReducer reducer = new ManipulatorPlanReducer(plans, ignoreHold);

            AllPathsStrategy.Instance.Traverse(rootSignals, reducer, ignoreHold);

            // ## EXECUTE MANIPULATION
            ManipulatorPlanExecutor executor = new ManipulatorPlanExecutor(plans, signalReplacements, sentinels, visitor);

            AllPathsStrategy.Instance.Traverse(rootSignals, executor, ignoreHold);

            // ## SELECT NEW SYSTEM
            SignalSet ret = new SignalSet();

            foreach (Signal root in rootSignals)
            {
                Signal r;
                if (!signalReplacements.TryGetValue(root.InstanceId, out r))
                {
                    r = root;
                }
                ret.Add(r);
            }

            // ## FIX SENTINELS ON SELECTED NEW SYSTEM
            Scanner.ForEachPort(ret, delegate(Port p)
            {
                // look for sentinels on all input signals
                ReadOnlySignalSet inputs = p.InputSignals;
                for (int i = 0; i < inputs.Count; i++)
                {
                    Signal input = inputs[i];
                    if (FixSentinel(ref input, sentinels, signalReplacements))
                    {
                        p.ReplaceInputSignalBinding(i, input);
                    }
                }
                return(true);
            }, ignoreHold);

            for (int i = 0; i < ret.Count; i++)
            {
                Signal r = ret[i];
                if (FixSentinel(ref r, sentinels, signalReplacements))
                {
                    ret[i] = r;
                }
            }

            // ## RETURN SELECTED NEW SYSTEM AS RESULT
            return(ret);
        }
Example #45
0
 public static void ConstrainAlwaysComplex(Signal signal)
 {
     signal.EnableFlag(StdAspect.ComplexConstraintFlag);
 }
Example #46
0
 partial void OnAfterPut(Signal signal);
Example #47
0
 /// <summary>
 /// Whether the signal is restricted to be a complex (of real parts).
 /// </summary>
 public static bool IsAlwaysComplex(Signal signal)
 {
     return(signal.IsFlagEnabled(StdAspect.ComplexConstraintFlag) ||
            IsConstantComplex(signal));
 }
Example #48
0
 partial void OnBeforePut(Signal signal);
Example #49
0
 partial void OnAfterGetById(Signal Signals, Guid signalId);
Example #50
0
 public SignalEventArgs(ObjectWrapper wrapper, Signal signal) : base(wrapper)
 {
     this.signal = signal;
 }
Example #51
0
 /// <summary>
 /// Whether the signal is restricted to be a real.
 /// </summary>
 public static bool IsAlwaysReal(Signal signal)
 {
     return(signal.IsFlagEnabled(StdAspect.RealConstraintFlag) ||
            IsConstantReal(signal));
 }
Example #52
0
 public virtual void Notify_SignalReceived(Signal signal)
 {
 }
Example #53
0
 public static bool IsConstantInteger(Signal signal)
 {
     return(IsConstant(signal) && IntegerValue.CanConvertLosslessFrom(signal.Value));
 }
Example #54
0
 public static void ConstrainAlwaysNonpositiveInteger(Signal signal)
 {
     ConstrainAlwaysInteger(signal);
     ConstrainAlwaysNonpositive(signal);
 }
Example #55
0
 public static void ConstrainAlwaysNonpositive(Signal signal)
 {
     signal.EnableFlag(StdAspect.NegativeOrZeroConstraintFlag);
 }
Example #56
0
 public static bool IsConstantNonpositiveInteger(Signal signal)
 {
     return(IsConstantInteger(signal) && IsAlwaysNonpositive(signal));
 }
Example #57
0
 /// <summary>Evaluates whether the signal is always one (1).</summary>
 public static bool IsConstantMultiplicativeIdentity(Signal signal)
 {
     return(IsConstant(signal) && IsMultiplicativeIdentity(signal));
 }
Example #58
0
 /// <summary>
 /// Whether the signal is restricted to be an integer >= 0, that is one of 0,1,2,3,...
 /// </summary>
 public static bool IsAlwaysNonnegativeInteger(Signal signal)
 {
     return(IsAlwaysInteger(signal) && IsAlwaysNonnegative(signal));
 }
Example #59
0
        public void open_short_position_with_market_order_protect_it_with_stop_and_limit_and_close_with_stop_multiple_trades()
        {
            // Настройки для торгуемой стратегии
            Symbol symbol = new Symbol("RTS-9.13_FT", 1, 8, 10, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ICollection <Symbol> >().Add(symbol);

            StrategyHeader strategyHeader = new StrategyHeader(1, "strategyHeader", "BP12345-RF-01", "RTS-9.13_FT", 10);

            this.tradingData.Get <ICollection <StrategyHeader> >().Add(strategyHeader);

            StopPointsSettings slSettings = new StopPointsSettings(strategyHeader, 300, false);

            this.tradingData.Get <ICollection <StopPointsSettings> >().Add(slSettings);

            ProfitPointsSettings tpSettings = new ProfitPointsSettings(strategyHeader, 500, false);

            this.tradingData.Get <ICollection <ProfitPointsSettings> >().Add(tpSettings);

            StopLossOrderSettings slOrderSettings = new StopLossOrderSettings(strategyHeader, 3600);

            this.tradingData.Get <ICollection <StopLossOrderSettings> >().Add(slOrderSettings);

            TakeProfitOrderSettings tpOrderSettings = new TakeProfitOrderSettings(strategyHeader, 3600);

            this.tradingData.Get <ICollection <TakeProfitOrderSettings> >().Add(tpOrderSettings);

            StrategyStopLossByPointsOnTick stopLossHandler =
                new StrategyStopLossByPointsOnTick(strategyHeader, this.tradingData, this.signalQueue, new NullLogger(), true);
            StrategyTakeProfitByPointsOnTick takeProfitHandler =
                new StrategyTakeProfitByPointsOnTick(strategyHeader, this.tradingData, this.signalQueue, new NullLogger(), true);

            PlaceStrategyStopLossByPointsOnTrade placeStopOnTradeHandler =
                new PlaceStrategyStopLossByPointsOnTrade(strategyHeader, this.tradingData, this.signalQueue, new NullLogger(), true);
            PlaceStrategyTakeProfitByPointsOnTrade placeTakeProfitOnTradeHandler =
                new PlaceStrategyTakeProfitByPointsOnTrade(strategyHeader, this.tradingData, this.signalQueue, new NullLogger(), true);


            // Сигнал на открытие позиции
            Signal inputSignal = new Signal(strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Sell, OrderType.Market, 150000, 0, 0);

            this.signalQueue.Enqueue(inputSignal);

            // Сигнал успешно обработан и заявка отправлена брокеру
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Order> >().Count());

            // Копия отправленной брокеру заявки на открытие позиции
            Order inputOrder = this.tradingData.Get <IEnumerable <Order> >().Last();

            // Брокер подтвердил получение заявки
            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(new OrderDeliveryConfirmation(inputOrder, BrokerDateTime.Make(DateTime.Now)));
            Assert.IsTrue(inputOrder.IsDelivered);

            // Брокер исполнил заявку несколькими сделками
            Trade inputTrade = new Trade(inputOrder, inputOrder.Portfolio, inputOrder.Symbol, 149900, -7, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(inputTrade);

            // Часть заявки исполнена, позиция открыта ровно на исполненный сделкой объем
            Assert.IsFalse(inputOrder.IsFilled);
            Assert.IsTrue(inputOrder.IsFilledPartially);
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Position> >().Count());
            Position position = this.tradingData.Get <IEnumerable <Position> >().Last();

            Assert.AreEqual(-7, position.Amount);

            // Заявки на приказы stop loss и take profit не генерируются, поскольку рыночная заявка не исполнена
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Order> >().Count());

            // Следующая сделка
            Trade t2 = new Trade(inputOrder, inputOrder.Portfolio, inputOrder.Symbol, 149920, -1, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(t2);

            // Часть заявки исполнена, позиция увеличилась ровно на исполненный сделкой объем
            Assert.IsFalse(inputOrder.IsFilled);
            Assert.IsTrue(inputOrder.IsFilledPartially);
            Assert.AreEqual(-8, position.Amount);

            // Заявки на приказы stop loss и take profit не генерируются, поскольку рыночная заявка не исполнена
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Order> >().Count());

            // Следующая сделка
            Trade t3 = new Trade(inputOrder, inputOrder.Portfolio, inputOrder.Symbol, 149950, -2, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(t3);

            // Заявка полностью исполнена, позиция увеличилась ровно на исполненный сделкой объем
            Assert.IsTrue(inputOrder.IsFilled);
            Assert.IsFalse(inputOrder.IsFilledPartially);
            Assert.AreEqual(-10, position.Amount);

            // Для позиции созданы и отправлены брокеру защитные стоп и тейк профит приказы
            Assert.AreEqual(3, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(3, this.tradingData.Get <IEnumerable <Order> >().Count());
            Order slOrder = this.tradingData.Get <IEnumerable <Order> >().Single(o => o.OrderType == OrderType.Stop);
            Order tpOrder = this.tradingData.Get <IEnumerable <Order> >().Single(o => o.OrderType == OrderType.Limit);

            // Цена защитных приказов установлена соответственно настройкам
            Assert.AreEqual(150300, slOrder.Stop);
            Assert.AreEqual(149500, tpOrder.Price);

            // Брокер подтверждает получение защитных приказов
            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(new OrderDeliveryConfirmation(slOrder, BrokerDateTime.Make(DateTime.Now)));
            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(new OrderDeliveryConfirmation(tpOrder, BrokerDateTime.Make(DateTime.Now)));
            Assert.IsTrue(slOrder.IsDelivered);
            Assert.IsTrue(tpOrder.IsDelivered);

            // Через некоторое время цена на рынке вырастает, срабатывает защитный стоп приказ и исполняется первая сделка
            Trade outputTrade = new Trade(slOrder, slOrder.Portfolio, slOrder.Symbol, 150310, 3, BrokerDateTime.Make(DateTime.Now));

            tradingData.Get <ObservableHashSet <Trade> >().Add(outputTrade);

            // Стоп приказ исполнен лишь частично. Позиция не закрыта. Take profit приказ не отменен
            Assert.IsFalse(slOrder.IsFilled);
            Assert.IsTrue(slOrder.IsFilledPartially);
            Assert.AreEqual(-7, position.Amount);
            Assert.IsFalse(tpOrder.IsCanceled);

            // Исполняется вторая сделка
            Trade ot2 = new Trade(slOrder, slOrder.Portfolio, slOrder.Symbol, 150320, 4, BrokerDateTime.Make(DateTime.Now));

            tradingData.Get <ObservableHashSet <Trade> >().Add(ot2);

            // Стоп приказ исполнен лишь частично. Позиция не закрыта. Take profit приказ не отменен
            Assert.IsFalse(slOrder.IsFilled);
            Assert.IsTrue(slOrder.IsFilledPartially);
            Assert.AreEqual(-3, position.Amount);
            Assert.IsFalse(tpOrder.IsCanceled);

            // Исполняется третья сделка
            Trade ot3 = new Trade(slOrder, slOrder.Portfolio, slOrder.Symbol, 150330, 3, BrokerDateTime.Make(DateTime.Now));

            tradingData.Get <ObservableHashSet <Trade> >().Add(ot3);

            // Стоп приказ исполнен
            Assert.IsTrue(slOrder.IsFilled);
            Assert.IsFalse(tpOrder.IsFilled);
            Assert.IsFalse(tpOrder.IsCanceled);

            // Позиция закрыта
            Assert.AreEqual(0, position.Amount);

            // Брокеру отправлен запрос на отмену приказа take profit
            Assert.AreEqual(1, this.tradingData.Get <ObservableHashSet <OrderCancellationRequest> >().Count);

            // Брокер подтверждает получение заявки на отмену приказа
            this.tradingData.Get <ObservableHashSet <OrderCancellationConfirmation> >().Add(new OrderCancellationConfirmation(tpOrder, BrokerDateTime.Make(DateTime.Now), "Заявка снята"));
            Assert.IsTrue(tpOrder.IsCanceled);
        }
 private static extern int sigaction(Signal sig, IntPtr act, IntPtr oact);