5% Down-In-One-Day Panic Recovery
Концепция, лежащая в основе этой стратегии, заключается в том, что иногда рынок паникует из-за некоторых новостей и на короткое время снижается курс акций. Через несколько часов люди оправляются от паники, понимают, что цена акций слишком низкая, и начинают покупать.
В конце каждого торгового дня эта стратегия получает дневной бар в обработчике события OnBar. Если позиция не открыта, стратегия использует сегодняшнюю цену закрытия для расчета новой лимитной цены, которая на 5% ниже сегодняшней цены закрытия, и выдает лимитный ордер на покупку, который будет исполнен при открытии рынка на следующий день.
Напротив, если позиция открыта в конце дня, это означает, что где-то сегодня произошел 5% -ный разрыв, и поэтому стратегия немедленно закрывает позицию с помощью рыночного ордера (который будет выполнен при открытии рынка на следующее утро).
Код
using OpenQuant.API;
public class MyStrategy : Strategy
{
[Parameter("Buy when a stock drops this number of percents in one day")]
double Percent = 5;
[Parameter("Order quantity (number of contracts to trade)")]
double Qty = 100;
Order buyOrder;
public override void OnBar(Bar bar)
{
// if we do not have a position, update the limit buy order to be 5% above today's close
if (!HasPosition)
{
// cancel the old limit order (it's out of date now)
if (buyOrder != null)
buyOrder.Cancel();
// issue a new buy order at 5% below today's close this order will execute tomorrow
// if price is matched
double buy_price = bar.Close * (1 - (Percent / 100));
buyOrder = BuyLimitOrder(Qty, buy_price, "Entry");
buyOrder.Send();
}
// else we opened a position today using our limit order from yesterday, so now close
// the position at the end of today. We expect that such a big drop was freaky, and that
// prices recovered during the day. If not, this order stops further losses.
else
Sell(Qty, "Exit");
}
}