Example #1
0
        protected void SetUpArrows()
        {
//
            if ((cArrowUp != null) && Tools.GetById(cAUG).Equals(cArrowUp))
            {
                Tools.Remove(cArrowUp);
                cArrowUp = null;                 // Artifishial using...
            }
//
            if ((cArrowDown != null) && Tools.GetById(cADG).Equals(cArrowDown))
            {
                Tools.Remove(cArrowDown);
                cArrowDown = null;                 // Artifishial using...
            }
//
            if (Bars[Bars.Range.To - 1].Open <= Bars[Bars.Range.To - 1].Close)
            {
                cArrowUp       = Tools.Create <ArrowUp>();
                cAUG           = cArrowUp.Id;
                cArrowUp.Color = Color.Blue;
                cArrowUp.Width = 1;
                cArrowUp.Point = new ChartPoint(Bars[Bars.Range.To - 1].Time, Bars[Bars.Range.To - 1].Low);
            }
//
            if (Bars[Bars.Range.To - 1].Open >= Bars[Bars.Range.To - 1].Close)
            {
                cArrowDown       = Tools.Create <ArrowDown>();
                cADG             = cArrowDown.Id;
                cArrowDown.Color = Color.Red;
                cArrowDown.Width = 1;
                cArrowDown.Point = new ChartPoint(Bars[Bars.Range.To - 1].Time, Bars[Bars.Range.To - 1].High);
            }
//
        }
 /// <summary>
 /// Populate values from the base palette.
 /// </summary>
 public void PopulateFromBase()
 {
     // Populate only the designated styles
     Generic.PopulateFromBase(PaletteButtonSpecStyle.Generic);
     Close.PopulateFromBase(PaletteButtonSpecStyle.Close);
     Context.PopulateFromBase(PaletteButtonSpecStyle.Context);
     Next.PopulateFromBase(PaletteButtonSpecStyle.Next);
     Previous.PopulateFromBase(PaletteButtonSpecStyle.Previous);
     ArrowLeft.PopulateFromBase(PaletteButtonSpecStyle.ArrowLeft);
     ArrowRight.PopulateFromBase(PaletteButtonSpecStyle.ArrowRight);
     ArrowUp.PopulateFromBase(PaletteButtonSpecStyle.ArrowUp);
     ArrowDown.PopulateFromBase(PaletteButtonSpecStyle.ArrowDown);
     DropDown.PopulateFromBase(PaletteButtonSpecStyle.DropDown);
     PinVertical.PopulateFromBase(PaletteButtonSpecStyle.PinVertical);
     PinHorizontal.PopulateFromBase(PaletteButtonSpecStyle.PinHorizontal);
     FormClose.PopulateFromBase(PaletteButtonSpecStyle.FormClose);
     FormMax.PopulateFromBase(PaletteButtonSpecStyle.FormMax);
     FormMin.PopulateFromBase(PaletteButtonSpecStyle.FormMin);
     FormRestore.PopulateFromBase(PaletteButtonSpecStyle.FormRestore);
     PendantClose.PopulateFromBase(PaletteButtonSpecStyle.PendantClose);
     PendantRestore.PopulateFromBase(PaletteButtonSpecStyle.PendantRestore);
     PendantMin.PopulateFromBase(PaletteButtonSpecStyle.PendantMin);
     PendantRestore.PopulateFromBase(PaletteButtonSpecStyle.PendantRestore);
     WorkspaceMaximize.PopulateFromBase(PaletteButtonSpecStyle.WorkspaceMaximize);
     WorkspaceRestore.PopulateFromBase(PaletteButtonSpecStyle.WorkspaceRestore);
     RibbonMinimize.PopulateFromBase(PaletteButtonSpecStyle.RibbonMinimize);
     RibbonExpand.PopulateFromBase(PaletteButtonSpecStyle.RibbonExpand);
 }
Example #3
0
 public static void Dispose()
 {
     Background.Dispose();
     ArrowUp.Dispose();
     ArrowDown.Dispose();
     ArrowLeft.Dispose();
     ArrowRight.Dispose();
 }
Example #4
0
 protected override void Init()
 {
     // Event occurs once at the start of the strategy
     Print("Starting TS on account: {0}, comment: {1}", this.Account.Number, CommentText);
     Line1 = Tools.Create <HorizontalLine>();
     Line2 = Tools.Create <HorizontalLine>();
     Line3 = Tools.Create <HorizontalLine>();
     ad    = Tools.Create <ArrowDown>();
     au    = Tools.Create <ArrowUp>();
 }
