Пример #1
0
 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);
 }
Пример #2
0
        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;
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        /// <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;
        }
Пример #5
0
        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();
        }