Example #1
0
        private void Update(EvaluationContext context)
        {
            var value   = Value.GetValue(context);
            var seed    = Seed.GetValue(context);
            var period  = Frequency.GetValue(context);
            var octaves = Octaves.GetValue(context);
            //var zoom = Zoom.GetValue(context);
            var rangeMin = RangeMin.GetValue(context);
            var rangeMax = RangeMax.GetValue(context);

            //var noiseSum = ComputePerlinNoise(value, period, octaves, seed);
            var noiseSum = MathUtils.PerlinNoise(value, period, octaves, seed);

            Result.Value = (noiseSum + 1f) * 0.5f * (rangeMax - rangeMin) + rangeMin;
        }
Example #2
0
        private void Update(EvaluationContext context)
        {
            var value    = Value.GetValue(context);
            var seed     = Seed.GetValue(context);
            var period   = Frequency.GetValue(context);
            var octaves  = Octaves.GetValue(context);
            var rangeMin = RangeMin.GetValue(context);
            var rangeMax = RangeMax.GetValue(context);
            var scale    = Scale.GetValue(context);
            var scaleXYZ = ScaleXYZ.GetValue(context);

            Result.Value = new Vector3(
                (MathUtils.PerlinNoise(value, period, octaves, seed) + 1f) * 0.5f * (rangeMax.X - rangeMin.X) + rangeMin.X,
                (MathUtils.PerlinNoise(value, period, octaves, seed + 123) + 1f) * 0.5f * (rangeMax.Y - rangeMin.Y) + rangeMin.Y,
                (MathUtils.PerlinNoise(value, period, octaves, seed + 234) + 1f) * 0.5f * (rangeMax.Z - rangeMin.Z) + rangeMin.Z) * scaleXYZ * scale;
        }
        private void UpdateRects()
        {
            Size textSize;
            Size valueSize;

            using (NativeTextRenderer NativeText = new NativeTextRenderer(CreateGraphics()))
            {
                textSize  = NativeText.MeasureLogString(_showText ? Text : "", SkinManager.getLogFontByType(_fontType));
                valueSize = NativeText.MeasureLogString(_showValue ? RangeMax.ToString() + _valueSuffix : "", SkinManager.getLogFontByType(_fontType));
            }
            _valueRectangle  = new Rectangle(Width - valueSize.Width - _thumbRadiusHoverPressed / 4, 0, valueSize.Width + _thumbRadiusHoverPressed / 4, Height);
            _textRectangle   = new Rectangle(0, 0, textSize.Width + _thumbRadiusHoverPressed / 4, Height);
            _sliderRectangle = new Rectangle(_textRectangle.Right, 0, _valueRectangle.Left - _textRectangle.Right, _thumbRadius);
            _mouseX          = _sliderRectangle.X + ((int)((double)_value / (double)(_rangeMax - _rangeMin) * (double)(_sliderRectangle.Width) - _thumbRadius / 2));
            RecalcutlateIndicator();
        }
Example #4
0
        private void Update(EvaluationContext context)
        {
            var value = OverrideTime.IsConnected
                            ? OverrideTime.GetValue(context)
                            : (float)context.LocalFxTime;

            var seed    = Seed.GetValue(context);
            var period  = Frequency.GetValue(context);
            var octaves = Octaves.GetValue(context);
            //var zoom = Zoom.GetValue(context);
            var rangeMin = RangeMin.GetValue(context);
            var rangeMax = RangeMax.GetValue(context);
            var scale    = Scale.GetValue(context);

            //var noiseSum = ComputePerlinNoise(value, period, octaves, seed);
            var noiseSum = MathUtils.PerlinNoise(value, period, octaves, seed);
            var dist     = rangeMax - rangeMin;

            Result.Value = ((scale * noiseSum + 1f) * 0.5f * dist + rangeMin);
        }
Example #5
0
        private void buttonText_Click(object sender, EventArgs e)
        {
            CustomDialog.KeyboardDialog kdlg = new CustomDialog.KeyboardDialog();
            kdlg.ValLower = RangeMin;
            kdlg.ValUpper = RangeMax;
            kdlg.DispMode = KeyboardDialog.KB_MODE.NUMBER;  //数値
            string strrange = RangeMax.ToString(StringForm);
            int    digits   = strrange.IndexOf('.');

            kdlg.LengthInt = (digits < 0) ? strrange.Length : digits;
            kdlg.LengthDec = (digits < 0) ? 0 : (strrange.Length - digits - 1);
            kdlg.AllLength = Math.Max(strrange.Length, RangeMin.ToString(StringForm).Length);
            string msgfmt = CommonProc.MessageText("G001");

            msgfmt            = msgfmt.Replace("%param", paramName);
            msgfmt            = msgfmt.Replace("%min", RangeMin.ToString(StringForm));
            msgfmt            = msgfmt.Replace("%max", RangeMax.ToString(StringForm));
            kdlg.Message_Text = msgfmt;
            kdlg.InputArea    = _buttonText.Text;
            kdlg.AllowNone    = allowNone;
            if (kdlg.ShowDialog() == DialogResult.OK)
            {
                if (allowNone && kdlg.InputArea == "")
                {
                    Value = double.NaN;
                }
                else
                {
                    Value = double.Parse(kdlg.InputArea);
                }
                if (ValueChanged != null)
                {
                    ValueChanged(sender, e);
                }
            }
            kdlg.Dispose();
            Invalidate();
        }
