Помогите разобраться: почему не выставляется заявка на покупку?

Страницы: 1
RSS
Помогите разобраться: почему не выставляется заявка на покупку?
 
stopped = false
function OnStop()
stopped = true
return 5000
end

class_code = 'TQBR',
sec_code = 'BELU',
param_name = 'LAST',

Z = getParamEx ('TQBR', 'BELU', 'LAST').param_value

function main()

A = {
ACTION = 'NEW_ORDER',
ACCOUNT = 'L0000000000',
OPERATION = 'B',
CLASSCODE = 'TQBR',
SECCODE = 'BELU',
PRICE = tostring (Z - 20),
QUANTITY = tostring (1),
TRANS_ID = tostring (10000),
TYPE = 'L'
    }
Err_A = sendTransaction (A

end
 
враги стырили скобочку
Err_A = sendTransaction (A
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
враги стырили скобочку
В скрипте она есть.  
 
Здесь в сообщении просто не скопировалась.
Причем, если переменной Z присвоить конкретное значение - то работает. А через функцию  - нет
 
ну вот вы и ответили сами на свой вопрос.

getparamex не отдает вам то, на что вы рассчитываете

скорее всего этот параметр ваш терминал не получает от брокера. Добавьте его вручную в таблицу текущих торгов и терминал начнет его получать
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Аркадий написал:
Здесь в сообщении просто не скопировалась.
Причем, если переменной Z присвоить конкретное значение - то работает. А через функцию  - нет
возможно у вас неправильное число десятичных знаков в цене получается после вычитания
 
Цитата
s_mike@rambler.ru написал:
Добавьте его вручную в таблицу текущих торгов и терминал начнет его получать
А как это сделать? Извините, я еще только учусь)))
Открыл таблицу "текущие торги", нажал "редактировать". Посмотрел заголовки столбцов
В перечне есть в том числе и цена последней сделки.
Или я не правильно Вас понял?

отдельно вот эта команда - Z = getParamEx ('TQBR', 'BELU', 'LAST').param_value  работает. Т.е. терминал выводит сообщение о цене последней сделке
 
Аркадий, Скорее всего, дело в этой долбаной динамической типизации. Попробуйте Z=tonumber(getParamEx(....
 
Цитата
Владимир написал:
Аркадий, Скорее всего, дело в этой долбаной динамической типизации. Попробуйте Z=tonumber(getParamEx(....
Syntax error while compiling C:\LUA\Лимитный ордер B_BELU.lua: C:\LUA\Лимитный ордер B_BELU.lua:8: unexpected symbol near '='
 
class_code = 'TQBR',
sec_code = 'BELU',
param_name = 'LAST',

Z = tonumber(getParamEx (class_code, sec_code, param_name).param_value)

8- строка  sec_code = 'BELU',
 
Аркадий, Вот уж чего-чего. а Syntax error там точно быть не может.  :smile:  
 
Аркадий, Вот фрагмент моего кода:
a[i][2][0]=tonumber(getParamEx(a[i][0][0],a[i][0][1],"LAST").param_value);
Тыщу лет работает, как часы. Может, имена переменных как-то конфликтуют с зарезервированными...
 
Цитата
nikolz написал:
возможно у вас неправильное число десятичных знаков в цене получается после вычитания
Нет, там целые числа всегда получаются
 
Код
class_code = 'TQBR',
sec_code = 'BELU',
param_name = 'LAST',
После 7,8 и 9 строки поставьте ; а не ,  или совсем ничего не ставьте.
 
Цитата
Игорь Б написал:
После 7,8 и 9 строки поставьте ; или совсем ничего не ставьте.
Оба варианта сделал. Результат одинаковый - заявки нет.

В общем, еще раз  внимательно просмотрел скрипт, вот окончательный вариант:

stopped = false
function OnStop()
stopped = true
return 5000
end

class_code = 'TQBR'
sec_code = 'BELU'
param_name = 'LAST'

--price = 2400 вариант 1
--price = tonumber(getParamEx (class_code, sec_code, param_name).param_value) вариант 2
price = getParamEx (class_code, sec_code, param_name).param_value вариант 3

function main()

LimitOrderBuy = {
ACTION = 'NEW_ORDER',
ACCOUNT = 'L00000000',
OPERATION = 'B',
CLASSCODE = class_code,
SECCODE = sec_code,
PRICE = tostring (price - 20),
QUANTITY = tostring (1),
TRANS_ID = tostring (1000),
TYPE = 'L'
}
Err_A = sendTransaction (LimitOrderBuy)

end

Вариант 1 - работает всё четко, выставляется заявка по цене 2380

Вариант 2 и 3 - ведут себя одинаково. При нажатии кнопки "Запустить" скрипт вроде запускается (красный прямоугольник на мгновение превращается в зеленый треугольник, терминал никаких сообщений об ошибках не выдает) НО заявки при этом - нет.
Что еще надо сделать? Я не знаю.  
 
Хвостовой ноль после вычитания на смотрели?
 
Сегодня случилось чудо! Заработало как надо.
От души благодарю всех участников беседы за оказанную помощь!
Страницы: 1
Читают тему
Наверх