МТ5 и trans2quik.dll - страница 16

 
prostotrader:

Вы предлагаете еще больший "геморрой", ЕБС счет тем и хорош, что денежка не разделена по секциям.

То что Вы видели на видео - работает, но очень медленно!

Квик --> DDE --> Моё проложение <-->  trans2quik.dl <--> Квик

Я заменил  Квик --> DDE --> на МТ5 --> PostMessage -->

Стало гораздо быстрее.

При этом, 2 строчки кода и никакой нагрузки на терминал и систему.

Передача сообщений

Прием сообщений

Меня, в данной ситуации, мало волнуют преимущества ЕБС. 

Под Quik писать ничего не хочу, это абсолютно нестабильный терминал, сидеть, как привязанный, наблюдать, не отвалился ли Quik, не входит в мои жизненные планы.

 
Dmi3:

Меня, в данной ситуации, мало волнуют преимущества ЕБС. 

Под Quik писать ничего не хочу, это абсолютно нестабильный терминал, сидеть, как привязанный, наблюдать, не отвалился ли Quik, не входит в мои жизненные планы.

Вас и никто и не заставляет писать....

 
prostotrader:

Все эти "приблуды" нужны для торговли через Квик на ЕБС счетах ( или для реал-тайм анализа данных вне МТ5).

Вывод данных в свое приложение из тормознутого КВИКа по DDE ну очень медленный,

поэтому данные берем из МТ5, а торговые приказы отправляем в Квик, через их API (trans2quik.dll).

Механизм такой

МТ5 --> Свое приложение <-->  trans2quik.dll <--> Квик

Вот пример торговли в Квик фьючерсов против акций


К сожалению, я дальше MQL ничего не понимаю :(

Возможно ли написать инструкцию для чайников, как это всё реализовать, или это закрытый код и представлены только его элементы?

 
Aleksey Vyazmikin:

К сожалению, я дальше MQL ничего не понимаю :(

Возможно ли написать инструкцию для чайников, как это всё реализовать, или это закрытый код и представлены только его элементы?

Вряд ли "чайник" напишет свое приложение, которое будет принимать PostMessage от МТ5 и управлять сделками через API Квик

 

Может быть кто-нибудь знает как в QLua получить свободные средства?

w32 = require("w32")

is_run = false
HWND_BROADCAST = 0xFFFF
A_double = 0.0
WParam = 2
lpParam = 1

WM_EBS_MONEY = w32.RegisterWindowMessage("WM_EBS_MONEY")


if WM_EBS_MONEY >= 0xC000 then
  is_run = true
else
  message("Window not registered!") 
end

function OnStop()
  is_run = false
end


function main()
  while is_run do

 --   A_double = Как получить свободные средства????
    lpParam = A_double * 100
    w32.PostMessage(HWND_BROADCAST, WM_EBS_MONEY, WParam, lpParam)
    sleep(100)
  end
end

 
prostotrader:

Вы когда-нибудь пробовали писать на QPile или QLua?

На них можно написать простенький скрип и всё!

Написать-то, наверное, возможно - невозможно нормально проверить и оттестировать.

Кто запрещает использовать хотя-бы те-же C#/C++. Связка из LUA вполне нормальная.
По поводу тестирования тут можно согласиться. В QUIK нет такой возможности, чтоб прогнать в тестере. Но можно так-же написать библиотеку виртуальной торговли (даже где-то готовая попадалась на просторах нета) и тестируйте сколько угодно.

prostotrader:

Может быть кто-нибудь знает как в QLua получить свободные средства?

>>>

P.S. В QUIK лежит такой хороший файл QLUA.chm. Откройте его почитайте.

 
prostotrader:

Может быть кто-нибудь знает как в QLua получить свободные средства?

В lua есть функция getMoneyEx() может с ее помощью можно.  http://luaq.ru/getMoneyEx.html

 
Vitalii Ananev:

В lua есть функция getMoneyEx() может с ее помощью можно.  http://luaq.ru/getMoneyEx.html

Спасибо, проблему решил.

Функция называется 

getPortfolioInfoEx

Все, есть механизм для торговли в Квик на ЕБС счетах с очень быстрым получением данных из МТ5

Добавлено

Очень жаль, что MQ забросили биржевой раздел МТ5

Добавлено

(если кому-то пригодится)

Библиотека  w32.dll https://quik2dde.ru/viewtopic.php?id=293

И скрипт на LUA

w32 = require("w32")

is_run = false
HWND_BROADCAST = 0xFFFF
A_double = 0.0
WParam = 2
lpParam = 1

WM_EBS_MONEY = w32.RegisterWindowMessage("WM_EBS_MONEY")

if WM_EBS_MONEY >= 0xC000 then
  is_run = true
else
  message("Message not registered!") 
end

function OnStop()
  is_run = false
end

function main()
  while is_run do
    a_table = getPortfolioInfoEx("MCXXXXXX", "XXXXX", 0)  
    A_double = a_table.limit_open_pos
    lpParam = math.floor (A_double * 100)
    w32.PostMessage(HWND_BROADCAST, WM_EBS_MONEY, WParam, lpParam)
    sleep(10)
  end
end

Где 

MCXXXXXX - firm ID
XXXXX - accaunt

Добавлено

Вот так это работает


 

Смотрим как Квик работает внутри себя (обновление таблицы.... разница в 1 коп. сделана мною math.floor )


 
prostotrader:

Смотрим как Квик работает внутри себя (обновление таблицы.... разница в 1 коп. сделана мною math.floor )


То есть, это на столько запаздывает у него отрисовка?

Причина обращения: