Андрей (Все сообщения пользователя)

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

Страницы: 1 2 След.
Как квик считает волатильности бида и аска ?
 
Подскажите как квик выворачивает волатильности бида и аска ? То что улыбка транслируется биржей - я знаю, меня интересует именно подсчет волатильности по ценам.

Я в своей программе считаю волатильность через метод Ньютона Рафсона, получается хорошо для опционов дата экспираций которых достаточно сильно оттдалена от текущего момента. , однако для опционов которые экспирируются завтра - расчет разительно расходится с данными квика. Подскажите как Вы считаете волатильность по переданной цене ?
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
 
Благодарю
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
 
Да, наверное все празнуют)

Посмотримс, если что то методом тестов проверять буду все
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
 
Игорь Б, Нет, мне нужно не в потоковом режиме (описанная тобой функция же поэтапно "в режиме реального времени" предоставляет инфу). Мне же нужна функция, которая бы при каждом вызове давала информацию о направлении последней сделки (работающая не как коллбек, а  как функция выдающая значение даже на нелеквиде за последнюю сделку) - для этого из таблицы тягать буду это значение, а что бы делать это, нужна подписка на  тики

Но это мы уже отклонились от заданного мною вопроса, я не про тики конкретно спрашивал, а вовсе про CreateDataSource
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
 
Да вроде и на минутках тоже зависал...

Тики в другом скрипте нужны (пишу на С++ обертку для функций торгующих, и там в одной из функций планируется возвращать направление предыдущей сделки (нужна подписка на обезличенные сделки) по этому тики нужны, так как при их заказе (судя по информации с данного форума) создается подписка на обезличенные сделки).
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
 
Доброго времени суток, вопрос следующий:
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?

Дело в том, что в моих скриптах ,всегда когда я создаю источник данных перед началом сессии или же во внерабочее время (по фьючерсам имею ввиду, к примеру во время клиринга или же ночью) то Size() всегда зависает равным 0. После я перезапускаю обычно скрипт когда начинаются торги.

Если не перезапускать скрипт, то тогда изменится ли Size() на адекватное значение и пойдут ли котировки ? Или же обязательно нужно перезапускить (либо програмно раз в пару мин к примемеру проверять создался ли источник данных  и пересоздавать его вновь если значение size() все еще равно нулю ?)

Дабы не быть голословным вот пример:
Код
main = function()
   class_code = "SPBFUT";
   sec_code = "RIU8";

   ds, Error = CreateDataSource(class_code, sec_code, 0)
   while (Error == "" or Error == nil) and ds:Size() == 0 do sleep(1) end; -- вот в этом цикле зависает скрипт если во внерабочее время запустить данный пример. Зависает из за того что size() == 0
   ds:SetEmptyCallback();

   message("Источник создан");
end;


Вполне возможно он все таки сам выйдет из этого цикла, но у меня не когда не хватало терпения это проверить, сразу же перезапускал.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
 
Вы правы господа, не думал что order_num превысит int.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
 
Чуть не забыл часть кода:
Код
void msg_ToQuik(lua_State *L, std::string msg, int num)
{
   lua_settop(L, 0);
   lua_getglobal(L, "message");
   lua_pushfstring(L, msg.c_str());
   lua_pushnumber(L, num);
   lua_call(L, 2, 0);
}
Ошибка "Вы не можете снять эту заявку"
 
Egor Zaytsev, Прозьба просмотреть и дать ответ на мой вопрос вот из этой темы:
https://forum.quik.ru/messages/forum10/message30215/topic3542/?result=reply#message30215

Похоже все таки какая то ошибка происходит во время стыковки с квиком, так как для фьючерсов описанный мною способ работает верно, а вот для акций - возвращает не верное значение запрашиваемого параметра.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
 
Причем, если брать фьючерсы вместо акций,то скрипт работает верно.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
 
Здравствуйте, данный вопрос является продолжением начатой мною темы:https://forum.quik.ru/forum10/topic3539/
Которая перешла в несколько иное русло.

Как уже писал в данной теме, я не смог удалить ордер из за того, что не получилось передать в качестве параметра требуемый order_num.

Когда я протестировал два одинаковых скрипта (один на чистом lua, а другой на lua_CApi ) - то обнаружил интересную закономерность (либо я криворукий... поправте в случае нахождения ошибки)
первый скрипт - на qlua - возвращает верное значение lua_CApi. Второй (скрипт близнец) - на С++ с использованием lua_CApi - возвращает значение order_num: -2147483648

