Здравствуйте, вопрос в следующем, если торговать руками, то я могу закрыть позицию в любой удобный для меня момент, т.е. даже тогда когда тиков нет. а вот lua почему то так не может, бывает мне нужно закрыться на close свечи, и тупо с 57 до 01 секунды вообще нет тиков, соответственно закрытие происходит на другой свече, подскажите как закрываться тогда когда мне нужно и не быть зависимым от тиков?
Судя по всему Вы в алгоритме используете индекс, как факт прихода нового бара. А он увеличивается не по времени, а при совершении первой сделки в новом временном интервале. Поэтому новый бар может появится когда угодно, может даже не прийти вовсе, если сделок не будет.
Закрытие же бара - это цена последней сделки в временном интервале бара из таблицы обезличенных сделок. Можете отслеживать время сделки из ТОС, можете просто, при факте наступления нового интервала, принимать, что бар закрылся. Т.е. надо переходить на контроль времени, а не появления нового индекса бара.
Nikolay написал: Судя по всему Вы в алгоритме используете индекс, как факт прихода нового бара. А он увеличивается не по времени, а при совершении первой сделки в новом временном интервале. Поэтому новый бар может появится когда угодно, может даже не прийти вовсе, если сделок не будет.
Закрытие же бара - это цена последней сделки в временном интервале бара из таблицы обезличенных сделок. Можете отслеживать время сделки из ТОС, можете просто, при факте наступления нового интервала, принимать, что бар закрылся. Т.е. надо переходить на контроль времени, а не появления нового индекса бара.
о великий, прошу озарите меня как сие вообще реализовывается?
Что за бред? Закрыть позицию в любой удобный для меня момент можно ТОЛЬКО по рыночной цене. В любом другом случае нужно найти того идиота, который станет "соучастником" сделки, и вовсе не факт, что такой идиот найдётся. И при чём тут вообще свечи?
Владимир написал: Что за бред? Закрыть позицию в любой удобный для меня момент можно ТОЛЬКО по рыночной цене. В любом другом случае нужно найти того идиота, который станет "соучастником" сделки, и вовсе не факт, что такой идиот найдётся. И при чём тут вообще свечи?
не, типо мне норм по рыночной цене, главное закрыться в нужное для меня время, а то сейчас приходится ждать долбаного тика...
Sergey написал: не, типо мне норм по рыночной цене, главное закрыться в нужное для меня время, а то сейчас приходится ждать долбаного тика...
Торгуете изнутри индикатора? Тогда в лучшем случае добавить на график область с price от наиболее ликвидного инструмента того же класса, тогда и на Вашем инструменте во второй области добавятся тики от того инструмента (с ценой nil). Конечно, о привязке к таблице текущих торгов можно забыть тогда, т.к. она будет заменять все инструменты на графике. Торгуете из скрипта? Тогда цикл у Вас всё равно есть, внутри него проверяйте os.sysdate(), учитываете разницу во времени и м.б. пинг до сервера, если надеетесь на миллисекундную точность.
Sergey написал: Здравствуйте, вопрос в следующем, если торговать руками, то я могу закрыть позицию в любой удобный для меня момент, т.е. даже тогда когда тиков нет. а вот lua почему то так не может, бывает мне нужно закрыться на close свечи, и тупо с 57 до 01 секунды вообще нет тиков, соответственно закрытие происходит на другой свече, подскажите как закрываться тогда когда мне нужно и не быть зависимым от тиков?
1) колбек onРaram(). 2) таймер и синхронизацию ПК от сервера времени.
вроде как сделал такой код, теперь нужно интегрировать его в мой код ^_^
Код
local is_run = true -- переменная, контролирующая выполнение основного цикла
function main()
while is_run do
local current_time = os.date("*t") -- получаем текущее время как таблицу
-- проверка, превысили ли секунды значение 58
if current_time.sec > 58 then
message("Секунды превысили значение 58!")
end
sleep(1000) -- пауза в 1 секунду
end
end
function OnStop()
is_run = false
end
nikolz написал: 1) колбек onРaram().2) таймер и синхронизацию ПК от сервера времени.
если не трудно, приведите пожалуйста код пример, спасибо
Код
function main()
local time;
while is_run do
if time>58 then
message("Секунды превысили значение 58!")
end
sleep(100)
time=string.sub(getInfoParam("SERVERTIME"),-2);
end
end
function OnStop()
is_run = false
end
Когда истекает её таймфрейм. Лично я с незакрытыми свечами вообще не работаю, а анализирую их именно в момент закрытия.
Вы что-то уже сами себе противоречите, то утверждаете что на все эти секунды миллисекунды болт забили, то вдруг анализируете свечи в определенный момент.Я вот тоже на незакрытые свечи внимания особого не обращаю, но ловить моменты закрытия.. нахрен надо. Анализируем все кроме последней (они по определению уже закрытые) и не страдаем ерундой.
BlaZed, Не так в Вашей фразе то, что не надо ничего "долбить", нужно просто считать требуемое значение в нужный момент.
Я не противоречу себе ни в одной букве, на все эти секунды миллисекунды болт забил, и анализирую свечи в определенный момент. Для этого "ловить моменты закрытия" вовсе не нужно, это получается автоматически. И свечей у меня три штуки на таймфрейм: одна открытая и две закрытые. Анализируем тогда, когда свечной (10-секундный) обработчик получает управление и не страдаем ерундой.