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

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

Страницы: 1
Как получить всего заявок по инструменту (покупок / продаж)
 
Здравствуйте, помогите получить значение из таблицы всего заявок на покупку и на продажу по инструменту из таблицы "Котировки фьючерсов"
Кажется через getItem но как точно не могу понять  
Как получить текущую чистую позицию quik
 
Здравствуйте, подскажите как получить текущую чистую позицию quik, все обыскал толковой информации не могу найти , программировать только учусь, не судите строго.
если можно напишите пожалуйста пример
Как посмотреть цену последней своей заявки
 
Здравствуйте, подскажите пожалуйста с помощью какой функции можно посмотреть цену своей последней исполненной заявки? GetItem() не нашел такого параметра, можно пожалуйста с примером, что бы разобраться, я только учусь программировать роботов.
Ошибка, attempt to compare two table values
 
Цитата
Sergey Gorokhov написал:
Алексей  ,

функция getFuturesHolding вызывается внутри функции obnov(), которая нигде в коде не используется. Либо в этом и есть причина, либо Вы опять привели не полный код скрипта.
И Вы так и не представили скриншот таблицы позиций по клиентским счетам, на котором видно что данные которые Вы запрашиваете, действительно существуют.
dofile(getScriptPath().."\\param.lua")

is_run = true ---переменная для повторения цикла
LogFile = getScriptPath().."\\LogFile.txt"

function  OnInit()    -- выполняетя 1 раз перез запуском доп потока
CreateTable()
WriteToEndOfFile(LogFile,"Робот Запущен!")
test()

end

function main()

while (is_run== true) do

         DataTable()
          Time()
  obnov()
          --trade()
 
 
                   --ОСновные вычисления
 
end

end

function OnTrade(TradeX)

                     -----------ДЕЙСТВИЯ ПРИ ПОЯВЛЕНИИ НОВОЙ СДЕЛКИ

end

function OnOrder(OrderX)
                             -----действия при появлении новой заявки
end


function  OnStopOrder()

                  ---Действия при появлении стоп заявки.
end

function OnStop()

    message('Робот остановлен, все позиции по контрактам закрыты!')             ----Действия При нажатии кновки ОСТАНОВИТЬ,(Закрытие всех сделок выход в лот 0)
    WriteToEndOfFile(LogFile,"Робот остановлен, все позиции по контрактам закрыты!")
DestroyTable(TableID)


end



файл param.lua




dofile(getScriptPath().."\\Options.lua")

id_trans = 777
trans_id = id_trans + 1


function obnov()
priceMax = getParamEx(KodClass,InstrumentKod,"PRICEMAX").param_value
tekPrice = getParamEx(KodClass,InstrumentKod,"LAST").param_value
priceMin= getParamEx(KodClass,InstrumentKod,"PRICEMIN").param_value
--Lot=  getFuturesHolding(firmid,TorShet,InstrumentKod,0).totalnet
-- tekMarzha=
end

function test()



local Transaction={


   ['TRANS_ID']  = tostring(trans_id),   -- Номер транзакции
   ['ACCOUNT']   = TorShet,              -- Код счета
   ['CLASSCODE'] = KodClass,           -- Код класса
   ['SECCODE']   = InstrumentKod,             -- Код инструмента
   ['ACTION']    = 'NEW_ORDER',          -- Тип транзакции ('NEW_ORDER' - новая заявка)
   ['OPERATION'] = 'B',                  -- Операция ('B' - buy, или 'S' - sell)
   ['TYPE']      = 'L',                  -- Тип ('L' - лимитированная, 'M' - рыночная)
   ['QUANTITY']  = '1',                  -- Количество
   ['PRICE']     = tostring(tekPrice)   -- Цена
}


local Res = sendTransaction(Transaction)

end


-- function trade()


-- if(tonumber(tekPrice)==nil or tonumber(priceMin) == nil or tonumber(priceMax)==nil)then

-- SetCell(TableID,2,4,"Не удалось получить цены с графика, нет соеденения с сервером!")
-- WriteToEndOfFile(LogFile,"Не удалось получить цены с графика, нет соеденения с сервером!")


-- end


-- if(tonumber(tekPrice) < tonumber(priceMin) )then    --  25 строка


-- transaction = {
-- ACCOUNT=TorShet,
-- CLIENT_CODE=KodClient,
-- TYPE="M",
-- TRANS_ID="7",
-- CLASSCODE=KodClass,
-- SECCODE=InstrumentKod,
-- ACTION="NEW_ORDER",
-- OPERATION="B",
-- PRICE=tostring(tekPrice),
-- QUANTITY=tostring(LotUp)
-- }

-- transaction.TRANS_ID = "12345"
-- sendTransaction(transaction)

-- elseif(tonumber(tekPrice) > tonumber(priceMax))then
-- transaction = {
-- ACCOUNT=TorShet,
-- CLIENT_CODE=KodClient,
-- TYPE="M",
-- TRANS_ID="8",
-- CLASSCODE=KodClass,
-- SECCODE=InstrumentKod,
-- ACTION="NEW_ORDER",
-- OPERATION="S",
-- PRICE=tostring(tekPrice),
-- QUANTITY=tostring(LotUp)
-- }

-- transaction.TRANS_ID = "12345"
-- sendTransaction(transaction)


-- end

-- end




function PutDataToTableInit()
Clear(TableID)
SetWindowCaption(TableID,"Робот ИНТЕЛЕКТ! Автор: Алексей Егоров.")
SetWindowPos(TableID,100,200,888,100)  -- Крдинаты 100,200,ширина и высота  888,100
InsertRow(TableID,1)  -- вставка строки в таблицу
InsertRow(TableID,2)
InsertRow(TableID,3)
SetColor(TableID,2,QTABLE_NO_INDEX,RGB(255,255,0),RGB(0,0,0),RGB(0,220,220),RGB(0,0,0))
SetColor(TableID,3,QTABLE_NO_INDEX,RGB(255,255,0),RGB(0,0,0),RGB(0,220,220),RGB(0,0,0))
end

function WriteToEndOfFile(sFile,sDataString)   -- запись лог файла

local serverTime= GetInfoParam("SERVERTIME")
local serverDate= GetInfoParam("TRADEDATE")
sDataString = serverDate..":"..serverTime..":"..sDataString.."\n"
local f = io.open(sFile,"r+")
if(f==nil)then
f = io.open(sFile,"w")
end

if(f~=nil)then
f:seek("end",0)
f:write(sDataString)
f:flush()
f:close()
end

end

function CreateTable()   --создание таблицы
TableID = AllocTable()      --иницилизация таблицы(создание)
AddColumn(TableID,1,"ВРЕМЯ СЕРВЕРА",true, QTABLE_STRING_TYPE,20)
AddColumn(TableID,2,"КОД ИНСТРУМЕНТА",true, QTABLE_STRING_TYPE,20)           -- Добавление колонок в таблицу
AddColumn(TableID,3,"ЛОТ-КОНТРАКТЫ",true, QTABLE_STRING_TYPE,20)
AddColumn(TableID,4,"КОМЕНТАРИИ",true, QTABLE_STRING_TYPE,60)
AddColumn(TableID,5,"КОД КЛАССА",true, QTABLE_STRING_TYPE,20)
CreateWindow(TableID)
PutDataToTableInit(TableID)
SetColor(TableID,1,QTABLE_NO_INDEX,RGB(255,255,255),RGB(0,0,0),RGB(0,220,220),RGB(255,0,255))

end

function Time()

ServerTime= GetInfoParam("SERVERTIME")
if(ServerTime==nil or ServerTime=="")then
Errortime="Время не полученно, подключитесь к серверу!"

WriteToEndOfFile(LogFile,"Время не полученно, подключитесь к серверу!")
else

Errortime=""

end

SetCell(TableID,1,1,ServerTime)    
SetCell(TableID,1,4,Errortime)         -- запись данных в строку 1 и колонку 4

sleep(1000)
end

function DataTable()   --Данные в таблице





SetCell(TableID,1,2,InstrumentKod)
SetCell(TableID,1,5,KodClass)
SetCell(TableID,1,3,Lot)
SetCell(TableID,3,1,"Где сработает заявка")
SetCell(TableID,3,2,priceMin)
SetCell(TableID,3,3,priceMax)
SetCell(TableID,3,4,"текущая цена ==>")
SetCell(TableID,3,5,tekPrice)
sleep(100)



if(IsWindowClosed(TableID))then
CreateWindow(TableID)
PutDataToTableInit()
SetColor(TableID,1,QTABLE_NO_INDEX,RGB(0,230,0),RGB(0,0,0),RGB(0,220,220),RGB(0,0,0))






end


end


файл   Options.lua


InstrumentKod = "SiZ7" -- код инструмента(бумаги) sec_code
TorShet = "SPBFUT00877"  ---Торговый счет
KodClient = "10632"  --- Код клиента
KodClass = "SPBFUT"   --код класса
firmid = "SPBFUT000000"   -- id фирмы (можно посмотреть в ограничение по клиенским счетам 'фирма')
LotUp = 1               -- количество контрактов для покупки
LotDown = 1                -- количество контрактов на продажу
trailingSize = 100         -- размер трейлинг стопа
Ошибка, attempt to compare two table values
 
Цитата
Egor Zaytsev написал:
Добрый день.

В скрипте не видно входных параметров. Проверяйте фирму, торговый счет, код инструмента.
Наличие текущей чистой позиции в таблице позиций по клиентским счетам.
InstrumentKod = "SiZ7" -- код инструмента(бумаги) sec_code
TorShet = "00000A"  ---Торговый счет
KodClient = "400000"  --- Код клиента
KodClass = "SPBFUT"   --код класса
firmid = "MC01300000"   -- id фирмы (можно посмотреть в ограничение по клиенским счетам 'фирма')
LotUp = 1               -- количество контрактов для покупки
LotDown = 1                -- количество контрактов на продажу
trailingSize = 100         -- размер трейлинг стопа
Не отправляет транзакцию на сервер
 
Здравствуйте, скрипт не хочет отправлять транзакцию на сервер, скрипт запускается, работает, но нечего не происходит, запуск функции для проверки записан в OnInit код транзакции ниже
Код
function test()



local Transaction={

      
    ['TRANS_ID']  = tostring(trans_id),   -- Номер транзакции
    ['ACCOUNT']   = TorShet,              -- Код счета
    ['CLASSCODE'] = KodClass,           -- Код класса
    ['SECCODE']   = InstrumentKod,             -- Код инструмента
    ['ACTION']    = 'NEW_ORDER',          -- Тип транзакции ('NEW_ORDER' - новая заявка)
    ['OPERATION'] = 'B',                  -- Операция ('B' - buy, или 'S' - sell)
    ['TYPE']      = 'L',                  -- Тип ('L' - лимитированная, 'M' - рыночная)
    ['QUANTITY']  = '1',                  -- Количество
    ['PRICE']     = tostring(tekPrice)   -- Цена
}


local Res = sendTransaction(Transaction)

end
Ошибка, attempt to compare two table values
 
Цитата
Алексей написал:
Цитата
Egor Zaytsev   написал:
Цитата
Алексей   написал:
Помогите пожалуйста не могу разобраться, в гугле тоже нечего путного найти не могу

как мне получить текущюю чистую позицию , сделал все по официальной документации, но он не получает значения, что я делаю не так?
Код
      Lot   =       getFuturesHolding   (firmid,TorShet,InstrumentKod,   0   ).totalnet
      
Добрый день.

В QUIK в таблице позиций значение отображается?
Что Вам скрипт возвращает? Ноль? Ошибку? Можно поподробнее, а также выложите полный скрипт.
нечего не происходит,  при этом скрипт работает ниже код
Код
  dofile( getScriptPath () .. "\\Options.lua")

id_trans  =   777 
trans_id  =  id_trans  +   1 


 function   obnov ()
priceMax  =   getParamEx (KodClass,InstrumentKod,"PRICEMAX").param_value
tekPrice  =   getParamEx (KodClass,InstrumentKod,"LAST").param_value
priceMin =   getParamEx (KodClass,InstrumentKod,"PRICEMIN").param_value
 --Lot=  getFuturesHolding(firmid,TorShet,InstrumentKod,0).totalnet 
  -- tekMarzha=  
 end 

 function   test ()



 local  Transaction = {

      
    [ 'TRANS_ID' ]   =  tostring(trans_id),    -- Номер транзакции 
    [ 'ACCOUNT' ]    =  TorShet,               -- Код счета 
    [ 'CLASSCODE' ]  =  KodClass,            -- Код класса 
    [ 'SECCODE' ]    =  InstrumentKod,              -- Код инструмента 
    [ 'ACTION' ]     =   'NEW_ORDER' ,           -- Тип транзакции ('NEW_ORDER' - новая заявка) 
    [ 'OPERATION' ]  =   'B' ,                   -- Операция ('B' - buy, или 'S' - sell) 
    [ 'TYPE' ]       =   'L' ,                   -- Тип ('L' - лимитированная, 'M' - рыночная) 
    [ 'QUANTITY' ]   =   '1' ,                   -- Количество 
    [ 'PRICE' ]      =  tostring(tekPrice)    -- Цена 
}


 local  Res  =   sendTransaction (Transaction)

 end 


 -- function trade() 


 -- if(tonumber(tekPrice)==nil or tonumber(priceMin) == nil or tonumber(priceMax)==nil)then 

 -- SetCell(TableID,2,4,"Не удалось получить цены с графика, нет соеденения с сервером!") 
 -- WriteToEndOfFile(LogFile,"Не удалось получить цены с графика, нет соеденения с сервером!") 


 -- end 


 -- if(tonumber(tekPrice) < tonumber(priceMin) )then    --  25 строка 


 -- transaction = { 
 -- ACCOUNT=TorShet, 
 -- CLIENT_CODE=KodClient, 
 -- TYPE="M", 
 -- TRANS_ID="7", 
 -- CLASSCODE=KodClass, 
 -- SECCODE=InstrumentKod, 
 -- ACTION="NEW_ORDER", 
 -- OPERATION="B", 
 -- PRICE=tostring(tekPrice), 
 -- QUANTITY=tostring(LotUp) 
 -- } 

 -- transaction.TRANS_ID = "12345" 
 -- sendTransaction(transaction) 

 -- elseif(tonumber(tekPrice) > tonumber(priceMax))then 
 -- transaction = { 
 -- ACCOUNT=TorShet, 
 -- CLIENT_CODE=KodClient, 
 -- TYPE="M", 
 -- TRANS_ID="8", 
 -- CLASSCODE=KodClass, 
 -- SECCODE=InstrumentKod, 
 -- ACTION="NEW_ORDER", 
 -- OPERATION="S", 
 -- PRICE=tostring(tekPrice), 
 -- QUANTITY=tostring(LotUp) 
 -- } 

 -- transaction.TRANS_ID = "12345" 
 -- sendTransaction(transaction) 


 -- end 

 -- end 




 function   PutDataToTableInit ()
 Clear (TableID)
 SetWindowCaption (TableID,"Робот ИНТЕЛЕКТ !  Автор: Алексей Егоров.")
 SetWindowPos (TableID, 100 , 200 , 888 , 100 )   -- Крдинаты 100,200,ширина и высота  888,100 
 InsertRow (TableID, 1 )   -- вставка строки в таблицу 
 InsertRow (TableID, 2 )
 InsertRow (TableID, 3 )
 SetColor (TableID, 2 ,QTABLE_NO_INDEX, RGB ( 255 , 255 , 0 ), RGB ( 0 , 0 , 0 ), RGB ( 0 , 220 , 220 ), RGB ( 0 , 0 , 0 ))
 SetColor (TableID, 3 ,QTABLE_NO_INDEX, RGB ( 255 , 255 , 0 ), RGB ( 0 , 0 , 0 ), RGB ( 0 , 220 , 220 ), RGB ( 0 , 0 , 0 ))
 end 

 function   WriteToEndOfFile (sFile,sDataString)    -- запись лог файла 

 local  serverTime =  GetInfoParam( "SERVERTIME" )
 local  serverDate =  GetInfoParam( "TRADEDATE" )
sDataString  =  serverDate .. ":" .. serverTime .. ":" .. sDataString .. "\n"
 local  f  =   io.open (sFile,"r + ")
 if (f =  =  nil ) then 
f  =   io.open (sFile,"w")
 end 

 if (f~ =  nil ) then 
f:seek( "end" , 0 )
f:write(sDataString)
f:flush()
f:close()
 end 

 end 

 function   CreateTable ()    --создание таблицы 
TableID  =   AllocTable ()       --иницилизация таблицы(создание) 
 AddColumn (TableID, 1 ,"ВРЕМЯ СЕРВЕРА", true , QTABLE_STRING_TYPE, 20 )
 AddColumn (TableID, 2 ,"КОД ИНСТРУМЕНТА", true , QTABLE_STRING_TYPE, 20 )            -- Добавление колонок в таблицу 
 AddColumn (TableID, 3 ,"ЛОТ - КОНТРАКТЫ", true , QTABLE_STRING_TYPE, 20 )
 AddColumn (TableID, 4 ,"КОМЕНТАРИИ", true , QTABLE_STRING_TYPE, 60 )
 AddColumn (TableID, 5 ,"КОД КЛАССА", true , QTABLE_STRING_TYPE, 20 )
 CreateWindow (TableID)
PutDataToTableInit(TableID)
 SetColor (TableID, 1 ,QTABLE_NO_INDEX, RGB ( 255 , 255 , 255 ), RGB ( 0 , 0 , 0 ), RGB ( 0 , 220 , 220 ), RGB ( 255 , 0 , 255 ))

 end 

 function   Time ()

ServerTime =  GetInfoParam( "SERVERTIME" )
 if (ServerTime =  =  nil   or  ServerTime =  =  "" ) then 
Errortime =  "Время не полученно, подключитесь к серверу!" 

WriteToEndOfFile(LogFile,"Время не полученно, подключитесь к серверу ! ")
 else 

Errortime =  "" 

 end 

 SetCell (TableID, 1 , 1 ,ServerTime)    
 SetCell (TableID, 1 , 4 ,Errortime)          -- запись данных в строку 1 и колонку 4 

 sleep ( 1000 )
 end 

 function   DataTable ()    --Данные в таблице 





 SetCell (TableID, 1 , 2 ,InstrumentKod)
 SetCell (TableID, 1 , 5 ,KodClass)
 SetCell (TableID, 1 , 3 ,Lot)
 SetCell (TableID, 3 , 1 ,"Где сработает заявка")
 SetCell (TableID, 3 , 2 ,priceMin)
 SetCell (TableID, 3 , 3 ,priceMax)
 SetCell (TableID, 3 , 4 ,"текущая цена  =  =  > ")
 SetCell (TableID, 3 , 5 ,tekPrice)
 sleep ( 100 )
 
 

 if ( IsWindowClosed (TableID)) then 
 CreateWindow (TableID)
PutDataToTableInit()
 SetColor (TableID, 1 ,QTABLE_NO_INDEX, RGB ( 0 , 230 , 0 ), RGB ( 0 , 0 , 0 ), RGB ( 0 , 220 , 220 ), RGB ( 0 , 0 , 0 ))






 end 


 end 
  
Я ее закоментировал
Ошибка, attempt to compare two table values
 
Цитата
Egor Zaytsev написал:
Цитата
Алексей   написал:
Помогите пожалуйста не могу разобраться, в гугле тоже нечего путного найти не могу

как мне получить текущюю чистую позицию , сделал все по официальной документации, но он не получает значения, что я делаю не так?
Код
    Lot  =     getFuturesHolding  (firmid,TorShet,InstrumentKod,  0  ).totalnet
    
Добрый день.

В QUIK в таблице позиций значение отображается?
Что Вам скрипт возвращает? Ноль? Ошибку? Можно поподробнее, а также выложите полный скрипт.
нечего не происходит,  при этом скрипт работает ниже код
Код
dofile(getScriptPath().."\\Options.lua")

id_trans = 777
trans_id = id_trans + 1


function obnov()
priceMax = getParamEx(KodClass,InstrumentKod,"PRICEMAX").param_value
tekPrice = getParamEx(KodClass,InstrumentKod,"LAST").param_value
priceMin= getParamEx(KodClass,InstrumentKod,"PRICEMIN").param_value
--Lot=  getFuturesHolding(firmid,TorShet,InstrumentKod,0).totalnet
 -- tekMarzha= 
end

function test()



local Transaction={

      
    ['TRANS_ID']  = tostring(trans_id),   -- Номер транзакции
    ['ACCOUNT']   = TorShet,              -- Код счета
    ['CLASSCODE'] = KodClass,           -- Код класса
    ['SECCODE']   = InstrumentKod,             -- Код инструмента
    ['ACTION']    = 'NEW_ORDER',          -- Тип транзакции ('NEW_ORDER' - новая заявка)
    ['OPERATION'] = 'B',                  -- Операция ('B' - buy, или 'S' - sell)
    ['TYPE']      = 'L',                  -- Тип ('L' - лимитированная, 'M' - рыночная)
    ['QUANTITY']  = '1',                  -- Количество
    ['PRICE']     = tostring(tekPrice)   -- Цена
}


local Res = sendTransaction(Transaction)

end


-- function trade()


-- if(tonumber(tekPrice)==nil or tonumber(priceMin) == nil or tonumber(priceMax)==nil)then

-- SetCell(TableID,2,4,"Не удалось получить цены с графика, нет соеденения с сервером!")
-- WriteToEndOfFile(LogFile,"Не удалось получить цены с графика, нет соеденения с сервером!")


-- end


-- if(tonumber(tekPrice) < tonumber(priceMin) )then    --  25 строка


-- transaction = {
-- ACCOUNT=TorShet,
-- CLIENT_CODE=KodClient,
-- TYPE="M",
-- TRANS_ID="7",
-- CLASSCODE=KodClass,
-- SECCODE=InstrumentKod,
-- ACTION="NEW_ORDER",
-- OPERATION="B",
-- PRICE=tostring(tekPrice),
-- QUANTITY=tostring(LotUp)
-- }

-- transaction.TRANS_ID = "12345"
-- sendTransaction(transaction)

-- elseif(tonumber(tekPrice) > tonumber(priceMax))then
-- transaction = {
-- ACCOUNT=TorShet,
-- CLIENT_CODE=KodClient,
-- TYPE="M",
-- TRANS_ID="8",
-- CLASSCODE=KodClass,
-- SECCODE=InstrumentKod,
-- ACTION="NEW_ORDER",
-- OPERATION="S",
-- PRICE=tostring(tekPrice),
-- QUANTITY=tostring(LotUp)
-- }

-- transaction.TRANS_ID = "12345"
-- sendTransaction(transaction)


-- end

-- end