Example #6
0
        protected override void OnBarUpdate()
        {
            if (BarsInProgress == 1)
            {
                return;
            }
            if (Bars.IsFirstBarOfSession)
            {
                sessionOpen = Open[0];
                openTime    = Time[0];
                if (CurrentBars[(int)BarsUpdating.Daily] < RangePeriod)
                {
                    return;
                }

                normalAtr  = this.ToTickSize(raphael[0]);
                rangeSplit = this.ToTickSize(normalAtr / 2);
                renet.RecalculateSession(Time[0]);
                foreach (BrushSeries brush in PlotBrushes)
                {
                    brush[0] = Brushes.Transparent;
                }
            }

            if (renet.IsRegularTradingHours(Time[0]))
            {
                DayOpen[0] = sessionOpen;
                // draw rectangle for first 5 minutes maybe? Help try and catch lots of volume on tick chart
                // e.g., -> the wider the rectangle, the more activity in the first 5 minutes.


                if (normalAtr > 0 && rangeSplit > 0)
                {
                    RangeMax[0]  = DayOpen[0] + normalAtr;
                    RangeHigh[0] = RangeMax[0] - rangeSplit;

                    RangeMin[0] = DayOpen[0] - normalAtr;
                    RangeLow[0] = RangeMin[0] + rangeSplit;
                }

                if (!Bars.IsFirstBarOfSession)
                {
                    return;
                }

                double weakAtr     = this.ToTickSize(raphael.atrFromOpen[0]);
                double strongAtr   = this.ToTickSize(raphael.atrFromPriorOpen[0]);
                double weakSplit   = this.ToTickSize(weakAtr / 2);
                double strongSplit = this.ToTickSize(strongAtr / 2);

                priceZoneArray[0] = new PriceZone
                {
                    Name     = "Max Zone",
                    Index    = 0,
                    ZoneHigh = RangeMax[0],
                    ZoneLow  = RangeHigh[0],

                    StartTime = Time[0],
                    EndTime   = renet.CurrentSessionEnd(Time[0]),

                    ZoneStrong = DayOpen[0] + strongAtr,
                    ZoneWeak   = DayOpen[0] + weakAtr,
                };
                priceZoneArray[1] = new PriceZone
                {
                    Name       = "Bull Zone",
                    Index      = 1,
                    ZoneHigh   = RangeHigh[0],
                    ZoneLow    = DayOpen[0],
                    StartTime  = Time[0],
                    EndTime    = renet.CurrentSessionEnd(Time[0]),
                    ZoneStrong = priceZoneArray[0].ZoneStrong - strongSplit,
                    ZoneWeak   = priceZoneArray[0].ZoneWeak - weakSplit,
                };
                // there is *probably* an open zone burried in here somewhere
                // look at Fri Jun 17 2016... tests open - 4 ticks twice
                // ... could there be a weak/strong open?
                priceZoneArray[2] = new PriceZone
                {
                    Name       = "Open Zone",
                    Index      = 2,
                    ZoneHigh   = DayOpen[0],
                    ZoneLow    = DayOpen[0],
                    StartTime  = Time[0],
                    EndTime    = renet.CurrentSessionEnd(Time[0]),
                    ZoneStrong = DayOpen[0] + (4 * TickSize),
                    ZoneWeak   = DayOpen[0] - (4 * TickSize)
                };



                priceZoneArray[3] = new PriceZone
                {
                    Name       = "Bear Zone",
                    Index      = 3,
                    ZoneHigh   = DayOpen[0],
                    ZoneLow    = RangeLow[0],
                    StartTime  = Time[0],
                    EndTime    = renet.CurrentSessionEnd(Time[0]),
                    ZoneWeak   = (DayOpen[0] - weakAtr) + weakSplit,
                    ZoneStrong = (DayOpen[0] - strongAtr) + strongSplit
                };

                priceZoneArray[4] = new PriceZone
                {
                    Name       = "Min Zone",
                    Index      = 4,
                    ZoneHigh   = RangeLow[0],
                    ZoneLow    = RangeMin[0],
                    StartTime  = Time[0],
                    EndTime    = renet.CurrentSessionEnd(Time[0]),
                    ZoneWeak   = DayOpen[0] - weakAtr,
                    ZoneStrong = DayOpen[0] - strongAtr
                };
            }
            else
            {
                DayOpen.Reset();
                RangeMin.Reset();
                RangeMax.Reset();
                RangeLow.Reset();
                RangeHigh.Reset();
            }
            priceZoneSeries[0] = priceZoneArray;
        }