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); }
public static void Dispose() { Background.Dispose(); ArrowUp.Dispose(); ArrowDown.Dispose(); ArrowLeft.Dispose(); ArrowRight.Dispose(); }
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>(); }
/// <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); } }
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; } }
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 }
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); }
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"); }
/// <summary> /// Вызывает событие нажатия клавиши со стрелкой вверх /// </summary> protected virtual void CallArrowUpDown() { ArrowUp?.Invoke(this, EventArgs.Empty); }
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; } } }