Closed exvion closed 2 years ago
Действительно, не реализована. Странно, что только сейчас заметили (видимо, не слишком востребованная). Попробую реализовать на досуге. Или реализуйте сами и пришлите PR.
Решил сам попробовать, пока не получается. Написал такой код. Функция должна возвращать NUMBER qty, NUMBER comission. Не знаю как вернуть сразу два значения.
Task<object> CalcBuySell(string firmId, string secCode, string clientCode, string accID, string price, bool isBuy, bool isMarket);
public async Task<object> CalcBuySell(string firmId, string secCode, string clientCode, string accID, string price, bool isBuy, bool isMarket)
{
var response = await QuikService.Send<Message<object>>(
(new Message<string>(firmId + "|" + clientCode + "|" + secCode + "|" + accID + "|" + price + "|" + isBuy + "|" + isMarket, "CalcBuySell"))).ConfigureAwait(false);
return response.Data;
}
function qsfunctions.CalcBuySell(msg)
local spl = split(msg.data, "|")
local clientCode, firmId, secCode, account, qty, isBuy, isMarket = spl[1], spl[2], spl[3], spl[4], spl[5], spl[6], spl[7]
msg.data = CalcBuySell(firmId, clientCode, secCode, account, price, isBuy, isMarket)
return msg
end
Вы не одиноки. Я даже на QLua не могу заставить корректно работать эту функцию, возвращает нули. При чем я сначала реализовал ее в библиотеке, и добавил в тестовое приложение, но когда понял, что она не работает попытался сделать "чистый" lua-код. и потерпел фиаско. Судя по всему, она просто не работает.
У меня следующий код работает исправно:
local bs = CalcBuySell
assert(bs, "No function!!")
qty, comiss = bs("SPBXM", "TCS_SPB", "000SPB", "MFOPENM003", 94, true, false)
message("qty = " .. qty .. ", COM = " .. comiss, 2)
вт, 10 авг. 2021 г. в 14:49, Prophetic @.***>:
Вы не одиноки. Я даже на QLua не могу заставить корректно работать эту функцию, возвращает нули. При чем я сначала реализовал ее в библиотеке, и добавил в тестовое приложение, но когда понял, что она не работает попытался сделать "чистый" lua-код. и потерпел фиаско. Судя по всему, она просто не работает.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/finsight/QUIKSharp/issues/303#issuecomment-895963015, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAB6FWCHZYAGZFVL74H5XXLT4EG6LANCNFSM5B2CQBAQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .
В общем, реализовал, можно забирать. Но как показали эксперименты - работоспособность данной функции вещь не постоянная. Возможно, зависит от брокера, а возможно от версии квика. Проверял на двух брокерах (у них разные версии квик сейчас используются). В открывашке вроде все норм, в Уралсибе при расчете покупки возвращает нули, при продаже возвращает доступное на балансе количество. Наличие свободных денег разумеется проверял.
На днях удалось протестировать calcbuysell в бою, были опасения по времени выполнения, но для моих задач справляется отлично. Спасибо.
Не нашел в QuikSharp реализации функции CalcBuySell. Может она по-другому названа или вместо нее есть другой способ рассчитать количество акций на покупку или продажу? http://luaq.ru/CalcBuySell.html
Функции getBuySellInfo и getBuySellInfoEx в коде закомментированы https://github.com/finsight/QUIKSharp/blob/fa556c35b7267f4c5e195bb4f010744b56d1a63b/src/QuikSharp/TradingFunctions/TradingFunctions.cs