Example #5
0
 /// <summary>
 ///  Long Entry Arrow
 /// </summary>
 /// <param name="inLongTrade"></param>
 public void showLongEntryArrow(bool inLongTrade)
 {
     if (inLongTrade)
     {
         return;
     }
     if (entry.longEntryPrice == null)
     {
         return;
     }
     if (High[0] > entry.longEntryPrice && Low[0] < entry.longEntryPrice)
     {
         //Draw.Text(this, "LE"+CurrentBar.ToString(), "LE", 0, entry.longEntryPrice - (TickSize * 10), Brushes.LimeGreen);
         //customDrawTrades( show: true,  simple: false);
         ArrowUp myArrowUp = Draw.ArrowUp(this, "LEmade" + CurrentBar.ToString(), true, 0, entry.longEntryPrice - (TickSize * 5), Brushes.LimeGreen);
         signals[0]        = 1;
         secondPivStopFlag = false;
         //debugEntry(isOn:true);
     }
 }
Example #6
0
        protected override void Init()
        {
            k  = 0;          // Для першого входження -
            kf = 0.090909;

            dlt = dl * Instrument.Point;         // Отступ от стопа


            frU1 = 0.0; frU2 = 0.0; frU3 = 0.0; frD1 = 0.0; frD2 = 0.0; frD3 = 0.0;

            InitLogFile();              // Запись логов
            // Прямоугольники
            toolRectangle            = Tools.Create <Rectangle>(); toolRectangle.BorderColor = Color.Aqua; toolRectangle.Color = Color.DarkSeaGreen; toolRectangle.BorderColor = Color.Blue;
            toolRectangle1           = Tools.Create <Rectangle>(); toolRectangle1.BorderColor = Color.Aqua; toolRectangle1.Color = Color.DarkSeaGreen;
            toolArrowUp              = Tools.Create <ArrowUp>();
            toolArrowDown            = Tools.Create <ArrowDown>();
            toolTriangle             = Tools.Create <Triangle>();
            toolTriangle.Color       = Color.DarkSeaGreen;
            toolTriangle.BorderColor = Color.Blue;
            toolTriangle.BorderWidth = 2;
            NKZText          = Tools.Create <Text>();
            NKZText.Color    = Color.Blue;
            NKZText.FontSize = 12;

            lnkz = Tools.Create <HorizontalLine>();


            _frInd       = GetIndicator <Fractals>(Instrument.Id, Timeframe);
            _frInd.Range = frac - 2;

            ki = 0;

            // 10/09/2018
            if (Instrument.Name == "EURUSD")
            {
                NKZ = 506;
            }
            if (Instrument.Name == "GBPUSD")
            {
                NKZ = 660;
            }
            if (Instrument.Name == "USDJPY")
            {
                NKZ = 570;
            }
            if (Instrument.Name == "USDCHF")
            {
                NKZ = 551;
            }
            if (Instrument.Name == "AUDUSD")
            {
                NKZ = 343;
            }
            if (Instrument.Name == "USDCAD")
            {
                NKZ = 508;
            }
            if (Instrument.Name == "NZDUSD")
            {
                NKZ = 330;
            }
            if (Instrument.Name == "AUDCAD")
            {
                NKZ = 357;
            }
            if (Instrument.Name == "AUDJPY")
            {
                NKZ = 550;
            }
            if (Instrument.Name == "AUDNZD")
            {
                NKZ = 412;
            }
            if (Instrument.Name == "CHFJPY")
            {
                NKZ = 1430;
            }
            if (Instrument.Name == "EURAUD")
            {
                NKZ = 682;
            }
            if (Instrument.Name == "EURCAD")
            {
                NKZ = 726;
            }
            if (Instrument.Name == "EURCHF")
            {
                NKZ = 682;
            }
            if (Instrument.Name == "EURGBP")
            {
                NKZ = 484;
            }
            if (Instrument.Name == "EURJPY")
            {
                NKZ = 781;
            }
            if (Instrument.Name == "GBPCHF")
            {
                NKZ = 924;
            }
            if (Instrument.Name == "GBPJPY")
            {
                NKZ = 1045;
            }
        }
