Михаил Светлов (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Стакан через DDE
 
Quik Junior. Таблица всех сделок для фьючерсов пуста
 
Было бы проще автоматом предоставлять доступ к ленте форца всем кто его включил при регистрации, данные ключевые, нужны большей части демщиков
Отставание от системного времени
 
К сожалению в эксель транслировать реалтаймовую дату микроструктуры рынка, даже российского – не самая лучшая идея, не предназначен он для такого, слишком плотный уже поток(400 таблиц\сек), а будет ещё плотней, в любом случае придётся писать свою инфраструктуру получения, обработки данных и трансляции торговых приказов, “жертвовать” приходится не из за квика или дде, у меня транслируется почти всё и лаги только из за обработки данных в моменты вскипания рынка, когда в секунду больше 2-3к таблиц прилетает, то есть когда примерно в 10 раз больше среднего.
Как убрать счета депо из wnd при переносе на другой квик?
 
Цитата
Старатель пишет:
http://forum-archive.quik.ru/forum/lua/114190/114246/#m114246
благодарю, но это устаревшая технология, сейчас нет таких пунктов меню
Как убрать счета депо из wnd при переносе на другой квик?
 
Info.wnd хранит в себе номера счетов, при переносе с акаунта на аккаунт они не убираются из доступных счетов депо, что во первых создаёт путаницу при переносе между аккаунтами, во вторых при обмене wnd с другими трейдерами создаёт неудобства.

Как убрать?

Спасибо.
Как получить через API или таблицы все счета депо?
 
Цитата
Старатель пишет:
Таблица торговых счетов. Доступна также для вывода по DDE.
О! Большое спасибо! То что надо!  
Как получить через API или таблицы все счета депо?
 
Цитата
s_mike@rambler.ru пишет:
Таблицы, используемые в функциях «getItem», «getOrderByNumber», «getNumberOf» и «SearchItems»


TableName Таблица firms Фирмы
Спасибо, но не понял, сорри, это где? Я на С# химичу, по DDE данные получаю, и  С# обёрткой над C++ API ордера шлю. Я имею в виду мне нужно получить все счета и для данного депо, чтобы если к примеру если я робота поставил на другом депо, допустим демо или на другом компе с другим акаунтом, то чтоб не нужно было в ручную забивать эти счета в бота как параметры или считывать с текста. Счета нужны чтобы ордер послать  
Как получить через API или таблицы все счета депо?
 
Нужно получить все счета депо(номера) либо через API, функцией, или чтобы таблицы была такая которую по DDE можно вытянуть. Устал каждый раз руками вбивать.

Спасибо.
DDE автостарт на C#
 
Цитата
bondar пишет:
замените константы на новые, там “Сервисы” и тп
Понял, а я не догадался…

ладно, проехали, я смотрю тут все капитаны))
DDE автостарт на C#
 
Цитата
Imersio Arrigo пишет:
Использовать новый стартер.
Огромное спасибо! То что доктор прописал!
Цитата
bondar пишет:
Ctrl+Shift+L послать, у меня ничего не изменилось
Код
              SetForegroundWindow( Process.GetProcessesByName ( "info" )[ 0 ].MainWindowHandle);
             SendKeys.SendWait ( "^L" );
  
Это дешево, сердито, однако нестабильно, включение каждый 5й раз сбоит примерно, отключение( "^S")  через раз, причем при отключении вешает комп ещё и, это не вариант. У меня было вот так:


Код
    public class DdeStartStop
    {

        private static string _exportMenuKey = "Экспорт данных";
        private static string _stopExportMenuItem = "Остановить экспорт таблиц по &DDE";
        private static string _startExportByDDEMenuItem = "Начать экспорт таблиц по &DDE";

        private const UInt32 MF_BYPOSITION = 0x00000400;


        [DllImport("user32.dll")]
        private static extern IntPtr GetMenu(IntPtr hWnd);

        [DllImport("user32.dll")]
        private static extern IntPtr GetSubMenu(IntPtr hMenu, int nPos);

        [DllImport("user32.dll")]
        private static extern int GetMenuItemCount(IntPtr hMenu);

        [DllImport("user32.dll")]
        private static extern int GetMenuString(IntPtr hMenu, uint uIDItem, StringBuilder lpString, int nMaxCount, uint uFlag);

        [DllImport("user32.dll")]
        private static extern uint GetMenuItemID(IntPtr hMenu, int nPos);

        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("user32.dll", SetLastError = true)]

        private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);


        private static IntPtr[] FindQuikWindow()
        {
            var processes = Process.GetProcessesByName("info");
            var result = new IntPtr[processes.Length];

            for (int i = 0; i < processes.Length; i++)
                result[i] = processes[i].MainWindowHandle;


            return result;
        }

        private static uint FindMenuItemByPart(IntPtr menu, string name)
        {
            int menuItemsCount = GetMenuItemCount(menu);

            for (uint menuIndex = 0; menuIndex < menuItemsCount; menuIndex++)
            {
                var result = new StringBuilder();
                GetMenuString(menu, menuIndex, result, 1024, MF_BYPOSITION);

                string buffer = result.ToString();

                if (buffer.Contains(name))
                {
                    return menuIndex;
                }
            }
            return 0;
        }

        public static bool StartDDE()
        {
            IntPtr[] quikWindows = FindQuikWindow();

            if (quikWindows.Length == 0)
                return false;


            foreach (var quikWindow in quikWindows)
            {
                try
                {
                    IntPtr mainMenu = GetMenu(quikWindow);
                    int exportMenuIndex = (int)FindMenuItemByPart(mainMenu, _exportMenuKey);
                    IntPtr exportMenu = GetSubMenu(mainMenu, exportMenuIndex);
                    uint exportIndex = 6;
                    uint menuItem = GetMenuItemID(exportMenu, (int)exportIndex);
                    PostMessage(quikWindow, 0x111, (IntPtr)menuItem, (IntPtr)0);
                }
                catch (Exception)
                {
                }
            }

            return true;
        }

        public static bool StopDDE()
        {
            IntPtr[] quikWindows = FindQuikWindow();

            if (quikWindows.Length == 0)
                return false;


            try
            {
                foreach (var quikWindow in quikWindows)
                {
                    IntPtr mainMenu = GetMenu(quikWindow);
                    int exportMenuIndex = (int)FindMenuItemByPart(mainMenu, _exportMenuKey);
                    IntPtr exportMenu = GetSubMenu(mainMenu, exportMenuIndex);

                    uint exportIndex = 7;
                    uint menuItem = GetMenuItemID(exportMenu, (int)exportIndex);

                    PostMessage(quikWindow, 0x111, (IntPtr)menuItem, (IntPtr)0);
                }
            }
            catch (Exception) {}

            return true;
        }

    }
 
DDE автостарт на C#
 
Камрады, как стартануть DDE в новом квике из C# кода? Старый стартер с новым меню не работает(((
Страницы: 1
Наверх