function PutDataToTableInit()
Clear(TableID)
SetWindowCaption(TableID,"Робот ИНТЕЛЕКТ! Автор: Алексей Егоров.")
SetWindowPos(TableID,100,200,888,100)  -- Крдинаты 100,200,ширина и высота  888,100
InsertRow(TableID,1)  -- вставка строки в таблицу
InsertRow(TableID,2)
InsertRow(TableID,3)
SetColor(TableID,2,QTABLE_NO_INDEX,RGB(255,255,0),RGB(0,0,0),RGB(0,220,220),RGB(0,0,0))
SetColor(TableID,3,QTABLE_NO_INDEX,RGB(255,255,0),RGB(0,0,0),RGB(0,220,220),RGB(0,0,0))
end

function WriteToEndOfFile(sFile,sDataString)   -- запись лог файла

local serverTime= GetInfoParam("SERVERTIME")
local serverDate= GetInfoParam("TRADEDATE")
sDataString = serverDate..":"..serverTime..":"..sDataString.."\n"
local f = io.open(sFile,"r+")
if(f==nil)then
f = io.open(sFile,"w")
end

if(f~=nil)then
f:seek("end",0)
f:write(sDataString)
f:flush()
f:close()
end

end

function CreateTable()   --создание таблицы
TableID = AllocTable()      --иницилизация таблицы(создание)
AddColumn(TableID,1,"ВРЕМЯ СЕРВЕРА",true, QTABLE_STRING_TYPE,20)
AddColumn(TableID,2,"КОД ИНСТРУМЕНТА",true, QTABLE_STRING_TYPE,20)           -- Добавление колонок в таблицу
AddColumn(TableID,3,"ЛОТ-КОНТРАКТЫ",true, QTABLE_STRING_TYPE,20)
AddColumn(TableID,4,"КОМЕНТАРИИ",true, QTABLE_STRING_TYPE,60)
AddColumn(TableID,5,"КОД КЛАССА",true, QTABLE_STRING_TYPE,20)
CreateWindow(TableID)
PutDataToTableInit(TableID)
SetColor(TableID,1,QTABLE_NO_INDEX,RGB(255,255,255),RGB(0,0,0),RGB(0,220,220),RGB(255,0,255))

end

function Time()

ServerTime= GetInfoParam("SERVERTIME")
if(ServerTime==nil or ServerTime=="")then
Errortime="Время не полученно, подключитесь к серверу!"

WriteToEndOfFile(LogFile,"Время не полученно, подключитесь к серверу!")
else

Errortime=""

end

SetCell(TableID,1,1,ServerTime)    
SetCell(TableID,1,4,Errortime)         -- запись данных в строку 1 и колонку 4

sleep(1000)
end

function DataTable()   --Данные в таблице





SetCell(TableID,1,2,InstrumentKod)
SetCell(TableID,1,5,KodClass)
SetCell(TableID,1,3,Lot)
SetCell(TableID,3,1,"Где сработает заявка")
SetCell(TableID,3,2,priceMin)
SetCell(TableID,3,3,priceMax)
SetCell(TableID,3,4,"текущая цена ==>")
SetCell(TableID,3,5,tekPrice)
sleep(100)
 
 

if(IsWindowClosed(TableID))then
CreateWindow(TableID)
PutDataToTableInit()
SetColor(TableID,1,QTABLE_NO_INDEX,RGB(0,230,0),RGB(0,0,0),RGB(0,220,220),RGB(0,0,0))






end


end
Ошибка, attempt to compare two table values
 
Помогите пожалуйста не могу разобраться, в гугле тоже нечего путного найти не могу

как мне получить текущюю чистую позицию , сделал все по официальной документации, но он не получает значения, что я делаю не так?
Код
Lot= getFuturesHolding(firmid,TorShet,InstrumentKod,0).totalnet
Ошибка, attempt to compare two table values
 
Цитата
Nikolay Pavlov написал:
Цитата
Алексей   написал:
Нашел ошибку, исправил, спасибо за помощь, есть еще вопрос каким параметром можно получить "текущая чистая позиция" и вариационная маржа, и есть ли команда для закрытия всех сделок?
Для получения  Текущей чистой позиции  и  Вариационной маржи  на срочном рынке используйте функцию getFuturesHolding() (формат использования смотрите в официальной справке). Что имеется ввиду под закрытием всех сделок, закрытие позиции?
да, как закрыть все позиции
Ошибка, attempt to compare two table values
 
Цитата
Алексей написал:
Нашел ошибку, исправил, спасибо за помощь, есть еще вопрос каким параметром можно получить "текущая чистая позиция" и вариационная маржа, и есть ли команда для закрытия всех сделок?
текущая чистая позиция из позиции по клиенским счетам на срочном рынке
Ошибка, attempt to compare two table values
 