Example #7
0
        protected override void OnBarUpdate()
        {
            //******************************************		Swing Low - Higher Low	************************************************
            if (CurrentBar > strength + 1)
            {
                if (Swing(Low, 3).SwingLow[0] == Low[strength + 1])
                {
                    //DrawDot( "swingL" + CurrentBar, true, strength + 1, Low[strength + 1] , Color.Lime );
                    // update bar array
                    pivLowBar[2] = pivLowBar[1];
                    pivLowBar[1] = pivLowBar[0];
                    pivLowBar[0] = CurrentBar - (strength + 1);
                    //update price array
                    pivLowPrice[2] = pivLowPrice[1];
                    pivLowPrice[1] = pivLowPrice[0];
                    pivLowPrice[0] = Low[strength + 1];

                    // mark Higher pivot Low
                    if (pivLowPrice[0] > pivLowPrice[1])
                    {
                        if (HPL_Counter == 0)
                        {
                            Draw.Dot(this, "swingL" + CurrentBar.ToString(), true, strength + 1, Low[strength + 1] - TickSize, Brushes.LimeGreen);
                        }
                        HPL_Counter = HPL_Counter + 1;
                        //LPH_Counter = 0;
                        //if( HPL_Counter > 2 )
                        //	DrawText("hplc"+CurrentBar, HPL_Counter.ToString(),0, pivLowPrice[0]-TickSize , Color.Lime);
                        if (HPL_Counter == 2)
                        {
                            // DrawArrowUp("hpl"+CurrentBar, 0, pivLowPrice[0]-TickSize, Color.Lime);
                            ArrowUp myArrow = Draw.ArrowUp(this, "hpl" + CurrentBar.ToString(), true, 0, pivLowPrice[0] - TickSize, Brushes.LimeGreen);
                            myArrow.OutlineBrush = Brushes.Green;
                            //DrawText("hplc"+CurrentBar, "_____",2, pivLowPrice[0] , Color.Lime);
                            Draw.Text(this, "hplc" + CurrentBar.ToString(), "_____", 2, pivLowPrice[0], Brushes.Green);
                        }
                        //DrawLine( "BotLine"+CurrentBar,  pivLowBar[0]+(strength+1) - pivLowBar[1], pivLowPrice[1],
                        //strength+1, pivLowPrice[0], Color.Green);
                    }
                    if (pivLowPrice[0] < pivLowPrice[1])
                    {
                        HPL_Counter = 0;
                    }
                }
            }

            //******************************************		Swing High - Lower High	************************************************
            if (CurrentBar > strength + 1)
            {
                if (Swing(High, 3).SwingHigh[0] == High[strength + 1])
                {
                    // Update Bar Array
                    pivHighBar[2] = pivHighBar[1];
                    pivHighBar[1] = pivHighBar[0];
                    pivHighBar[0] = CurrentBar - (strength + 1);
                    // update price array
                    pivHighPrice[2] = pivHighPrice[1];
                    pivHighPrice[1] = pivHighPrice[0];
                    pivHighPrice[0] = High[strength + 1];
                    // mark Lower pivot High -- Top
                    if (pivHighPrice[0] < pivHighPrice[1])                              //
                    {
                        if (LPH_Counter == 0)
                        {
                            Draw.Dot(this, "swingH" + CurrentBar.ToString(), true, strength + 1, High[strength + 1] + TickSize, Brushes.Crimson);
                        }
                        LPH_Counter = LPH_Counter + 1;
                        //HPL_Counter = 0;
                        //if( LPH_Counter > 2 )
                        //	DrawText("lphc"+CurrentBar, LPH_Counter.ToString(), strength+1, pivHighPrice[0]+TickSize , Color.Red);
                        if (LPH_Counter == 2)
                        {
                            //DrawArrowDown("lph"+CurrentBar, 0, pivHighPrice[0]+TickSize, Color.Red);
                            ArrowDown myArrowDn = Draw.ArrowDown(this, "lph" + CurrentBar.ToString(), true, 0, pivHighPrice[0] + TickSize, Brushes.Crimson);
                            myArrowDn.OutlineBrush = Brushes.Red;
                            //DrawText("lphc"+CurrentBar, "_____", 2, pivHighPrice[0] , Color.Red);
                            Draw.Text(this, "lphc" + CurrentBar.ToString(), "_____", 2, pivHighPrice[0], Brushes.Red);
                        }
                        //DrawLine( "TopLine"+CurrentBar,  pivHighBar[0]+(strength+1) - pivHighBar[1], pivHighPrice[1],
                        //strength+1, pivHighPrice[0], Color.DarkRed);
                    }
                    if (pivHighPrice[0] > pivHighPrice[1])
                    {
                        LPH_Counter = 0;
                    }
                }
            }
        }
        protected override void OnBarUpdate()
        {
            #region Ablesys Signals

            if (CurrentBars[0] < 20)
            {
                return;
            }

            // set up higher time frame
            foreach (int CurrentBarI in CurrentBars)
            {
                if (CurrentBarI < BarsRequiredToPlot)
                {
                    return;
                }
            }

            // HTF bars
            if (BarsInProgress == 1)
            {
                LowerHTF = AblesysT2(dATR, dPeriod, dRisk).Lower[0];
                UpperHTF = AblesysT2(dATR, dPeriod, dRisk).Upper[0];

                if (LowerHTF != 0)                              // short signal
                {
                    HTFdn[0] = LowerHTF;
                    HTFstate = 0;
                }
                if (UpperHTF != 0)                              // Long signal
                {
                    HTFup[0] = UpperHTF;
                    HTFstate = 1;
                }
                return;
            }

            // lower time frame bars
            if (BarsInProgress == 0)
            {
                // Ablesys trend 1
                myDataSeries[0] = (-100 * (MAX(High, Period)[0] - Close[0]) / (MAX(High, Period)[0] - MIN(Low, Period)[0] == 0 ? 1 : MAX(High, Period)[0] - MIN(Low, Period)[0]));

                if (myDataSeries[0] >= -30)
                {
                    CandleOutlineBrush = Brushes.DodgerBlue;
                    if (Open[0] < Close[0])
                    {
                        BarBrush = Brushes.Transparent;
                    }
                    else
                    {
                        BarBrush = Brushes.DodgerBlue;
                    }
                    trend[0] = 1;
                }
                else
                if (myDataSeries[0] <= -70)
                {
                    CandleOutlineBrush = Brushes.Red;
                    if (Open[0] < Close[0])
                    {
                        BarBrush = Brushes.Transparent;
                    }
                    else
                    {
                        BarBrush = Brushes.Red;
                    }
                    trend[0] = -1;
                }
                else
                {
                    CandleOutlineBrush = Brushes.ForestGreen;
                    if (Open[0] < Close[0])
                    {
                        BarBrush = Brushes.Transparent;
                    }
                    else
                    {
                        BarBrush = Brushes.Lime;
                    }
                    trend[0] = 0;
                }

                UpperLTF = AblesysT2(ATR, Period, Risk).Upper[0];
                LowerLTF = AblesysT2(ATR, Period, Risk).Lower[0];

                if (LowerLTF != 0)                  // short signal
                {
                    ATRTrailingDn[0] = LowerLTF;
                    LTFstate         = 0;
                    ATRTrailingUp.Reset();
                }
                if (UpperLTF != 0)
                {
                    ATRTrailingUp[0] = UpperLTF;                                // Long signal
                    LTFstate         = 1;
                }

                // Show MTF Confluence
                if (colorBarsAgreement)
                {
                    BarBrush           = Brushes.Lime;
                    CandleOutlineBrush = Brushes.Lime;
                    if (Close[0] > Open[0])
                    {
                        BarBrush = Brushes.Transparent;
                    }
                }

                #endregion

                #region Short Entry
                if (HTFstate == 0 && LTFstate == 0)                             // short signal
                {
                    if (colorBarsAgreement)
                    {
                        BarBrush           = Brushes.Red;
                        CandleOutlineBrush = Brushes.Red;
                        if (Close[0] > Open[0])
                        {
                            BarBrush = Brushes.Transparent;
                        }
                    }

                    /// show entry near 10 sma
                    if (enterNearMA)
                    {
                        shortFilter = maPullback(Bullish: false, BarDir: barDir);                                            // this one true
                    }
                    /// show entry near ma
                    if (enterT2)
                    {
                        shortFilter = enterNearT2(Bullish: false);
                        Print("Inside Enter T2");
                    }
                    /// show entry with T1
                    if (enterT1)
                    {
                        shortFilter = enterWithT1(Bullish: false, BarDir: barDir);
                    }


                    if (LowerLTF != 0 && shortFilter)
                    {
                        if (showTradesChart)
                        {
                            ArrowDown myArrowDn = Draw.ArrowDown(this, "Sell" + CurrentBar.ToString(), true, Time[0], High[0], Brushes.Red);
                            myArrowDn.OutlineBrush = Brushes.Black;
                        }
                        marketPosition = -1;
                        entryPrice     = Close[0];
                        numTrades     += 1;
                        entryBarNumber = CurrentBar;
                        signals[0]     = -1;
                        // set stop + target
                        origStop   = LowerLTF;
                        origTarget = Close[0] - (origStop - Close[0]);

                        // set stop + target
                        origStop     = LowerLTF;
                        stopDistance = (origStop - Close[0]);
                        // min target
                        if (stopDistance < minStopDistance)
                        {
                            stopDistance = minStopDistance;
                        }
                        origTarget = Close[0] - stopDistance;
                    }
                }
                #endregion

                #region Long Entry
                ///----- Long signal	-----
                if (HTFstate == 1 && LTFstate == 1)
                {
                    if (colorBarsAgreement)
                    {
                        BarBrush           = Brushes.DodgerBlue;
                        CandleOutlineBrush = Brushes.DodgerBlue;
                        if (Close[0] > Open[0])
                        {
                            BarBrush = Brushes.Transparent;
                        }
                    }

                    /// show entry near 10 sma
                    if (enterNearMA)
                    {
                        longFilter = maPullback(Bullish: true, BarDir: barDir);
                    }
                    /// show entry near ma
                    if (enterT2)
                    {
                        longFilter = enterNearT2(Bullish: true);
                    }
                    /// show entry with T1
                    if (enterT1)
                    {
                        longFilter = enterWithT1(Bullish: true, BarDir: barDir);
                    }

                    if (longFilter)
                    {
                        if (showTradesChart)
                        {
                            ArrowUp myArrowUp = Draw.ArrowUp(this, "Buy" + CurrentBar.ToString(), true, Time[0], Low[0], Brushes.DodgerBlue);
                            myArrowUp.OutlineBrush = Brushes.DodgerBlue;
                        }
                        marketPosition = 1;
                        entryPrice     = Close[0];
                        numTrades     += 1;
                        entryBarNumber = CurrentBar;
                        signals[0]     = 1;
                        // set stop + target
                        origStop     = UpperLTF;
                        stopDistance = (Close[0] - origStop);
                        // min target
                        if (stopDistance < minStopDistance)
                        {
                            stopDistance = minStopDistance;
                        }

                        origTarget = Close[0] + stopDistance;
                    }
                }
                #endregion

                #region Long Exits
                // show orig stop and tgt
                if (showTradesChart && marketPosition != 0 && useAtrTraget)
                {
                    Draw.Text(this, "stop" + CurrentBar.ToString(), "-", 0, origStop, Brushes.Red);
                    Draw.Text(this, "tgt" + CurrentBar.ToString(), "-", 0, origTarget, Brushes.Green);
                }

                //---- show LX at close < atr stop[1]
                if (useAtrStop && marketPosition == 1 && Close[0] < AblesysT2(ATR, Period, Risk).Upper[1] && CurrentBar > entryBarNumber)
                {
                    marketPosition = 0;
                    if (showTradesChart)
                    {
                        Dot myDot = Draw.Dot(this, "LX" + CurrentBar.ToString(), true, 0, Low[0] - TickSize, Brushes.Blue);
                    }
                    exitPrice       = Close[0];
                    exitBarNumber   = CurrentBar;
                    tradeProfitLoss = profitLossCalc(longEntry: true);
                    RecordResults(onChart: showTradesChart, showLog: showTradesLog);
                    signals[0] = 2;
                }

                // useAtrTraget Long
                if (useAtrTraget)
                {
                    if (marketPosition == 1 && CurrentBar > entryBarNumber)
                    {
                        // target hit
                        if (High[0] >= origTarget)
                        {
                            if (showTradesChart)
                            {
                                Dot myDot = Draw.Dot(this, "LX" + CurrentBar.ToString(), true, 0, origTarget, Brushes.DodgerBlue);
                            }
                            exitPrice       = origTarget;
                            marketPosition  = 0;
                            exitBarNumber   = CurrentBar;
                            tradeProfitLoss = profitLossCalc(longEntry: true);
                            signals[0]      = 2;
                        }

                        // stop hit
                        if (Close[0] < origStop)
                        {
                            if (showTradesChart)
                            {
                                Dot myDot = Draw.Dot(this, "LX" + CurrentBar.ToString(), true, 0, origStop, Brushes.DodgerBlue);
                            }
                            exitPrice       = Close[0];
                            marketPosition  = 0;
                            exitBarNumber   = CurrentBar;
                            tradeProfitLoss = profitLossCalc(longEntry: true);
                            signals[0]      = 2;
                        }
                        RecordResults(onChart: showTradesChart, showLog: showTradesLog);
                    }
                }


                #endregion

                #region Short Exits
                // show SX at close > atr stop[1]
                if (useAtrStop && marketPosition == -1 && Close[0] > AblesysT2(ATR, Period, Risk).Lower[1] && CurrentBar > entryBarNumber)
                {
                    marketPosition = 0;
                    if (showTradesChart)
                    {
                        Dot myDot = Draw.Dot(this, "SX" + CurrentBar.ToString(), true, 0, High[0] + TickSize, Brushes.Red);
                    }
                    exitPrice       = Close[0];
                    tradeProfitLoss = profitLossCalc(longEntry: false);
                    RecordResults(onChart: showTradesChart, showLog: showTradesLog);
                    exitBarNumber = CurrentBar;
                    signals[0]    = -2;
                }

                // useAtrTraget Short
                if (useAtrTraget && marketPosition == -1 && CurrentBar > entryBarNumber)
                {
                    // target hit
                    if (Low[0] <= origTarget)
                    {
                        if (showTradesChart)
                        {
                            Dot myDot = Draw.Dot(this, "SX" + CurrentBar.ToString(), true, 0, origTarget, Brushes.Red);
                        }
                        exitPrice       = origTarget;
                        marketPosition  = 0;
                        exitBarNumber   = CurrentBar;
                        tradeProfitLoss = profitLossCalc(longEntry: false);
                        signals[0]      = -2;
                    }

                    // stop hit
                    if (Close[0] > origStop)
                    {
                        if (showTradesChart)
                        {
                            Dot myDot = Draw.Dot(this, "SX" + CurrentBar.ToString(), true, 0, origStop, Brushes.Red);
                        }
                        exitPrice       = Close[0];
                        marketPosition  = 0;
                        exitBarNumber   = CurrentBar;
                        tradeProfitLoss = profitLossCalc(longEntry: false);
                        signals[0]      = -2;
                    }

                    RecordResults(onChart: showTradesChart, showLog: showTradesLog);
                }
            }
            #endregion
        }