Ниже представляю оба тестовых скрипта:
большая просьба как к админам, так и просто к тем кто пишет ботов на С++ так же как и я поправить или же прокомментировать мои ошибки, или же как можно обойти встречную мною ситуацию:

Qlua:
Код
function main()
   for i = getNumberOf("orders")-1,0,-1 do
      T = getItem("orders",i);
      if T.sec_code == "ROSN" and
         bit.test(T.flags,0) then
         message(tostring(T.order_num));
      end;
   end;
end;


lua_CApi + C++:
Код
#include <Windows.h>
#include <thread>

#define LUA_LIB
#define LUA_BUILD_AS_DLL
extern "C" {
#include "Lua\lauxlib.h"
#include "Lua\lua.h"
}




BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
   return TRUE;
}

static struct luaL_reg ls_lib[] = {
   { NULL, NULL }
};

#include <bitset>
extern "C" LUALIB_API int luaopen_test_addition(lua_State *L)
{
   auto _test = [](int bit_num, int bit_test)
   {
      std::bitset<16> bits(bit_num);

      return bits[bit_test] == 1;
   };
   lua_settop(L, 0);
   lua_getglobal(L, "getNumberOf");
   lua_pushfstring(L, "orders");
   lua_call(L, 1, 1);

   int length = (int)lua_tonumber(L, -1);
   lua_settop(L, 0);
   for (size_t i = 0; i < length; i++)
   {
      lua_getglobal(L, "getItem");
      lua_pushfstring(L, "orders");
      lua_pushnumber(L, i);
      lua_call(L,2,1);

      lua_getfield(L, -1, "sec_code");
      std::string sc = lua_tostring(L, -1);
      lua_remove(L, -1);
      lua_getfield(L, -1, "flags");
      int f = lua_tonumber(L, -1);
      lua_remove(L, -1);

      if (sc.compare("ROSN") == 0 && _test(f, 0))
      {
         lua_getfield(L, -1, "order_num");
         int N = lua_tonumber(L, -1);
         lua_remove(L, -1);

         msg_ToQuik(L, std::to_string(N), 1);
      }
      lua_settop(L, 0);
   }

   return 0;
}
Ошибка "Вы не можете снять эту заявку"
 
Да, моя ошибка. не верный номер ордера передаю.
Ошибка "Вы не можете снять эту заявку"
 
Кстати говоря, написал вам тут как делаю, после сам интереса рази пересобрал все быстро в Луа - и понял что поспешил позоже. (луа скрипт сработал в отличии от моего), придется свое творение дебагить получше
Ошибка "Вы не можете снять эту заявку"
 
Код
struct Symb_data
{
   std::string class_code;
   std::string sec_code;
   std::string account;
   TF timeFrame; // Текущий таймфрейм
};
Ошибка "Вы не можете снять эту заявку"
 
Цитата
Egor Zaytsev написал:
В ручном режиме снять заявку удается?
Выложите полный скрипт.
Да в ручную удается. Снятие ордера делаю из dll через написанную (и протестированную) мною обертку. для sendTransaction.
Описание обертки тут: https://quikluacsharp.ru/stati-uchastnikov/otsylka-tranzaktsij-iz-s-bez-ispolzovaniya-lua-koda/

Функция удаляющая ордера:
Код
double count_time_diff(std::chrono::time_point<std::chrono::system_clock> t)
{
   auto end = std::chrono::system_clock::now();
   std::chrono::duration<double> elapsed_seconds = end - t;

   return elapsed_seconds.count();
}

