N
Ninjadev
New Member
NinjaTrader
- #1
Пишу робота, который открывает 4 ордера одновременно в указанный момент времени, и вроде всё хорошо, но 2 сделки из 4 он не может открыть и не понимаю в чём ошибка.
2 разворотных ордера написанных по следующему принципу
Работают хорошо. Но мне нужно, чтобы если цена пошла по импульсу вниз мы и зашли на этом импульсе по рынку на продажу, соответственно, на покупку, но перепробовав все типы данных, так и не получилось добиться нужного результата. Либо ругался, что нельзя открыть ордер на продажу по цене ниже рыночной, либо ордера просто друг друга перекрывали. Вот весь код нужного фрагмента
Должно получиться на выходе следующее
2 разворотных ордера написанных по следующему принципу
Код:
double ByPrise = Close[0] - B;
SubmitOrderUnmanaged(1, OrderAction.Buy, OrderType.Limit, DefaultQuantity, ByPrise, ByPrise + Target,"", "Open Buy2 Position");
Код:
protected override void OnBarUpdate()
{
if (CurrentBar < 1)
return;
#region //Выставление ордеров
if (BarsInProgress == 1) {//+++
if (Times[1][0].ToString("H:mm:ss") == Time)
{
double ByPrise = Close[0] + A;
SubmitOrderUnmanaged(1, OrderAction.Buy, OrderType.MIT, DefaultQuantity, ByPrise, ByPrise + Target,"", "Open Buy Position");
Print ("Выставлен By ордер" + (ByPrise));
}
if (Times[1][0].ToString("H:mm:ss") == Time)//+++
{
double SellPrise = Close[0] - A;
SubmitOrderUnmanaged(1, OrderAction.Sell, OrderType.MIT,DefaultQuantity, SellPrise , SellPrise + Stop, "", "Open Sell Position");
Print ("Выставлен Sell ордер" + (SellPrise));
}
}
if (BarsInProgress == 1) {//+++
if (Times[1][0].ToString("H:mm:ss") == Time)//+++
{
double SellPrise = Close[0] + B;
SubmitOrderUnmanaged(1, OrderAction.Sell, OrderType.Limit, DefaultQuantity, SellPrise , SellPrise + Stop, "", "Open Sell2 Position");
Print ("Выставлен 2 Sell ордер" + (SellPrise));
}
if (Times[1][0].ToString("H:mm:ss") == Time)
{
double ByPrise = Close[0] - B;
SubmitOrderUnmanaged(1, OrderAction.Buy, OrderType.Limit, DefaultQuantity, ByPrise, ByPrise + Target,"", "Open Buy2 Position");
Print ("Выставлен 2 By ордер" + (ByPrise));
}
}
Должно получиться на выходе следующее