Example #9
0
        protected override void OnBarUpdate()
        {
            if (CurrentBar < SlowMaPeriod)
            {
                return;
            }

            double fastMa = EMA(FastMaPeriod)[0];
            double slowMa = EMA(SlowMaPeriod)[0];

            FastMaPlot[0] = fastMa;
            SlowMaPlot[0] = slowMa;

            double diff = fastMa - slowMa;
            //diffSeries[0] = diff;
            //double diffMa = EMA(diffSeries, DiffMaLength)[0];

            Brush trendBrush = fastMa < slowMa ? BearishBrush : BullishBrush;

            PlotBrushes[0][0] = trendBrush;

            bool isGreenOneBack = Close[0] > Open[0];
            bool isGreenTwoBack = Close[1] > Open[1];
            bool isRedOneBack   = Close[0] < Open[0];
            bool isRedTwoBack   = Close[1] < Open[1];

            highLowSeries[0] = (High[0] - Low[0]) / TickSize;
            double tickRange      = EMA(highLowSeries, TickRangePeriod)[0];
            bool   validTickRange = tickRange > MinTickRange && tickRange < MaxTickRange;

            String alertText = String.Format("{0:C2} / {1:N2} / {2:N2}", Close[0], tickRange, diff);

            Print(String.Format("GoLong: {0}", GoLong));

            bool buy = GoLong && validTickRange && isRedTwoBack && isGreenOneBack && diff > MinMaDiff && diff < MaxMaDiff;

            if (buy)
            {
                ArrowUp buyArrow = Draw.ArrowUp(this, String.Format("buy_arrow_{0}", CurrentBar), true, 0, Low[0] - (4 * TickSize), Brushes.Yellow);

                if (FireAlerts)
                {
                    Alert(String.Format("buy_alert_{0}", CurrentBar), Priority.High, alertText,
                          NinjaTrader.Core.Globals.InstallDir + @"\sounds\Alert1.wav", 10, Brushes.Green, Brushes.White);
                }

                Signal = 1;
            }

            bool sell = GoShort && validTickRange && isGreenTwoBack && isRedOneBack && diff <-MinMaDiff && diff> -MaxMaDiff;

            if (sell)
            {
                ArrowDown sellArrow = Draw.ArrowDown(this, String.Format("sell_arrow_{0}", CurrentBar), true, 0, High[0] + (4 * TickSize), Brushes.Pink);

                if (FireAlerts)
                {
                    Alert(String.Format("sell_alert_{0}", CurrentBar), Priority.High, alertText,
                          NinjaTrader.Core.Globals.InstallDir + @"\sounds\Alert1.wav", 10, Brushes.Red, Brushes.White);
                }

                Signal = -1;
            }

            if (!buy && !sell)
            {
                Signal = 0;
            }

//			Draw.TextFixed(this, "smaDiff", String.Format("ATR: {0:N0}, SMA Diff: {1:N2}", tickRange, diff), TextPosition.TopRight,
//				ChartControl.Properties.ChartText, ChartControl.Properties.LabelFont, Brushes.Transparent, trendBrush, 100);
        }