bool deleteOrder(Symb_data params, int order_num, bool is_stopOrder, lua_State *L)
{
   lua_settop(L, 0);

   bool ans = false;

   Ttransaction T(L, params);

   int trans_id = T.trans_id();
   T.classcode();
   T.seccode();

   if (is_stopOrder)
   {
      T.action(order_Action::KILL_STOP_ORDER);
      T.stop_order_key(order_num);
   }
   else
   {
      T.action(order_Action::KILL_ORDER);
      T.order_key(order_num);
   }

   std::string res = sendTransaction(T);

   if (res.compare("") == 0)
   {
      ans = true;
      auto doLoop = [&]()
      {
         bool ans = false;
         std::vector<OrderData> orders;
         if (get_Orders_Info(orders, params))
         {
            for (size_t i = 0; i < orders.size(); i++)
            {
               if (orders[i].trans_ID == trans_id)
               {
                  ans = true;
                  break;
               }
            }
         }
         return ans;
      };
      auto start = std::chrono::system_clock::now();
      while (count_time_diff(start) <= 30 && doLoop())
      {
         Sleep(1);
      }
      if (doLoop())
         ans = false;
   }
   else
   {
      res = "Ошибка удаления ордера:\n " + res;
      msg_ToQuik(L, res, 3);
   }

   return ans;
}

Да, хоть я и пишу на С++, но все работает. Данная функция справляется со своими задачами на фьючерсах, а вот лимитку на акциях удалить не получается...
Ошибка "Вы не можете снять эту заявку"
 
Возможно есть еще какие нибудь варианты ?
Ошибка "Вы не можете снять эту заявку"
 
Цитата
Egor Zaytsev написал:
С подобной проблемой уже на форуме обращались. Например здесь можно найти решение: https://forum.quik.ru/messages/forum10/message29727/topic3470/#message29727
Благодарю за ответ, однако мне это не поможет. Заявка точно активна и ORDER_KEY точно передается как string .
Ошибка "Вы не можете снять эту заявку"
 
И еще поправка более верно ошибка звучит так: "Вы не можете снять ДАННУЮ заявку"

PS
Сделайте как нибудь на досуге возможность редактирования тем и сообщений на форуме.
Ошибка "Вы не можете снять эту заявку"
 
Не знаю имеет ли это значение, но ордер который я намереваюсь удалить. был выставлен вручную.
Ошибка "Вы не можете снять эту заявку"
 
Здравствуйте, не пойму в чем дело обстоит.

Заполняю поля:
CLASSCODE
SECCODE
ACTION = "KILL_ORDER"
ORDER_KEY = order_num
TRANS_ID

В итоге получаю описанную выше ошибку. подскажите какие поля я не верно заполняю ? Стараюсь снять заявку на акциях.
Даты экспираций в структурах orders и stop_orders
 
Вопрос №1 В каких случаях дата жкспирации может равняться  "-1" ? (имеются ввиду поля таблиц где она как число представлена)
Вопрос №2 Почему возвращается дата экспирации равная "1601.01.01 00:00:00" даже  в случае когда ордер выставлен не как "До отмены", а как "До определенной даты"?
в каких случаях order_date_time == nil в таблице orders
 
У меня с выше описанной ситуацией как раз ток (только уже запрашиваю T.expiry)
в каких случаях order_date_time == nil в таблице orders
 
Еще вопрос, в каких случаях поле "expiry" в таблице orders может быть равным -1 ?
в каких случаях order_date_time == nil в таблице orders
 
_sk_,  благодарю глупая ошибка...  
в каких случаях order_date_time == nil в таблице orders
 
По инструменту открыта лимитка на покупку. счет правда демка Ваша, но думаю это не должно влиять на правильность работы функции.

Следующий код от чего то показывает что поле order_date_time == nil Подскажите в чем может быть причина ?
Код
function main()
   for i = getNumberOf("orders")-1,0,-1 do
      T = getItem("orders",i);
      if T.sec_code == "SiM8" and
         bit.test(T.flags,0) then
         message(tostring(T.order_date_time));
      end;
   end;
end;
Расчет стоимости фьючерсов, Как определить программно стоимость позиции или лота "сложных" фьючерсов на индексы и биржевые товары (Ri, BR и др.)
 
Создайте функцию. опишите все, входные параметры снизте по минимуму и готово
Расчет стоимости фьючерсов, Как определить программно стоимость позиции или лота "сложных" фьючерсов на индексы и биржевые товары (Ri, BR и др.)
 
Цитата
Иван Ру написал:
Уточняю, мне нужен рублевый эквивалент стоимости одного фьючерса (1 лота),
Для одного лота по РТС:
РТС(руб) = 10 * 0,02 * курс доллара(вечерний)
где:
10 - шаг цены в пунктах

Для бренд - шаг в спецификации смотреть)
Расчет стоимости фьючерсов, Как определить программно стоимость позиции или лота "сложных" фьючерсов на индексы и биржевые товары (Ri, BR и др.)
 
