не получается. 0 0 иногда 1 0 потом числа. чисел в таблице нет. AddColumn(N,k, 0, "ххххххх", true, QTABLE_INT_TYPE, 15);--так нет колонок таблицы. SetCell(N, 0, хххххххххх); -- без пусто. переписал. эти варианты два .пусто.
Может за цикл вывести занесение данных.вниз или вверх?
Sergey Gorokhov написал: еще одно, в AddColumn у Вас указанно QTABLE_INT_TYPE т.е. предполагается что в колонках будут числа а не строки, Вы же передаете туда строки.
message("день-дата= "..os.date("%d.%m.%Y",os.time(t1[0].datetime))) это дата. как выглядит строка с часами, минутами,секундами.продолжение времени. в одной строке?новую? допустми свеча открывается .нужно узнать время свечи в значениях high, close ... .
function robot() local N1=getNumCandles("SBER_low") ................................................. ................................................. ............................................. шаговый цикл до значения проверка условия
InsertRow(N,k )-- любые буквы .не работает k = k+1 конец условия конец шагового цикла
----------- если внутри программы объявить таблицу,таблица с с пустыми строками с каждым циклом появляется новая. понятно нет подхвата занесения построчно в таблицу полученных значений. значения есть.месидж выводит.
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
я снял данные с мувинга =1. данные даты нужно снять. программа работает. и мне не нужно OHLC свечь выводить лишний раз. t1,n1,i1=getCandlesByIndex("MTLR_close", 0, N1-n_day, n_day)-- с мувинга. то есть может дата с мувинга не вызвониться?
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
вставляю редактированную программу таблицы в середину цикла if n_day <p_day then
t1,n1,i1=getCandlesByIndex("TATN_close", 0, N1-n_day, n_day)-- message("n_day = "..n_day) -- сюда.считает в середине без таблицы ,а снаружи таблицу выводит и останавливается. message("день-дата= "..????) end ...... function main() -- Создает таблицу CreateTable(); -- Основной цикл while sIsRun do -- Дата и время sDate=getInfoParam('TRADEDATE').." "..getInfoParam('SERVERTIME'); -- Перебираем компании: k -порядковый номер, v - название тикера for k,v in pairs(aTickerList) do -- Крайняя цена sBID=tonumber(getParamEx("TQBR", v, "LAST").param_value); -- Расчетное дно sDno=math.floor(((aTickerLow2008[k]*(sInflation+100))/100)*100)/100; -- Сколько до дна % sDistance=math.floor((100-((sDno*100)/sBID))*100)/100; -- Вставляем данные в табличку SetCell(t_id, k, 0, tostring(sDate)); SetCell(t_id, k, 1, tostring(aTickerName[k])); SetCell(t_id, k, 2, tostring(v)); SetCell(t_id, k, 3, tostring(sBID)); SetCell(t_id, k, 4, tostring(sDno)); SetCell(t_id, k, 5, tostring(sDistance)); -- Раскрашиваем желтым if sDistance<50 then Yellow(k); end; -- Раскрашиваем красным if sDistance>80 then Red(k); end; -- Раскрашиваем зеленым if sDistance<0 then Green(k); end;
end; -- Спим sleep(50000); end; end;
--- Функция создает таблицу function CreateTable() -- Получает доступный id для создания t_id = AllocTable(); -- Добавляет 6 колонок AddColumn(t_id, 0, "Дата", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 1, "Название", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 2, "Ticker", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 3, "BID", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 4, "Расчетное дно", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 5, "Сколько до дна (%)", true, QTABLE_INT_TYPE, 15); -- Создаем t = CreateWindow(t_id); -- Даем заголовок SetWindowCaption(t_id, "Компании"); -- Добавляет строку for k,v in pairs(aTickerList) do InsertRow(t_id, k); end end; --- Функции по раскраске ячеек таблицы function Red(col) for i=0, 5 do SetColor(t_id, col, i, RGB(255,168,164), RGB(0,0,0), RGB(255,168,164), RGB(0,0,0)); end; end; function Green(col) for i=0, 5 do SetColor(t_id, col, i, RGB(157,241,163), RGB(0,0,0), RGB(157,241,163), RGB(0,0,0)); end; end; function Yellow(col) for i=0, 5 do SetColor(t_id, col, i, RGB(249,247,172), RGB(0,0,0), RGB(249,247,172), RGB(0,0,0)); end; end;
Проблемы с получением значения индикаторов., При чтении значения графика (индикатора) считывается "0" Раньше это было редким случаем, а теперь это гораздо больше половины значений!!!
можно для роботов индикатор процент болинджера и ширина болинджера сделать?полоса расширяется и процент направления цены в болинджере получается. в инвестинг коме сайте.
стоп-заявку можно сделать подбором отступов следящей.хотелось бы подсвечивать как на зарубежных терминалах демо где расчитывается. просмотр трелингации
я поставил тейкпрофит выше цены в пределах диапазона с большими отступами к примеру 10% выше.там сработала и осталась расчитанной. на следующий день она так и будет пока не сработает? я уехал куда то и она сработает?
нашел в чём дело. депо лимитов нужно делить на лот. нужно написать глобальную переменную лотов. и куда её вставить? а поделить T["QUANTITY"] = tostring(math.abs(size/lot)) не удавалось. так как лоты были лимитами. вручную работает. lot=1000 .... lot = getParamEx("TQBR", "TICKER", "LOTSIZE").param_value+0 это не работает.здесь не в лотах а на лоты.
function GetBalance() for i = 0, getNumberOf("DEPO_LIMITS") - 1 do local depo_limit = getItem("DEPO_LIMITS", i) if depo_limit.sec_code == TICKER and depo_limit.trdaccid == ACCOUNT and depo_limit.limit_kind == LIMIT_KIND then return depo_limit.currentbal end end return 0 end function NewStopOrder(size) T = {} TRANS_ID = TRANS_ID + 1 T["TRANS_ID"] = tostring(TRANS_ID) T["ACTION"] = "NEW_STOP_ORDER" T["CLASSCODE"] = MARKET T["SECCODE"] = TICKER T["ACCOUNT"] = ACCOUNT T["CLIENT_CODE"] = CLIENT_CODE T = SetStopprice(T) if BALANCE > 0 then T["OPERATION"] = "S" else T["OPERATION"] = "B" end T["QUANTITY"] = tostring(math.abs(size))-- что интересно qty в лотах!-- на купайле здесь делил на лот. а луа ругается local trans_reply = SEND_TRANSACTION(30, T) if trans_reply ~= nil then if trans_reply.order_num ~= nil then return trans_reply.order_num else message(trans_reply.result_msg) return 0 end else return 0 end end
где уменьшить в стоп заявке на кол лотов . делю как в qpl языке не получается! везде делил! делил в подготовке транзакции. квик ругается. дробное число! где лоты 1 работает. хорошо. и если обмен с биржей по причине интернета или чего много стопов всегда и на купайле и на луа языках! устранимо?
function NewStopOrder(size) T = {} TRANS_ID = TRANS_ID + 1 T["TRANS_ID"] = tostring(TRANS_ID) T["ACTION"] = "NEW_STOP_ORDER" T["CLASSCODE"] = MARKET T["SECCODE"] = TICKER T["ACCOUNT"] = ACCOUNT T["CLIENT_CODE"] = CLIENT_CODE T = SetStopprice(T) if BALANCE > 0 then T["OPERATION"] = "S" else T["OPERATION"] = "B" end T["QUANTITY"] = tostring(math.abs(size))-- вот здесь теперь не работает. local trans_reply = SEND_TRANSACTION(30, T) if trans_reply ~= nil then if trans_reply.order_num ~= nil then return trans_reply.order_num else message(trans_reply.result_msg) return 0 end else return 0 end end
понятно дробное не получится. если это последнее место отправки транзакции то арка ответьте в чем дело.
поставил продать вечером. перед закрытием .хочу снять не могу. появление такой заявки алго упростило. спасибо. но как отменить. её не видно. ни в стопзаявках
а стоп заявки по позиции клиентов. допустим позиция вручную или другой стопзаявки обнулилась и стоп заявка не ставится .назовем её дополнительной или как?
программа на луа делает один цикл купить-продать, программу скачал с интернета. работает. или сам переделал. она купила или продала по индикатору и встала.
программа на луа делает один цикл купить-продать, программу скачал с интернета. работает. или сам переделал. она купила или продала по индикатору и встала.
по чему прибавить до 30 дней не получается. по программированию получается перебирать все числа и високосные годы.это нужно написать екалендарь а потом выбрать день в программе.вот это да! EXPIRY_DATE= "TODAY" '+29 '+5 "TODAY" ' "GTC" не ужели не написать?
T = SET_VALUE(T,"EXPIRY_DATE",EXPIRY_DATE)' купайл этого не вытерпет. посчитает .ладно.есть программы день высчитать отнять 29 и ...?
оповещение.несколько оповещений глючат квик и виндоуз!.изменить можете.облегчить глюк. глюка не должно быть.спасибо за снятие активных заявок в стоп таблице. после глюка робот навалил стопзаявок .нет ответа транзакции.и убыток многократно увеличивался когда то. биржа тормозит бывает
Нам нужны универсальные каналы сьема сигналов мацда .стохаса.и других.с названия вы разработчики где Данте с одного названия снять болид средней и верхней.как описать .только аверейдж .ну средние
Нашёл скрипты в папку индикатор.кельтнера допустим..треугольники есть продать и купить. Сигнал есть.подключился элементарные средние и названия нк жтся ы индикатор..нв треугольника стадо кдинить робот.а так был бы робот.останется дончтан переделать!
КБ роботу спасибо. Робот бодинджер есть. Модифицировать предадущее значение свечи и значение параллельное этому интервалу времени -соотыетственно сколько бадо значение индикатора..то есть надо больше меньше этих знач. Индикаторов. Получается имеем наклон направления болиндэера