Example #10
0
        protected override void Init()
        {
            k  = 0;          // Для першого входження -
            kf = 0.090909;

            _frInd       = GetIndicator <Fractals>(Instrument.Id, Timeframe);
            _frInd.Range = frac - 2;

            dlt = dl * Instrument.Point;         // Отступ от стопа


            frU1 = 0.0; frU2 = 0.0; frU3 = 0.0; frD1 = 0.0; frD2 = 0.0; frD3 = 0.0;
            if (tu)
            {
                zmax = dt1 * Instrument.Point;
                frU1 = fr1 * Instrument.Point; tmU1 = tm1;
                frU2 = fr2 * Instrument.Point; tmU2 = tm2;
                frU3 = fr2 * Instrument.Point; tmU3 = tm2;
                toolTriangle.Point1 = new ChartPoint(tmU1, frU1);
                toolTriangle.Point2 = new ChartPoint(tmU2, frU2);
                toolTriangle.Point3 = new ChartPoint(tmU3, frU3);
                XXPrint("INIT - {0} - frU1={1} frU2={2} frU3={3} - zmax={4}", Bars[Bars.Range.To - frac].Time, frU1, frU2, frU3, zmax);
            }
            if (td)
            {
                zmin = dt1 * Instrument.Point;
                frD1 = fr1 * Instrument.Point; tmD1 = tm1;
                frD2 = fr2 * Instrument.Point; tmD2 = tm2;
                frD3 = fr2 * Instrument.Point; tmD3 = tm2;
                toolTriangle.Point1 = new ChartPoint(tmD1, frD1);
                toolTriangle.Point2 = new ChartPoint(tmD2, frD2);
                toolTriangle.Point3 = new ChartPoint(tmD3, frD3);
                XXPrint("INIT - {0} - frD1={1} frD2={2} frD3={3} - zmin={4}", Bars[Bars.Range.To - frac].Time, frD1, frD2, frD3, zmin);
            }
            InitLogFile();              // Запись логов
            // Прямоугольники
            toolRectangle            = Tools.Create <Rectangle>(); toolRectangle.BorderColor = Color.Aqua; toolRectangle.Color = Color.DarkSeaGreen; toolRectangle.BorderColor = Color.Blue;
            toolRectangle1           = Tools.Create <Rectangle>(); toolRectangle1.BorderColor = Color.Aqua; toolRectangle1.Color = Color.DarkSeaGreen;
            toolArrowUp              = Tools.Create <ArrowUp>();
            toolArrowDown            = Tools.Create <ArrowDown>();
            toolTriangle             = Tools.Create <Triangle>();
            toolTriangle.Color       = Color.DarkSeaGreen;
            toolTriangle.BorderColor = Color.Blue;
            toolTriangle.BorderWidth = 2;
            NKZText          = Tools.Create <Text>();
            NKZText.Color    = Color.Blue;
            NKZText.FontSize = 12;

            lnkz = Tools.Create <HorizontalLine>();



            ki = 0;

            // 10/09/2018
            if (Instrument.Name == "EURUSD")
            {
                NKZ = 506;
            }
            if (Instrument.Name == "GBPUSD")
            {
                NKZ = 660;
            }
            if (Instrument.Name == "USDJPY")
            {
                NKZ = 570;
            }
            if (Instrument.Name == "USDCHF")
            {
                NKZ = 551;
            }
            if (Instrument.Name == "AUDUSD")
            {
                NKZ = 343;
            }
            if (Instrument.Name == "USDCAD")
            {
                NKZ = 508;
            }
            if (Instrument.Name == "NZDUSD")
            {
                NKZ = 330;
            }
            if (Instrument.Name == "AUDCAD")
            {
                NKZ = 357;
            }
            if (Instrument.Name == "AUDJPY")
            {
                NKZ = 550;
            }
            if (Instrument.Name == "AUDNZD")
            {
                NKZ = 412;
            }
            if (Instrument.Name == "CHFJPY")
            {
                NKZ = 1430;
            }
            if (Instrument.Name == "EURAUD")
            {
                NKZ = 682;
            }
            if (Instrument.Name == "EURCAD")
            {
                NKZ = 726;
            }
            if (Instrument.Name == "EURCHF")
            {
                NKZ = 682;
            }
            if (Instrument.Name == "EURGBP")
            {
                NKZ = 484;
            }
            if (Instrument.Name == "EURJPY")
            {
                NKZ = 781;
            }
            if (Instrument.Name == "GBPCHF")
            {
                NKZ = 924;
            }
            if (Instrument.Name == "GBPJPY")
            {
                NKZ = 1045;
            }
            Print("END-1");
        }