Возможно требуется что то в роде этого:
http://stock-list.ru/futures2.html

По РТС = Цена в пунктах * 0,02 * курс доллара.

0,02 - стоимость шага цены на РТС, на бренд должно быть в спецификации где то указано.
Курс доллара - берется на вечернюю сесиию. (как то раз для тестов пробовал переводить по данной формуле РТС в рубли, на бирже где то была выкладка курсов для перевода, ну и квик сигнализирует постоянно о них но где таблично эти значения взять - не знаю).  
Где ошибка при подписки на тиковые данные ?
 
Цитата
Борис Гудылин написал:
Можно увидеть живьем Ваш DataSource.
https://ibb.co/daDMvS
Где ошибка при подписки на тиковые данные ?
 
Цитата
Борис Гудылин написал:
Определитесь, что же Вам надо на самом деле - количество открытых позиций или количество совершенных сделок.
Это старая тема, тогда нужны были тики, сейчас OI. А в целом это и много еще чего в дальнейшем возможно понадобится.

Цитата
Борис Гудылин написал:
Для дневок будет 1 (одна) свечка. Разработчики обоснуют - почему.
С отрисовкой графиков все в порядке, если на реале и должна быть одна свечка на дневном графике, то тогда только вопрос к разработчикам (от чего так ???) Демка мне нужно то только для теста правильности срабатывания функций торговли, а не для тестов робота)
Где ошибка при подписки на тиковые данные ?
 
Дабы не плодить лишние темы, спрошу здесь, в чем может быть ошибка (на вашей демке на сей раз) в этом вот скрипте, стараюсь получить OI по дневному графику:
Код
DS = {};

function main()

   DS.oi, err = CreateDataSource("SPBFUT", "RIM8", 1440,"numtrades");
   while (err == "" or err == nil) and DS.oi:Size() == 0 do sleep(1) end;
   message(tostring(DS.oi:Size()));

end;
Проблема та же.
На реальном счете, нету зависаний в цикле, однако вместо этого возвращается размер равный 1, хоть данных более чем достаточно. (точно больше одной свечи на дневном графике)))
Поле "param_value" из таблицы ф-ции "getParamEx" и "getParamEx2"
 
Благодарю
Где ошибка при подписки на тиковые данные ?
 
Кстати да, от чего то не строится...
Где ошибка при подписки на тиковые данные ?
 
Прикладываемый код не как не может выйти из цикла.
Но если подписываться на минутки к примеру, то подписка срабатывает.
Код
main = function()
   class_code = "SPBFUT";
   sec_code = "RIM8";

   ds, Error = CreateDataSource(class_code, sec_code, 0)
   while (Error == "" or Error == nil) and ds:Size() == 0 do sleep(1) end;
   ds:SetEmptyCallback();

   
end;
Поле "param_value" из таблицы ф-ции "getParamEx" и "getParamEx2"
 
В инструкции сказано, что данное поле мажет содержать следующие типы данных :
  • «1» - DOUBLE;
  • «2» - LONG;
  • «3» - CHAR;
  • «4» - перечислимый тип;
  • «5» - время;
  • «6» - дата
Меня интересует как представляются последние два типа данных ? Структура(если да, то какие конкретно поля в ней) или же числовое значение ? (к примеру дата в Unix формате).

Заранее благодарю.
Установка Quik на Linux
 
Благодарю за отзыв, попробую повозиться. Ищу просто альтернативу виндовс хостингу (для алгоритмической торговли) Линукс хостинги вроде за те же деньги более интересные варианты предлагают. Вот и задумался над подобной стыковкой.

MT5 кстати на линукс не ставили случаем? он мне тоже понадобится  
Установка Quik на Linux
 
Доброго времени суток, хотелось бы узнать есть ли надежный способ поставить Quik на линукс системы (Debian, Ubuntu...) Какие зависимости нужны будут и не будет ли глючить. Так же интересно будет ли работать Lua и стыковки Lua + C++ dll при банной установки. Возможно где то есть готовая инструкция по подобной установке ?  
понять демо или реальный qlua
 
Благодарю всех за ответы.
понять демо или реальный qlua
 
Доброго времени суток господа.

Подскажите, как Вы отличаете демо от реала используя Qlua ?
CreateDataSource Params
 
