Добрый день!
Похожая проблема:
Самописный индикатор работает в диаграмме бумаги и получает данные извне этой диаграммы (с индикаторов-графиков другой диаграммы, позицию по счету и т.п.), может что-то рисовать или нет. И все ОК.
Но если с той же диаграммы, где работает этот индикатор получает данные LUA скрипт (с Price или любого индикатора с присвоенным идентификатором), через некоторое время падает терминал.
Смоделирую ситуацию:
Вот для примера коды простенького индикатора и LUA скрипта которые конфликтуют между собой (как к сожалению и более интересные вещи...)
Если подключиться к серверу, открыть таблицу позиций по фьючерсам, добавить этот индикатор (можно и в отдельном окне диаграммы), ввести торговый счет,
Код |
---|
Settings={
Name = "текущая позиция",
client_code="SPBFUT*****",
line={
{
Name = "Лонг",
Type =TYPE_HISTOGRAM,
Width = 3,
Color = RGB(0,255, 0)
},
{
Name = "Шорт",
Type =TYPE_HISTOGRAM,
Width = 3,
Color = RGB(255,0,0)
},
{
Name = "0",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0)
}
}}
idx_prosl=0
function Init()
return 3
end
function get_balance(sec, client_code)
local n=getNumberOf("futures_client_holding")
for i=0,n-1 do
limit = getItem("futures_client_holding", i)
if limit~=nil and limit.seccode== sec and limit.trdaccid==client_code then
return limit.totalnet
end
end
return 0
end
function OnCalculate(idx)
if idx==1 then
sec=getDataSourceInfo().sec_code
message(" Код бумаги: "..sec,1)
end
if idx==idx_prosl then -- тек свеча
local balance=get_balance(sec, Settings.client_code)-- можно ограничиться и этим))
if balance>0 then
L,S,N=balance,nil,0
elseif balance<0 then
L,S,N=nil,balance,0
elseif balance==0 then
L,S,N=nil,nil,0
end
else
L,S,N=nil,nil,0
end
idx_prosl=idx
return L,S,N
end
|
в этой же диаграмме присвоить идентификатор "IDD" графику (Price например) и запустить следующий скрипт получающий с него данные, то
Код |
---|
t={}
ID="IDD"
function OnStop()
do_main=false
end
function main ()
do_main = true
while do_main do
--nc=getNumCandles(ID)
t,_,_ = getCandlesByIndex(ID,0,1,1)
sleep(1000)
end
end
|
Пока в таблице позиций по фьючерсам нет позиции по бумаге или "нуля" от ранее закрытой - все может работать нормально. Но если появится позиция - терминал через какое-то время падает.
Версия терминала 6.17.3.6 подключен к реалу.
Просьба к разработчикам помочь разобраться...