Доброго времени суток, возникла проблема с ошибкой "Цена сделки вне лимита". Ситуация следующая:
Написал скрипт на луа, скрипт работает таким образом образом - появляется сигнал на вход, скрипт открывает короткую или длинную позицию, далее работает блок трейлинг-стопа. Трейлинг работает внутри скрипта, без перевыставления заявки в квике. Как только цена достигнет уровня стоп-лосса посылается заявка на закрытие позиции, в таблице сообщений появляется запись о том, на сколько пунктов был убыток. После выхода из позиции по трейлинг-стопу сразу же открывается противоположная позиция, т.е. если закрылась длинная, то открывается короткая и наоборот. По сути происходит переворот позиции.
В ходе теста на реальном счете выяснилось что, блок входа в позицию работает отлично, трейлинг-стоп работает отлично, переворот работает отлично. Получается что работает все как и задумано, кроме одного. Во время вечернего клиринга (торгую на фортс), если открыта (ИМЕННО!!!) короткая позиция скрипт пытается выйти по трейлинг-стопу, и появляется ошибка "Цена сделки вне лимита". На сколько я понимаю, квик выдает какой-то параметр равным 0 или равным не пойми чему, т.к. в сообщении об убытке совершенно непомерные числа (скрин ниже). Код прилагаю, хотелось бы понять, какие значения обнуляются (или изменяются) в квике в момент вечернего клиринга. Бьюсь с проблемой уже долго, добавлял разные фильтры на предмет проверки параметров что они не 0. Вычислить не смог.
Часть кода выхода из позиции:
P.S. Тест веду на фьючерсе Si-12.16. В сообщении "убыток составил..." примерная цена вечернего клиринга.
Написал скрипт на луа, скрипт работает таким образом образом - появляется сигнал на вход, скрипт открывает короткую или длинную позицию, далее работает блок трейлинг-стопа. Трейлинг работает внутри скрипта, без перевыставления заявки в квике. Как только цена достигнет уровня стоп-лосса посылается заявка на закрытие позиции, в таблице сообщений появляется запись о том, на сколько пунктов был убыток. После выхода из позиции по трейлинг-стопу сразу же открывается противоположная позиция, т.е. если закрылась длинная, то открывается короткая и наоборот. По сути происходит переворот позиции.
В ходе теста на реальном счете выяснилось что, блок входа в позицию работает отлично, трейлинг-стоп работает отлично, переворот работает отлично. Получается что работает все как и задумано, кроме одного. Во время вечернего клиринга (торгую на фортс), если открыта (ИМЕННО!!!) короткая позиция скрипт пытается выйти по трейлинг-стопу, и появляется ошибка "Цена сделки вне лимита". На сколько я понимаю, квик выдает какой-то параметр равным 0 или равным не пойми чему, т.к. в сообщении об убытке совершенно непомерные числа (скрин ниже). Код прилагаю, хотелось бы понять, какие значения обнуляются (или изменяются) в квике в момент вечернего клиринга. Бьюсь с проблемой уже долго, добавлял разные фильтры на предмет проверки параметров что они не 0. Вычислить не смог.
Часть кода выхода из позиции:
Код |
---|
local last_price = getParamEx(classcode, seccode, "LAST").param_value -- Цена последней сделки из таблицы текущих параметров БЛОК ТРЕЙЛИНГ-СТОПА exit_price = price + stop_level_2000 + sl -- Цена выхода по стоп-лоссу (через трейлинг-стоп) if tonumber(last_price) >= tonumber(exit_price) and tonumber(last_price) ~= nil and tonumber(last_price) > z then -- ПРОБИТ УРОВЕНЬ СТОП-ЛОССА, последние 2 условия возможно не нужны, пытался отловить эту ошибку exit_price = exit_price + p -- Скорректированная (рыночная) цена, p = 200 Sl_and_tp_for_sell(exit_price, 9999) -- Выход из короткой позиции по стоп-лоссу, 9999 - id заявки message("Осуществлен выход по стоп-лоссу из короткой позиции. Убыток составил "..math.abs(price-(exit_price+p)).." пунктов.") stop_loss_sell = true -- Флаг выхода по стоп-лоссу из короткой позиции активен stop_loss_buy = false -- Флаг выхода по стоп-лоссу из длинной позиции снят sell_to_buy = false -- Флаг переворота позиции снят, т.е. далее будет переворот stop_level_2000 = 0 -- Сброс трейлинг-стопа end |
P.S. Тест веду на фьючерсе Si-12.16. В сообщении "убыток составил..." примерная цена вечернего клиринга.