Данный вопрос уже поднимался на форуме, однако у меня он возник вновь. Я выгрузил параметры из таблицы текущих торгов, однако хотелось бы узнать какие из них лишние? К примеру ISIN-код бумаги явно не вписывается в концепцию источников данных... Возможно существует готовый и отредактированный список ? У меня получилась следующая выгрузка,:

lotsize, //Лот
prevprice, //Цена закр.
longname, //Бумага
shortname, //Бумага сокр.
code, //Код бумаги
isincode, //ISIN-код бумаги
regnumber, //Рег.номер
cfi_code, //CFI-код бумаги
classname, //Класс
class_code, //Код класса
trade_date_code, //Дата торгов
sec_face_value, //Номинал
sec_face_unit, //Валюта
sec_scale, //Точность
sec_price_step, //Шаг цены
discount1, //Дисконт1
discount2, //Дисконт2
discount3, //Дисконт3
sec_comment, //Комментарий
sectype, //Тип инструмента
status, //Статус
bid, //Спрос
biddepth, //Кол. спрос
biddeptht, //Общ. спрос
numbids, //Заявки куп.
offer, //Предл.
offerdepth, //Кол. предл.
offerdeptht, //Общ. предл.
numoffers, //Заявки прод.
high, //Макс. цена
low, //Мин. цена
last, //Цена послед.
change, //Измен. к закр.
qty, //Кол-во послед.
time, //Время послед.
voltoday, //Общее кол-во
valtoday, //Оборот
tradingstatus, //Сессия
value, //Оборот посл.
waprice, //Ср. взв. цена
numtrades, //Кол-во сделок
prevwaprice, //Пред. оц.
lastchange, //% измен.закр.
anontrade, //Анон. торг.
mat_date, //Погашение
days_to_mat_date, //До погашения
settledate, //Дата расч.
assured, //Необесп. торги
open, //Откр.
highbid, //Лучш. спрос
lowoffer, //Лучш. пред
primarydist, //Размещение IPO
accruedint, //НКД
yield, //Доходность
couponvalue, //Размер купона
couponperiod, //Длит.куп.
yieldatprevwapri, //Доход.пред.оц.
yieldatwaprice, //Доход.оц.
priceminusprevwa, //Изм. к пред.оц.
closeprice, //Закр.
closeyield, //Доход.закр.
marketprice, //Вч.рын.цена
marketpricetoday, //Рын.цена
nextcoupon, //Дата выпл. куп.
buybackprice, //Оферта
buybackdate, //Дата расч.доход
issuesize, //Объем обр.
prevdate, //Дата посл.торг.
duration, //Дюрация
lcurrentprice, //Оф.тек.цена
lcloseprice, //Оф.цена закр.
quotebasis, //Тип цены
admittedquote, //Призн.котир.
prevadmittedquot, //Призн.кот.пред.
lastbid, //Спрос сессии
lastoffer, //Предл.сессии
marketprice2, //Рын.цена2
prevlegalclosepr, //Пред.цена закр.
openperiodprice, //Цена предторг.
min_curr_last, //Мин.тек.цена
settlecode, //Код расч.
min_curr_last_ti, //Вр. изм.м.т.ц.
issuesizeplaced, //Объем в обр.
currencyid, //Сопр.валюта
listlevel, //Листинг
qualified, //Квалиф. инвестор
yieldatprevwapr, //Доход.пред.оц.
oblpercent, //Тип цены обл.
starttime, //Начало
endtime, //Окончание
pricemax, //Макс. возм. цена
pricemin, //Мин. возм. цена
changetime, //Время изм.
optionbase, //Баз.актив
tradechange, //Тренд
prevsettleprice, //Пред.расч.цена
numcontracts, //Кол-во отк.поз.
selldepo, //ГО продавца
buydepo, //ГО покупателя
steppricet, //Ст. шага цены
stepprice, //Ст. шага цены
steppricecl, //Ст.шага цены кл.
steppriceprcl, //Ст. шага промкл.
settleprice, //Расч. цена
percentrate, //Ставка
clstate, //Статус кл.
clprice, //Кот. клиринга
evnstarttime, //Начало веч.
evnendtime, //Окончание веч.
monstarttime, //Начало утр.
monendtime, //Окончание утр.
curstepprice, //Валюта шага цены
realvmprice, //Рын. котир.
expdate, //Дата исп.
futuretype, //Тип фьючерса
ispercent, //Тип цены
firstopen, //Перв.цена сессии
lastclose, //Посл.цена сессии
prevsettlevol, //Пред.расч.объем
optionbaseclass, //Класс баз.актива
crossrate, //Курс
counterprice, //Цена контраг.
plannedtime, //Начало аук.план
auctprice, //Цена аукц.
auctvalue, //Объем аукц.руб
auctvolume, //Кол-во аукц.
auctnumtrades, //Кол-во сд.аукц.
imbalance, //Дисбаланс ПА
marketvolb, //Рын.пок.
marketvols, //Рын.прод.
first_cur, //Валюта покупки
second_cur, //Валюта прод.
currentvalue, //Знач.
lastvalue, //Зн.закр.
min, //Минимум
max, //Максимум
openvalue, //Открытие
pchange, //% изменение
iopen, //Открытие
lowval, //Мин.
highval, //Макс.
icapital, //Капитал. бумаг
ivolume, //Объем инд.сдел.
baseprice, //Баз.курс
rth, //Верх.гран.
rtl, //Нижн.гран.
k_h, //К.верх.гран.
k_l, //К.нижн.гран.
settledate1, //Дата расч.1
tradingphase, //Бирж.Сессия
bgop, //БГОП
bgonp, //БГОНП
strike, //Страйк
optiontype, //Тип опциона
volatility, //Волатильность
theorprice, //Теор. цена
marg, //Марж.
optionkind, //Разн. опц.
buy_mat, //Погашение пок.
sell_mat, //Погашение прод.
buy_class, //Класс покупки
buy_sec, //Бумага покупки
sell_class, //Класс прод.
sell_sec //Бумага прод.
Улучшить документацию по Qlua
 
