예제 #1
0
        public void process_ShowGap()
        {
//Prüfen, ob 15min Chart aktiviert ist, anonsten -> raus
            if (Bars != null && Bars.Count > 0 &&
                TimeFrame.Periodicity == DatafeedHistoryPeriodicity.Minute &&
                TimeFrame.PeriodicityValue == 15)
            {
            }
            else
            {
                return;
            }

//Prüfen, ob es sich um die erste Kerze des Tage handelt, nur mit dieser kann Gap berechnet werden
            if (Bars.BarsCountForSession == 0)
            {
                sessionprocessed = false;
            }

//Marktöffnungszeit für Instrument lesen
            TimeSpan openingtime = GlobalUtilities.GetOfficialMarketOpeningTime(Instrument.Symbol);

//Prüfen, ob aktuelle Kerze nach der offiziellen Marktöffnung ist, oder ob es eine vorbörsliche Kerze ist
            if (Bars.GetTime(ProcessingBarIndex).TimeOfDay > openingtime && //größer 09.00 geht für 15M und 1Std (und 1Tag?)
                sessionprocessed == false)       //Tag noch nicht verarbeitet
            {
                sessionprocessed = true;
                GapTradeLong     = GapTradeShort = false;

//Erste Kerze des Tages besorgen und deren Errönfnungskurs lesen
                IBar GapOpenBar = GlobalUtilities.GetFirstBarOfCurrentSession(Bars, Bars[0].Time.Date);
                GapOpen = GapOpenBar.Open;

//Tagesschlusskurs von gestern besorgen
                double LastDayClose = PriorDayOHLC(Closes[0]).PriorClose[0];

                //Wenn es keinen LastDayClose Wert gibt -> raus (immer am Anfang des Charts)
                if (LastDayClose == 0)
                {
                    return;
                }

                PunkteGapMax = (decimal)LastDayClose * _PunkteGapMaxProz;
                PunkteGapMin = (decimal)LastDayClose * _PunkteGapMinProz;

//gestrige Schlusskurs soll auch als InitialStop für etwaige Orders verwendet werden
                StopForShowGapTrade = LastDayClose;


//Gapgröße berechnen
                GapSize = GapOpen - LastDayClose;

//DateTime von gestrigen Schlusskurs

                IBar     GapCloseBar      = GlobalUtilities.GetLastBarOfLastSession(Bars, Bars[0].Time.Date);
                DateTime LastDayCloseDate = GapCloseBar.Time;
                DateTime LastPeriod       = Time[1];

//Prüfen ob es überhaupt ein Gap gab
                if (LastDayClose > 0 &&
                    Math.Abs(GapSize) > 0)
                {
                    existgap = true;


//Gap markieren (08.00 - 09.15)
                    string strMyRect    = "MyRect" + Count;
                    string strMyGapSize = "MyGapSize" + Count;

//Gap zeigt nach oben
                    if (IsUpwardsGap() == true)
                    {
//Long
                        AddChartRectangle(strMyRect, true, LastDayCloseDate, LastDayClose, LastPeriod, GlobalUtilities.GetHighestHigh(Bars, Bars.BarsCountForSession), _col_gap, _col_gap, 70);
                        AddChartText(strMyGapSize, true, Math.Round(GapSize, 1).ToString(), GapOpenBar.Time, LastDayClose - (60 * TickSize), 9, Color.Black, new Font("Arial", 9), StringAlignment.Center, Color.Black, Color.Azure, 1);


                        if (GapIndicatesTradeLong() == true)
                        {
//Chancenreicher SuccessTrade Long
                            PrepareTradeLong();
                        }
                    }

//Gap zeigt nach unten
                    else
                    {
//Short
                        AddChartRectangle(strMyRect, true, LastDayCloseDate, LastDayClose, LastPeriod, GlobalUtilities.GetLowestLow(Bars, Bars.BarsCountForSession), _col_gap, _col_gap, 70);
                        AddChartText(strMyGapSize, true, Math.Round(GapSize, 1).ToString(), GapOpenBar.Time, LastDayClose + (60 * TickSize), 9, Color.Black, new Font("Arial", 9), StringAlignment.Center, Color.Black, Color.Azure, 1);

                        if (GapIndicatesTradeShort() == true)
                        {
////Chancenreicher SuccessTrade Short
                            PrepareTradeShort();
                        }
                    }

                    if (GapTradeShort == true || GapTradeLong == true)
                    {
//Auswertung
                        PrintBasicTradeInfo();
                    }
                }
                else
                {
                    existgap = false;
                }
            }

//09.15. - 09.30 Kerze
//            else if (Bars.BarsCountForSession == 6 && existgap == true)
            else if (Bars[0].Time.TimeOfDay == new TimeSpan(9, 15, 0))
            {
//Auswertung nach ShowGap Handelszeit (=09.30)
                printAuswertung();
                GlobalUtilities.SaveSnapShot("ShowGap", Instrument.Name, this.Root.Core.ChartManager.AllCharts, Bars, TimeFrame);
            }
        }