public DataReception(string topic, int timeFrameSec, EventHandler <string> eventHandler, int sumCandleVolume, int singleClasterVolume, int singleClastVolFor5Min, int neighborVol, int neighborVolDensity) { Topic = topic; TimeFrameForFill = timeFrameSec; repos = new DDETicksRepository(); find = new FindPattern(eventHandler, sumCandleVolume, singleClasterVolume, singleClastVolFor5Min, neighborVol, neighborVolDensity, Topic); }
public ApplicationItem(ClassCod classCod, Futures security, TimeFrame timeFrame, int fractalPeriod = 0, FindPattern pattern = null) { this.classCod = classCod.ToString(); this.security = security.ToString(); this.timeFrame = timeFrame; this.fractalParam = fractalPeriod; this.findPattern = pattern; }
private async void ButtonExtractImageURLS_Click(object sender, EventArgs e) { var getInput = UrlBox.Text; if (string.IsNullOrWhiteSpace(getInput)) { return; } if (!getInput.Contains("https://")) { getInput = $"http://{getInput}"; } var urlInputTask = ExtractImages(getInput); await urlInputTask; var matches = FindPattern.Matches(urlInputTask.Result); for (int i = 0; i < matches.Count; i++) { var result = ""; if (matches[i].Value.Contains("http")) { result = matches[i].Groups[1].Value; } else if (!string.IsNullOrWhiteSpace(matches[i].Value)) { result = "gp.se" + matches[i].Groups[1]; } if (!matches[i].Groups[1].ToString().Contains("https://")) { ImageURLs.Add("http://" + result); } else { ImageURLs.Add(result); } TextBox.Text += result + Environment.NewLine; NumberBox.Text = "Found " + ImageURLs.Count.ToString() + " images from " + getInput; } }
/// <summary> /// Find the offsets for the <see cref="Process" /> opened by <see cref="BotManager.Memory" /> /// </summary> /// <param name="proc">A process to find offsets</param> /// <returns> /// true if we find all offsets successfully; otherwise false. <see cref="Offsets.Addresses" /> will still /// contain the offsets that were found despite error. /// </returns> internal static bool FindOffsets(Process proc) { try { if (proc == null || proc.HasExited) { Logger.Warn("Process is null or has already exited"); return false; } var addresses = new Dictionary<string, IntPtr>(); var fp = new FindPattern(new MemoryStream(Encoding.UTF8.GetBytes(Resources.Patterns)), proc); var baseAddr = (int) proc.MainModule.BaseAddress; foreach (var pattern in fp.Patterns) { switch (pattern.Key) { case "FrameScript_ExecuteBuffer": case "CGWorldFrame__Render": case "FrameScript_GetText": addresses.Add(pattern.Key, fp.Get(pattern.Key)); break; default: addresses.Add(pattern.Key, fp.Get(pattern.Key) - baseAddr); break; } } if (Logger.IsDebugEnabled) { Logger.Debug("Base: 0x" + baseAddr.ToString("X")); foreach (var address in addresses) { Logger.Debug(address.Key + ": 0x" + (address.Value - baseAddr).ToString("X")); } } Addresses = new ReadOnlyDictionary<string, IntPtr>(addresses); return fp.NotFoundCount == 0; } catch (Exception ex) { Logger.Error("Exception thrown while finding offsets. ", ex); } return false; }
public void SetQUIKCommandDataObject(StreamWriter SW_Command, StreamReader SR_FlagCommand, StreamWriter SW_FlagCommand, string Data = "", string commandType = "", int fractalPeriod = 0, FindPattern patternParam = null) { Logger.Info("Отправляю команду " + Data); mtx.WaitOne(); int m = 0; //Если нужно отправить команду if (Data != "") { if (commandType == "GetCandle") { String[] substrings = Data.Split(';'); for (int i = 0; i < substrings.Length - 1; i = i + 4) { Data temp = listBars.FirstOrDefault(x => x.Name == substrings[i + 1] && x.TimeFrame == Int32.Parse(substrings[i + 2])); if (temp == null) { if (substrings[i + 2] == "0") { listBars.Add(new Ticks() { ClassCod = substrings[i], Name = substrings[i + 1], TimeFrame = Int32.Parse(substrings[i + 2]), Time = new List <DateTime>(), Close = new List <double>(), Volume = new List <double>(), worker = patternParam }); listBars.OfType <Ticks>().Last().CalculateListMinuts(); AddToTimer(listBars.OfType <Ticks>().Last().timeToAction, this.timers); } else { listBars.Add(new Bars() { ClassCod = substrings[i], Name = substrings[i + 1], TimeFrame = Int32.Parse(substrings[i + 2]), Time = new List <DateTime>(), Open = new List <double>(), High = new List <double>(), Low = new List <double>(), Close = new List <double>(), Volume = new List <double>(), listSignal = new List <SignalData>(), Orders = new List <Order>() }); if (fractalPeriod != 0) { listBars.OfType <Bars>().Last().fractalPeriod = fractalPeriod; } MainForm.grid.Invoke(new Action(() => { MainForm.grid.Rows.Add(listBars.Last().Name + " " + listBars.Last().TimeFrame); MainForm.grid.Rows[MainForm.grid.Rows.Count - 2].Cells[0].ReadOnly = true; MainForm.grid.Rows[MainForm.grid.Rows.Count - 2].MinimumHeight = 35; })); listBars.OfType <Bars>().Last().CalculateListMinuts(); AddToTimer(listBars.OfType <Bars>().Last().timeToAction, this.timers); //if (listBars.OfType<Bars>().Last().ClassCod == "TQBR") //{ // listBars.OfType<Bars>().Last().fractalPeriod = 15; //} } } } } Data = String.Format($"{commandType};{Data}"); if (Data.Length > 512) { Logger.Fatal("Превышен лимит данных на запись в MMF - попытка записи: {0}", Data.Length); } //Дополняет строку команды "нулевыми байтами" до нужной длины for (int i = Data.Length; i < 512; i++) { Data += "\0"; } } else //Если нужно очистить память { //Заполняет строку для записи "нулевыми байтами" for (int i = 0; i < 512; i++) { Data += "\0"; } } string flag = ""; do { if (flag != "") { Thread.Sleep(10); } // mutexCmd.WaitOne(); SR_FlagCommand.BaseStream.Seek(0, SeekOrigin.Begin); flag = SR_FlagCommand.ReadToEnd().Trim('\0', '\r', '\n'); //mutexCmd.ReleaseMutex(); }while (flag != "o"); while (flag != "o") { if (flag != "") { Thread.Sleep(10); } //if (m > 0) //{ // mutexCmd.ReleaseMutex(); // m--; //} SR_FlagCommand.BaseStream.Seek(0, SeekOrigin.Begin); flag = SR_FlagCommand.ReadToEnd().Trim('\0', '\r', '\n'); //if (m == 0) //{ // mutexCmd.WaitOne(); // m++; //} } if (m == 0) { mutexCmd.WaitOne(); m++; } SW_FlagCommand.BaseStream.Seek(0, SeekOrigin.Begin); SW_FlagCommand.Write("c"); SW_FlagCommand.Flush(); //Встает в начало SW_Command.BaseStream.Seek(0, SeekOrigin.Begin); //Записывает строку SW_Command.Write(Data); //Сохраняет изменения в памяти SW_Command.Flush(); // Console.WriteLine($"Command send from c# {Data}"); Logger.Info("Команда отправлена - " + Data.Trim() + "текущее время" + DateTime.Now); SW_FlagCommand.BaseStream.Seek(0, SeekOrigin.Begin); SW_FlagCommand.Write("r"); SW_FlagCommand.Flush(); if (m > 0) { mutexCmd.ReleaseMutex(); m--; } mtx.ReleaseMutex(); }