Example #11
0
 /// <summary>
 /// Вызывает событие нажатия клавиши со стрелкой вверх
 /// </summary>
 protected virtual void CallArrowUpDown()
 {
     ArrowUp?.Invoke(this, EventArgs.Empty);
 }
Example #12
0
        protected override void OnBarUpdate()
        {
            /*
             * --print spy strength
             * -- print local strength
             * --print combined level
             *
             * --calc rsi
             * --plot rsi
             *
             * --color lines of rsi
             *
             * --show arrow entries on chart
             * show square exits on char
             * calc P&L on upper left of chart
             *
             * AAPL, MSFT, AMZN, JNJ, GOOG
             * XLY, XLP, XLE, XLF, XLV, XLI, XLB, XLRE, XLK, XLU
             *
             * mixed results accross the board
             */
            if (CurrentBars[0] < 20)
            {
                return;
            }

            // set up higher time frame
            foreach (int CurrentBarI in CurrentBars)
            {
                if (CurrentBarI < BarsRequiredToPlot)
                {
                    return;
                }
            }

            // -- trend of Spy and local chart
            if (BarsInProgress == 1)                            //SPY Bars
            {
                fastSpy = SMA(FastMA)[0];
                slowSpy = SMA(SlowMA)[0];

                if (fastSpy > slowSpy)
                {
                    stateOfSpy = 1;

                    if (Close[0] > fastSpy)
                    {
                        stateOfSpy = 2;
                    }
                }

                if (fastSpy < slowSpy)
                {
                    stateOfSpy = -1;

                    if (Close[0] < fastSpy)
                    {
                        stateOfSpy = -2;
                    }
                }
            }

            if (BarsInProgress == 0)                            //Chart tf Bars
            {
                fast = SMA(FastMA)[0];
                slow = SMA(SlowMA)[0];

                if (fast > slow)
                {
                    stateOfLocal = 1;
                    //Print(stateOfLocal);

                    if (Close[0] > fast)
                    {
                        stateOfLocal = 2;
                        //Print(stateOfLocal);
                    }
                }

                if (fast < slow)
                {
                    stateOfLocal = -1;
                    //Print(stateOfLocal);

                    if (Close[0] < fast)
                    {
                        stateOfLocal = -2;
                        //Print(stateOfLocal);
                    }
                }

                Print("Spy " + stateOfSpy + "  Local " + stateOfLocal);

                double myRSI = RSI(14, 3)[0];

                // rsi signals
                if (myRSI >= 70)
                {
                    shortRsi = true;
                }
                else
                {
                    shortRsi = false;
                }

                if (myRSI <= 30)
                {
                    longRsi = true;
                }
                else
                {
                    longRsi = false;
                }

                // -- plot rsi
                Values[0][0] = RSI(14, 3)[0];
                Values[1][0] = EMA(RSI(14, 3), 3)[0];

                // --color lines of rsi
                switch (stateOfSpy)
                {
                case 1:
                    PlotBrushes[0][0] = Brushes.DodgerBlue;
                    break;

                case 2:
                    PlotBrushes[0][0] = Brushes.DodgerBlue;
                    break;

                case -1:
                    PlotBrushes[0][0] = Brushes.Red;
                    break;

                case -2:
                    PlotBrushes[0][0] = Brushes.Red;
                    break;

                default:
                    break;
                }

                switch (stateOfLocal)
                {
                case 1:
                    PlotBrushes[1][0] = Brushes.DodgerBlue;
                    break;

                case 2:
                    PlotBrushes[1][0] = Brushes.DodgerBlue;
                    break;

                case -1:
                    PlotBrushes[1][0] = Brushes.Red;
                    break;

                case -2:
                    PlotBrushes[1][0] = Brushes.Red;
                    break;

                default:
                    break;
                }

                // Long Entries
                if (stateOfSpy > 0 && stateOfLocal > 0 && longRsi)
                {
                    ArrowUp myArrow = Draw.ArrowUp(this, "Buysig" + CurrentBar.ToString(), true, Time[0], Low[0] - (2 * TickSize), Brushes.DodgerBlue);

                    // Set the outline color of the Arrow
                    myArrow.OutlineBrush = Brushes.DodgerBlue;

//						  BarBrush = Brushes.DodgerBlue;
//						  CandleOutlineBrush = Brushes.DodgerBlue;
                }
                // Short Entries
                if (stateOfSpy < 0 && stateOfLocal < 0 && shortRsi)
                {
                    ArrowDown myArrowDn = Draw.ArrowDown(this, "Sellsig" + CurrentBar.ToString(), true, Time[0], High[0] + (2 * TickSize), Brushes.Crimson);

                    // Set the outline color of the Arrow
                    myArrowDn.OutlineBrush = Brushes.Crimson;

//						  BarBrush = Brushes.Red;
//						  CandleOutlineBrush = Brushes.Red;
                }
            }
        }