Нашел ошибку, исправил, спасибо за помощь, есть еще вопрос каким параметром можно получить "текущая чистая позиция" и вариационная маржа, и есть ли команда для закрытия всех сделок?
Ошибка, attempt to compare two table values
 
Цитата
Nikolay Pavlov написал:
Выведите перед проблемным местом значения tonumber(tekPrice)  и  tonumber(priceMin), диагностика явно говорит, что одно из значений равно nil, т.е. Вы пытаетесь сравнить nil с числом и получаете ошибку. Напишите например так, чтобы точно определить с какими значениями работает оператор if:
Код
   message (tostring(tonumber(tekPrice)))
 message (tostring(tonumber(priceMin)))

 if  (tonumber(tekPrice)   <   tonumber(priceMin) )  then        --  25 строка  
     ..  .. 
  
Вы правы, Не получает цену последней сделки, возвращает nil, только не понятно почему

tekPrice=getParamEx(KodClass,InstrumentKod,"LAST").param_value
Ошибка, attempt to compare two table values
 
Цитата
Алексей написал:
C:\Users\KILLER\Desktop\robot_intelect\param.lua:25: attempt to compare nil with number

ошибку теперь такую выдает
Код
  tekPrice =  getParamEx (KodClass,InstrumentKod,"LAST").param_value
priceMax  =   getParamEx (KodClass,InstrumentKod,"PRICEMAX").param_value
priceMin =   getParamEx (KodClass,InstrumentKod,"PRICEMIN").param_value
  -- tekMarzha=  





 function   trade ()


 if (tonumber(tekPrice) =  =  nil   or  tonumber(priceMin)  =  =   nil   or  tonumber(priceMax) =  =  nil ) then 

 SetCell (TableID, 2 , 4 ,"Не удалось получить цены с графика, нет соеденения с сервером ! ")
WriteToEndOfFile(LogFile,"Не удалось получить цены с графика, нет соеденения с сервером ! ")


 end 


 if (tonumber(tekPrice)  <  tonumber(priceMin) ) then      --  25 строка 


transaction  =  {
ACCOUNT = TorShet,
CLIENT_CODE = KodClient,
TYPE =  "M" ,
TRANS_ID =  "7" ,
CLASSCODE = KodClass,
SECCODE = InstrumentKod,
ACTION =  "NEW_ORDER" ,
OPERATION =  "B" ,
PRICE = tostring(tekPrice),
QUANTITY = tostring(LotUp)
}

transaction.TRANS_ID  =   "12345" 
 sendTransaction (transaction)

 elseif (tonumber(tekPrice)  >  tonumber(priceMax)) then 
transaction  =  {
ACCOUNT = TorShet,
CLIENT_CODE = KodClient,
TYPE =  "M" ,
TRANS_ID =  "8" ,
CLASSCODE = KodClass,
SECCODE = InstrumentKod,
ACTION =  "NEW_ORDER" ,
OPERATION =  "S" ,
PRICE = tostring(tekPrice),
QUANTITY = tostring(LotUp)
}

transaction.TRANS_ID  =   "12345" 
 sendTransaction (transaction)


 end 

 end 
  
Рынок сейчас работает,номер счета правильный и код класса тоже
Ошибка, attempt to compare two table values
 
C:\Users\KILLER\Desktop\robot_intelect\param.lua:25: attempt to compare nil with number

ошибку теперь такую выдает
Код
tekPrice=getParamEx(KodClass,InstrumentKod,"LAST").param_value
priceMax = getParamEx(KodClass,InstrumentKod,"PRICEMAX").param_value
priceMin= getParamEx(KodClass,InstrumentKod,"PRICEMIN").param_value
 -- tekMarzha= 





function trade()


if(tonumber(tekPrice)==nil or tonumber(priceMin) == nil or tonumber(priceMax)==nil)then

SetCell(TableID,2,4,"Не удалось получить цены с графика, нет соеденения с сервером!")
WriteToEndOfFile(LogFile,"Не удалось получить цены с графика, нет соеденения с сервером!")


end


if(tonumber(tekPrice) < tonumber(priceMin) )then    --  25 строка


transaction = {
ACCOUNT=TorShet,
CLIENT_CODE=KodClient,
TYPE="M",
TRANS_ID="7",
CLASSCODE=KodClass,
SECCODE=InstrumentKod,
ACTION="NEW_ORDER",
OPERATION="B",
PRICE=tostring(tekPrice),
QUANTITY=tostring(LotUp)
}

transaction.TRANS_ID = "12345"
sendTransaction(transaction)

elseif(tonumber(tekPrice) > tonumber(priceMax))then
transaction = {
ACCOUNT=TorShet,
CLIENT_CODE=KodClient,
TYPE="M",
TRANS_ID="8",
CLASSCODE=KodClass,
SECCODE=InstrumentKod,
ACTION="NEW_ORDER",
OPERATION="S",
PRICE=tostring(tekPrice),
QUANTITY=tostring(LotUp)
}

