void ComboBoxPatternIndicatorSearchType_SelectionChanged(object sender, SelectionChangedEventArgs e) { PatternIndicators pattern = (PatternIndicators)_pattern.GetTempPattern(PatternType.Indicators); Enum.TryParse(ComboBoxPatternIndicatorSearchType.SelectedValue.ToString(), out pattern.SearchType); _pattern.Save(); }
/// <summary> /// загрузить отдельный одиночный паттерн из строки /// </summary> private void LoadPattern(string pat, List <IPattern> array) { string[] patternInString = pat.Split('^'); PatternType type; Enum.TryParse(patternInString[0], out type); if (type == PatternType.Candle) { PatternCandle pattern = new PatternCandle(); pattern.Load(pat); array.Add(pattern); } if (type == PatternType.Volume) { PatternVolume pattern = new PatternVolume(); pattern.Load(pat); array.Add(pattern); } if (type == PatternType.Indicators) { PatternIndicators pattern = new PatternIndicators(); pattern.Load(pat); array.Add(pattern); } if (type == PatternType.Time) { PatternTime pattern = new PatternTime(); pattern.Load(pat); array.Add(pattern); } }
/// <summary> /// прорисовать паттерн на его индивидуальном чарте /// </summary> private void PaintSinglePattern(IPattern pattern, ChartPainter chart) { if (chart.GetChart().InvokeRequired) { chart.GetChart().Invoke(new Action <IPattern, ChartPainter>(PaintSinglePattern), pattern, chart); return; } chart.ClearDataPointsAndSizeValue(); chart.ClearSeries(); if (pattern.Type == PatternType.Candle) { chart.PaintSingleCandlePattern(((PatternCandle)pattern).GetInCandle()); } if (pattern.Type == PatternType.Volume) { chart.PaintSingleVolumePattern(((PatternVolume)pattern).GetInCandle()); } if (pattern.Type == PatternType.Indicators) { PatternIndicators pat = (PatternIndicators)pattern; for (int i = 0; pat.Indicators != null && i < pat.Indicators.Count; i++) { if (chart.IndicatorIsCreate(pat.Indicators[i].Name + "0") == false) { chart.CreateSeries(chart.GetChartArea(pat.Indicators[i].NameArea), pat.Indicators[i].TypeIndicator, pat.Indicators[i].NameSeries + "0"); } chart.ProcessIndicator(pat.Indicators[i]); } } }
/// <summary> /// take a copy /// взять копию /// </summary> public IPattern GetCopy() { PatternIndicators pattern = new PatternIndicators(); string save = GetSaveString(); pattern.Load(save); return(pattern); }
void InitializePatternIndicatorsTab() { PatternIndicators pattern = (PatternIndicators)_pattern.GetTempPattern(PatternType.Indicators); TextBoxPatternIndicatorLenght.Text = pattern.Length.ToString(); TextBoxPatternIndicatorLenght.TextChanged += TextBoxPatternIndicatorLenght_TextChanged; ComboBoxPatternIndicatorSearchType.Items.Add(PatternIndicatorSearchType.CandlePosition); ComboBoxPatternIndicatorSearchType.Items.Add(PatternIndicatorSearchType.IndicatorsAngle); ComboBoxPatternIndicatorSearchType.SelectedItem = pattern.SearchType; ComboBoxPatternIndicatorSearchType.SelectionChanged += ComboBoxPatternIndicatorSearchType_SelectionChanged; }
/// <summary> /// взять копию /// </summary> public IPattern GetCopy() { PatternIndicators pattern = new PatternIndicators(); pattern.Sequence = Sequence; pattern.SequenceCandlePosition = SequenceCandlePosition; pattern.Length = Length; pattern.Expand = Expand; pattern.Weigth = Weigth; return(pattern); }
void TextBoxPatternIndicatorLenght_TextChanged(object sender, TextChangedEventArgs e) { PatternIndicators pattern = (PatternIndicators)_pattern.GetTempPattern(PatternType.Indicators); try { pattern.Length = Convert.ToInt32(TextBoxPatternIndicatorLenght.Text); } catch (Exception) { TextBoxPatternIndicatorLenght.Text = pattern.Length.ToString(); } _pattern.Save(); }
/// <summary> /// is the current formation our pattern /// является ли текущая формация нашим паттерном /// </summary> /// <param name="candles">candles/свечи</param> /// <param name="indicators">indicators/индикаторы</param> /// <param name="numberPattern">the index on which we watch the pattern/индекс по которому мы смотрим паттерн</param> public bool ThisIsIt(List <Candle> candles, List <IIndicatorCandle> indicators, int numberPattern) { if (indicators == null || indicators.Count == 0) { return(false); } if (numberPattern - Length - 2 <= 0) { return(false); } if (Sequence == null || Sequence.Length == 0) { return(false); } PatternIndicators tempIndicators = new PatternIndicators(); tempIndicators.Length = Length; tempIndicators.Weigth = Weigth; tempIndicators.SearchType = SearchType; tempIndicators.Expand = Expand; tempIndicators.SetFromIndex(candles, indicators, numberPattern); if (tempIndicators.SequenceCandlePosition == null) { return(false); } if (SearchType == PatternIndicatorSearchType.CandlePosition) { for (int i = 0; i < SequenceCandlePosition.Length; i++) { for (int i2 = 0; i2 < SequenceCandlePosition[0].Length; i2++) { if (SequenceCandlePosition[i][i2] != tempIndicators.SequenceCandlePosition[i][i2]) { return(false); } } } } if (SearchType == PatternIndicatorSearchType.IndicatorsAngle) { decimal[][] sequence = tempIndicators.Sequence; if (sequence == null || sequence.Length == 0 || sequence.Length != Sequence.Length || sequence[0].Length != Sequence[0].Length) { return(false); } for (int i = 0; i < sequence.Length; i++) { for (int i2 = 0; i2 < Sequence[0].Length; i2 += 2) { decimal price = (sequence[i][i2] + sequence[i][i2 + 1]) / 2; if (price > Sequence[i][i2] || price < Sequence[i][i2 + 1]) { return(false); } } } } return(true); }