ищу эффективную схему переворота позиции.
В общем, я хочу сделать переворот позиции.
Сейчас использую механизм просмотра цены по закрытию свечей
// Логика переворота при стопе
if (_lastPrice < stopPrice && rollovered == false)
{
_tab.CloseAtLimit(
position,
_lastPrice + Slippage.ValueInt * _tab.Securiti.PriceStep,
position.OpenVolume);
_tab.SellAtLimit(Volume.ValueDecimal, _lastPrice + Slippage.ValueInt * _tab.Securiti.PriceStep);
}
Но при этой конструкции я теряю живой стоп, который не дожидается закрытия свечи, как по событию closeatstop.
Если же я использую CloseAtstop, я не могу отследить, что стоп сработал, потому что роботу не докладывают.
Как в общем, понять, что тебя выбило по стопу? Может, где-то есть пример удачного переворота без ожидания закрытия свечек?
И ещё хочу привязать к выбивке стопа задержку типа "ничего не делать 10 свечей", так что вот такая задача.
Цитата: mrmvd
В общем, я хочу сделать переворот позиции.
Сейчас использую механизм просмотра цены по закрытию свечей
// Логика переворота при стопе
if (_lastPrice < stopPrice && rollovered == false)
{
_tab.CloseAtLimit(
position,
_lastPrice + Slippage.ValueInt * _tab.Securiti.PriceStep,
position.OpenVolume);
_tab.SellAtLimit(Volume.ValueDecimal, _lastPrice + Slippage.ValueInt * _tab.Securiti.PriceStep);
}Но при этой конструкции я теряю живой стоп, который не дожидается закрытия свечи, как по событию closeatstop.
Если же я использую CloseAtstop, я не могу отследить, что стоп сработал, потому что роботу не докладывают.
Как в общем, понять, что тебя выбило по стопу? Может, где-то есть пример удачного переворота без ожидания закрытия свечек?
И ещё хочу привязать к выбивке стопа задержку типа "ничего не делать 10 свечей", так что вот такая задача.
Нужно использовать методы CloseAtStop и SellAtStop.
События срабатывания стопа отдельно нет. Можно подписаться на событие закрытие позиции и проверить её состояние
Нужно использовать методы CloseAtStop и SellAtStop.
События срабатывания стопа отдельно нет. Можно подписаться на событие закрытие позиции и проверить её состояние
А есть где-то инструкция как подписаться на текущие цены инструмента и привязываться уже к ним?
Цитата: mrmvd
Нужно использовать методы CloseAtStop и SellAtStop.
События срабатывания стопа отдельно нет. Можно подписаться на событие закрытие позиции и проверить её состояние
А есть где-то инструкция как подписаться на текущие цены инструмента и привязываться уже к ним?
в примерах это есть. Там и на тиках роботы есть и на стаканах. Смотрите.
Да, разобрался, для тех, кому понадобится, проще привязываться к текущим ценам, для чего
надо подключать переменную с реальной ценой выражением вида:decimal trueprice = _tab.PriceCenterMarketDepth;
И от неё плясать.
Кстати, очень не хватает:
1) Параметра "держать ордер до конца бара" в Buy/Sellatlimit, как сделано в buyatstop.
2) Кнопки "перегрузить бота", которая есть, но у меня не работает.
Братюнь, подскажи, а где формируется lastTrade, цена последней сделки?
Я пытаюсь вытащить её из BotTabSimple, подключая как BotTabSimple.lastTrade, а мне пишет что
в BotTabSimple нет такой штуки как lastTrade.
А я чего это делаю - на _tab.PriceCenterMarketDepth;
не реагирует стоп, и не могу тени поймать по-человечески.
То есть он как бы реагирует, но сильно позже - через 1 или 2 свечи, а стопы привязаны к lastTrade и срабатывают мгновенно.
Цитата: mrmvd
Братюнь, подскажи, а где формируется lastTrade, цена последней сделки?
Я пытаюсь вытащить её из BotTabSimple, подключая как BotTabSimple.lastTrade, а мне пишет что
в BotTabSimple нет такой штуки как lastTrade.
А я чего это делаю - на_tab.PriceCenterMarketDepth;
не реагирует стоп, и не могу тени поймать по-человечески.
То есть он как бы реагирует, но сильно позже - через 1 или 2 свечи, а стопы привязаны к lastTrade и срабатывают мгновенно.
_tab.Trades[_tab.Trades.Count - 1].Price;
Цитата: mrmvd
В общем, я хочу сделать переворот позиции.
Сейчас использую механизм просмотра цены по закрытию свечей
// Логика переворота при стопе
if (_lastPrice < stopPrice && rollovered == false)
{
_tab.CloseAtLimit(
position,
_lastPrice + Slippage.ValueInt * _tab.Securiti.PriceStep,
position.OpenVolume);
_tab.SellAtLimit(Volume.ValueDecimal, _lastPrice + Slippage.ValueInt * _tab.Securiti.PriceStep);
}Но при этой конструкции я теряю живой стоп, который не дожидается закрытия свечи, как по событию closeatstop.
Если же я использую CloseAtstop, я не могу отследить, что стоп сработал, потому что роботу не докладывают.
Как в общем, понять, что тебя выбило по стопу? Может, где-то есть пример удачного переворота без ожидания закрытия свечек?
И ещё хочу привязать к выбивке стопа задержку типа "ничего не делать 10 свечей", так что вот такая задача.
Добрый день, столкнулся с такой же задачей после срабатывания стопа необходимо "отключить" логику бота на N свечей. Удалось сформировать рабочий код?
Всем привет, а это разве не они
_tab2.PositionBuyAtStopActivateEvent += _tab2_PositionBuyAtStopActivateEvent;
_tab2.PositionSellAtStopActivateEvent += _tab2_PositionSellAtStopActivateEvent;
Добрый день, столкнулся с такой же задачей после срабатывания стопа необходимо "отключить" логику бота на N свечей. Удалось сформировать рабочий код?
1) Да, удалось: вводим новую переменную "Quarantine"
2) В логике закрытия стоп-позиции отмечаем номер текущей свечи, Quarantine-candle
3) В логике открытия первой позиции делаем проверку "если номер текущей свечи минус Quarantine-Candle > Quarantine", то открываем позицию.
Код сейчас глянуть не могу - если не разберёшься, пиши, гляну потом.
Цитата: mrmvd
Добрый день, столкнулся с такой же задачей после срабатывания стопа необходимо "отключить" логику бота на N свечей. Удалось сформировать рабочий код?
1) Да, удалось: вводим новую переменную "Quarantine"
2) В логике закрытия стоп-позиции отмечаем номер текущей свечи, Quarantine-candle
3) В логике открытия первой позиции делаем проверку "если номер текущей свечи минус Quarantine-Candle > Quarantine", то открываем позицию.
Код сейчас глянуть не могу - если не разберёшься, пиши, гляну потом.
буду признателен -что то не разобрался
Вот таким образом я у себя сформировал условие выжидания после выбития стопа
if (stopped_long == true || stopped_short == true)
{
// Выжидаем
if (((candles.Count - 1) - candlecount - Quarantine.ValueDecimal) > 0)
где Quarantine - это переменная, которую ты задаёшь "сколько свечек выжидать после события"
stopped_long или stopped_short - это переменные, которые ты задаёшь в true когда тебя выбивает стоп, только потом не забывай сбросить их обратно в false.
Ну и где ставить это условие, сам придумывй
Спасибо, с этим все понятно. Как раз самый главный вопрос - куда поставить "stopped_long или stopped_short ". Так как отдельного события на стоп нет. Поставил пока в событие close ( у меня реверсивная логика). Работает вроде корректно. Но опасаюсь "подводного камня". Это немного "костыль" IMHO. Лучше бы конечно к событию стоп привязаться.
В любом случае спасибо. Ты дал мне правильное направление. Благодарю.
Цитата: Konstb
Так как отдельного события на стоп нет. Поставил пока в событие close ( у меня реверсивная логика). Работает вроде корректно. Но опасаюсь "подводного камня". Это немного "костыль" IMHO. Лучше бы конечно к событию стоп привязаться.
В любом случае спасибо. Ты дал мне правильное направление. Благодарю.
Я для себя нашёл что лучшее покамест - это условие: "если текущая цена < стопцены - крыть по маркетку и включать флаги".
Гонял тесты на "крыть по стопу" и "крыть по маркету" - разницу не заметил. Думаю, что если ликвидность позволяет, так почему бы не пользоваться маркетом?
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.