transaction.TRANS_ID = "12345"
sendTransaction(transaction)


end

end
Ошибка, attempt to compare two table values
 
Есть еще вопрос, существует ли параметр что бы считать минимум и максимум пред идущей свечи на графике
Ошибка, attempt to compare two table values
 
Может быть я не правильно сделал, мне нужно получить целое число в виде цены, а не таблицу, что бы его можно было использовать в конструкции if()then
Ошибка, attempt to compare two table values
 
Цитата
Nikolay Pavlov написал:
Добрый день.
Функция getParamEx() возвращает таблицу Lua. В диагностике об ошибке явно сказано, 'попробуйте сравнить два значения таблицы'. Т.е. Вам нужно сделать, например, так:
Код
  priceMax  =   getParamEx (KodClass,InstrumentKod,"PRICEMAX").param_value
priceMin =   getParamEx (KodClass,InstrumentKod,"PRICEMIN").param_value

 function   trade ()
   if (tekPrice  <  =  priceMin)  then     --20 строка error 
   .. .
  
Почитайте внимательно описание используемых Вами функций QLua в справке.



сделал так теперь выдает другую ошибку C:\Users\KILLER\Desktop\robot_intelect\param.lua:25: attempt to compare nil with number
Код
tekPrice=getParamEx(KodClass,InstrumentKod,"LAST").param_value
priceMax = getParamEx(KodClass,InstrumentKod,"PRICEMAX").param_value
priceMin= getParamEx(KodClass,InstrumentKod,"PRICEMIN").param_value
 -- tekMarzha= 





function trade()


if(tonumber(tekPrice)==nil or tonumber(priceMin) == nil or tonumber(priceMax))then

SetCell(TableID,2,4,"Не удалось получить цены с графика, нет соеденения с сервером!")
WriteToEndOfFile(LogFile,"Не удалось получить цены с графика, нет соеденения с сервером!")


end


if(tonumber(tekPrice) <= tonumber(priceMin) )then   --20 строка error


transaction = {
ACCOUNT=TorShet,
CLIENT_CODE=KodClient,
TYPE="M",
TRANS_ID="7",
CLASSCODE=KodClass,
SECCODE=InstrumentKod,
ACTION="NEW_ORDER",
OPERATION="B",
PRICE=tostring(tekPrice),
QUANTITY=tostring(LotUp)
}

transaction.TRANS_ID = "12345"
sendTransaction(transaction)

elseif(tonumber(tekPrice) >= tonumber(priceMax))then
transaction = {
ACCOUNT=TorShet,
CLIENT_CODE=KodClient,
TYPE="M",
TRANS_ID="8",
CLASSCODE=KodClass,
SECCODE=InstrumentKod,
ACTION="NEW_ORDER",
OPERATION="S",
PRICE=tostring(tekPrice),
QUANTITY=tostring(LotUp)
}

transaction.TRANS_ID = "12345"
sendTransaction(transaction)


end

end

Ошибка, attempt to compare two table values
 
Здравствуйте помогите исправить ошибку, я учу язык qlua и встал в тупик с этой ошибкой
Код
C:\Users\KILLER\Desktop\robot_intelect\param.lua:20: attempt to compare two table values  --Это ошибка в quik


Сам код 


tekPrice=getParamEx(KodClass,InstrumentKod,"LAST")
priceMax = getParamEx(KodClass,InstrumentKod,"PRICEMAX")
priceMin= getParamEx(KodClass,InstrumentKod,"PRICEMIN")
 -- tekMarzha= 





function trade()




if(tekPrice <= priceMin )then   --20 строка error


transaction = {
ACCOUNT=TorShet,
CLIENT_CODE=KodClient,
TYPE="M",
TRANS_ID="7",
CLASSCODE=KodClass,
SECCODE=InstrumentKod,
ACTION="NEW_ORDER",
OPERATION="B",
PRICE=tostring(tekPrice),
QUANTITY=tostring(LotUp)
}

transaction.TRANS_ID = "12345"
sendTransaction(transaction)

elseif(tekPrice >= priceMax)then
transaction = {
ACCOUNT=TorShet,
CLIENT_CODE=KodClient,
TYPE="M",
TRANS_ID="8",
CLASSCODE=KodClass,
SECCODE=InstrumentKod,
ACTION="NEW_ORDER",
OPERATION="S",
PRICE=tostring(tekPrice),
QUANTITY=tostring(LotUp)
}

transaction.TRANS_ID = "12345"
sendTransaction(transaction)


end

end
Страницы: 1
Наверх