Цитата
Андрей написал:
[TABLE][TR][TD] Параметр[/TD][TD]Описание [/TD][TD]Тип принимаемый полем [/TD][TD] изначальны тип Lua[/TD][TD] Изначальный тип С++[/TD][/TR][TR][TD] CLASSCODE[/TD][TD] [/TD][TD] string[/TD][TD] string[/TD][TD] string[/TD][/TR][TR][TD] TRANS_ID[/TD][TD] [/TD][TD] string[/TD][TD] number[/TD][TD] int (хотя лучше бы сделать uint)[/TD][/TR][TR][TD] PRICE[/TD][TD] [/TD][TD] string[/TD][TD] number[/TD][TD] double[/TD][/TR][/TABLE]
оформление таблицы съехало. но в общем разобраться можно. (переменная, описание как оно уже есть, тип принемаемый полем, тип Луа, тип С++ (так как я к примену на плюсах пишу и с Луа стыкую))
Улучшить документацию по Qlua
 
Цитата
Stanislav Tvorogov написал:
Цитата
2) К таблицам добавить типы данных каждой из строк таблицы
Уточните, что здесь имеется ввиду под типами данных?

Цитата
3) Сделать описание типов данных к таблице для функции sentTransaction (я знаю что там все в виде строк передается, но нужно сделать описание исходных типов данных)
Значения полей соответствуют параметрам, описанным в Руководстве пользователя QUIK, в разделе «Формат .tri-файла с параметрами транзакций».


опишу на небольшом примере. И так по всем таблицам, переменным...

[TABLE][TR][TD] Параметр[/TD][TD]Описание [/TD][TD]Тип принимаемый полем [/TD][TD] изначальны тип Lua[/TD][TD] Изначальный тип С++[/TD][/TR][TR][TD] CLASSCODE[/TD][TD] [/TD][TD] string[/TD][TD] string[/TD][TD] string[/TD][/TR][TR][TD] TRANS_ID[/TD][TD] [/TD][TD] string[/TD][TD] number[/TD][TD] int (хотя лучше бы сделать uint)[/TD][/TR][TR][TD] PRICE[/TD][TD] [/TD][TD] string[/TD][TD] number[/TD][TD] double[/TD][/TR][/TABLE]
вопросы по полям sentTransaction
 
Цитата
Stanislav Tvorogov написал:
*_DISCOUNT, REPORATE, REFUNDRATE, BASE_ORDER_KEY, KFL, KGO  - числовые поля;
А аналогом какого формата они являются ? (int, long, double...) и какова должна быть точность после запятой ?
Улучшить документацию по Qlua
 
1) Сделать как можно больше примеров (по возможности на каждую из функций)

2) К таблицам добавить типы данных каждой из строк таблицы

3) Сделать описание типов данных к таблице для функции sentTransaction (я знаю что там все в виде строк передается, но нужно сделать описание исходных типов данных)

4) перенести Api Qlua на С++. (это даст пользователям куда больше возможностей для написания роботов и этим Вы сможете несколько упрочить свои позиции на рынке. ведь тот же Mql5 и то более удобен для написания роботов. НО НЕ ДЕЛАЙТЕ еще один Mql5! Этих специализированных языков (которые не дают возможности сделать что то кроме своей узкой задачи и так полно...) ).
вопросы по полям sentTransaction
 
Я знаю что все поля заполняются как строки, но мне нужно знать каков изначальный тип данных (я позже перевожу его в строковый формат)

Подскажите какому типу соответствует значение следующих полей (и до какого знака нужно их округлять, если тип double или float):
START_DISCOUNT
LOWER_DISCOUNT
UPPER_DISCOUNT
PARTNER
SETTLE_CODE
REPOTERM
REPORATE
REFUNDRATE
SETTLE_DATE - интересует формат даты в строке "YYYYMMDD" ?
BASE_ORDER_KEY
VOLUMEMN
VOLUMEPL
KFL
KGO
Как разделить строку на отдельные числа?, Исторические данные
 
Я не люблю луа, так что с ним приходится только для примеров сталкиваться. делаю сейчас для себя некий API простенький для подключения к квику из С++. А Луа использую только что бы примеры функций написать (а далее их уже переписываю на плюсах). Так что с отладчиком не помогу к сожалению.
Как разделить строку на отдельные числа?, Исторические данные
 
Раз уж я взялся отвечать, то попробую до конца помочь))
Снизу полный рабочий пример =)
Код
function main()

   S = "Hello,World";
   
   res = S:split(",");
   message(res[1]);
   message(res[2]);
   
end;

function string:split(delimiter)
    local result = { }
    local from  = 1
    local delim_from, delim_to = string.find( self, delimiter, from  )
    while delim_from do
        table.insert( result, string.sub( self, from , delim_from-1 ) )
        from  = delim_to + 1
        delim_from, delim_to = string.find( self, delimiter, from  )
    end
    table.insert( result, string.sub( self, from  ) )
    return result
end
Как разделить строку на отдельные числа?, Исторические данные
 
И я кое где ошибся тоже) но метод точно рабочий.

пример немного иначе писать нужно было (в луа функции через двоеточие вызываются, а не через точку) :
Код
function main()
    local s1={};
    S = "Hello//World";
    s1=S:split("//");
    message(sl[1]);
    message(sl[2]);
end
Как разделить строку на отдельные числа?, Исторические данные
 
Вот так вот, правильнее вставить будет: (в прошлом сообщении один лишний перенос строки был)
Код
function string:split(delimiter)  
    local result = { }  
    local from  = 1  
    local delim_from, delim_to = string.find( self, delimiter, from  )  
    while delim_from do    
        table.insert( result, string.sub( self, from , delim_from-1 ) )    
        from  = delim_to + 1    
        delim_from, delim_to = string.find( self, delimiter, from  )  
    end  
    table.insert( result, string.sub( self, from  ) )  
    return result
end
Как разделить строку на отдельные числа?, Исторические данные
 
Цитата
Андрей написал:
ругается, похоже на то, что lua никто не объяснил, что он должен понимать этот метод
Его и нету в луа. Но я сверху добавил ссылку на аккаунт какого то парня на Гихабе, кто сделал жто дополнение. ниже привожу код с его аккаунта. Этот код нужно просто вставить в луа скрипт и тогда все заработает.
Код
function string:split(delimiter)  
    local result = { }  
    local from  = 1  
    local delim_from, 
    delim_to = string.find( self, delimiter, from  )  
    while delim_from do    
        table.insert( result, string.sub( self, from , delim_from-1 ) )    
        from  = delim_to + 1    
        delim_from, delim_to = string.find( self, delimiter, from  )  
    end  
    table.insert( result, string.sub( self, from  ) )  
    return result
end
Страницы: 1 2 След.
Наверх